71

帖子

0

TA的资源

一粒金砂(初级)

21
 
放心吧,驱动TLS3001吧?我做过的,没问题。用SPI+DMA.
可否把实现方法贴出来,给兄弟参考一下。
此帖出自stm32/stm8论坛
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

22
 
DMA搞不定这个应用
他的是单线的,相当于是只有一个D+的USB口
要求生成的信号是稳定的,DMA不能保证稳定,微观上的稳定
此帖出自stm32/stm8论坛
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

23
 
                                 我也不清楚是否能保证微观的稳定,手册上没有这个的介绍,以前我拿这个问题问过版主,他老人家也不是全知全能的。不过测试上看还是稳定的。我把DMA调到优先最高级。
此帖出自stm32/stm8论坛
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

24
 
                                 这个要看STM32里面的总线抢占时是如何仲裁了
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

25
 
                                 是啊,但查了些资料,没有关于此的详细说明。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

26
 
DMA搞不定这个应用
他的是单线的,相当于是只有一个D+的USB口
要求生成的信号是稳定的,DMA不能保证稳定,微观上的稳定
不错,如果你要求非常准确的时序,那么使用DMA对GPIO操作确实不能保证稳定输出。

对于这样的要求,我们是使用TIM的输出完成,根据输出时序事先计算出高低电平的时间,然后把计算出来的TIM数据存在RAM缓冲区,使用DMA不断更新TIM的定时参数。因为定时器的ARR和比较寄存器有影子寄存器,弥补了总线仲裁时间不易预估的不稳定因素,结果保证了稳定输出。我们的ST-LINK就是使用的这种方案。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

27
 
                                 版主啊,我是用SPI发的啊,不算对GPIO操作吧?SPI发数据也是有缓冲的。架构里有无规定在何等优先级的DMA操作最大延时是多少个周期呢?不过如果要用TIM的输出来做,我还不会呢。影子寄存器,作用和SPI的缓冲类似吧?
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

28
 
                                 换句话说,我只是想寻求一个办法,能提供不间断的SPI数据流,关键是不可中断。用最高优先级的DMA能保证么?如果不能,会是什么影响了,如何避免?比如不可屏蔽中断等等?
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

29
 
                                 版主啊,你是不是认为我在用DMA+GPIO来传输?而不是DMA+SPI?DMA+GPIO可能么?我看手册上的DMA外设立有GPIO,但那它的传输请求是什么啊?系统怎么确定多久改变一次GPIO.类似SPI收到数就传输一次,ADC采了样就传输一次。GPIO何时传输一次?
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

30
 
如果使用DMA向GPIO传输数据,则需要使用TIM定时地触发DMA。

你的要求不能使用DMA+SPI的方式,SPI每次传输8或16个位,虽然你能通过控制SPI的时钟频率控制这8(16)个位之间的时间间隔,但你不能控制每2次传输之间的间隔。

请考虑我说的使用TIM的PWM输出方案,与普通PWM输出的不同之处在于,你可能需要在每个周期都改变PWM的输出极性。
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

31
 


你的编码输出实际上就是一串频率固定的方波(50:50的PWM),只不过每个周期的输出极性不同,这正好对应STM32的PWM1和PWM2模式。

前面我还没有想到这个PWM1和PWM2模式的问题,现在想明白了,原来这么简单,自我得意一下,
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

32
 
                                 这么说DMA是不能保证不丢数的啦?我的每个请求有可能不被处理?就算是我把这个DMA通道调到最高优先级别?那DMA的用处不就大减了,甚至没啥用了,ADC采样可能丢数,SPI、UART接收可能丢数,那这还有啥用啊?
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

33
 
                                 至少应该是在保证能容忍多少个时钟周期延误的操作是不会丢失的。就像中断一样,中断太频繁就会丢失,但只要保证不超过某个频率就保证不会丢数。DMA实际就是一段并行硬件执行的程序,可以看作是和用户程序分时操作的另一个进程,要像版主的意思,DMA对任何频率的请求都有丢数的可能,那问题很大,后果很严重呢。
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

34
 
                                 墙裂妖球版主找老外把具体的参数拿来,最高级别的优先级能保证请求被响应在多少个时钟周期之内。做GPIO是不行,做SPI,ADC等带一定缓冲的还是应该可以的。关键是最大延误到底是多少个时间周期!!!!!
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

35
 
                                我并没有说使用DMA会丢数呀,也没有说不处理每个请求,不知道你是怎么得出这样结论的?
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

36
 
                                 26楼"弥补了总线仲裁时间不易预估的不稳定因素,",我现在就想知道,总线仲裁的最坏情况下多久时间可以分配给优先级最高的DMA请求,这个时间太长的话,DMA这个请求还没处理,下一个请求又来了,这不就丢数了么?
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

37
 
DMA本身不会丢数据
楼主是系统设计的工作没做好,就开始干活了,磨刀不误砍柴工啊

做系统设计时,要考虑到DMA的buffer用完后更新需要时间
比如,可以用dual buffer来做,A buffer发送的时候,填写B buffer不会耽搁事,DMA完成触发中断,切换buffer
然后你要评估,DMA完成触发中断,相应,切换buffer需要多少个CLK,等等
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

38
 
26楼"弥补了总线仲裁时间不易预估的不稳定因素,",我现在就想知道,总线仲裁的最坏情况下多久时间可以分配给优先级最高的DMA请求,这个时间太长的话,DMA这个请求还没处理,下一个请求又来了,这不就丢数了么? ...
z_no1 发表于 2010-12-7 09:20

关于每个DMA周期的具体时间,ST早有一篇应用笔记详细地给出了计算方法,不必“墙裂妖球”,找来看看就好。下面贴图是核心部分:

STM32_DMA_Latency.GIF (38.01 KB)

STM32_DMA_Latency.GIF

AN2548 - Using the STM32F101xx and STM32F103xx DMA controller.pdf (141.81 KB)

此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

39
 
                                 DMA一个数据块和DMA下一个数据块之间,用切换这个肯定考虑好了,现在的问题是我DMA一个20KB的数据块,这20KB的数据块通过SPI总线发出去,CLK是不是连续的。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

40
 
                                 知道了
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表