打印

请教香版关于STM32的DMA切换时间?

[复制链接]
4067|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cheungman|  楼主 | 2011-12-2 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
香版, 你好, 介绍一下问题背景, 如果用STM32做音频, 假如I2S的数据发送采用DMA方式, 因为没有DMA没有乒乓缓冲, 所以采用DMA_FIFOThreshold_HalfFull模式, 即缓冲区发送完一半就产生中断.

姑且我把DMA缓冲区A分成前一半A1和后一半A2, 当A1发送时, A2填充数据, 当A1发送完, A2已经填充完数据. 因为A1发送完, 此时响应DMA发送完一半中断, 切换到A2.

我的问题是, A1切换到A2时, 是不是由硬件完成的, CPU不用干预? 还有A1切换到A2时, 这个时间会是多少? 我想知道F1/F2/F4的这个时间值, 能保证小于0.86us吗?

希望香版能帮忙解惑, 谢谢!
沙发
香水城| | 2011-12-2 10:42 | 只看该作者
A1和A2的分区是你自己做的,对于DMA并不知道,所以硬件方面既没有切换的问题,更没有时间延迟的问题。

使用特权

评论回复
板凳
cheungman|  楼主 | 2011-12-2 10:50 | 只看该作者
循环模式 循环模式用于处理循环缓冲区和连续的数据传输(如ADC的扫描模式)。在DMA_CCRx寄存器中的CIRC位用于开启这一功能。当启动了循环模式,数据传输的数目变为0时,将会自动地被恢复成配置通道时设置的初值,DMA操作将会继续进行。

我找了中文手册看了一下,知道这个"自动地"需要多长时间, 不知道会小于0.86us吗? 想具体了解一下.

使用特权

评论回复
地板
香水城| | 2011-12-2 10:53 | 只看该作者
不需要时间。即DMA从传送第N个地址的数据至传送第1个地址的数据之间的时间间隔,与DMA传送第1个地址的数据至传送第2个地址的数据之间的时间间隔一样,以此类推。

使用特权

评论回复
5
cheungman|  楼主 | 2011-12-2 10:56 | 只看该作者
那么我明白了, 多谢香版帮忙!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

255

帖子

1

粉丝