打印
[STM32F1]

关于stm32f103串口的DMA发送

[复制链接]
1252|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kingtut2008|  楼主 | 2014-5-14 15:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,stm32的串口DMA发送,看了手册DMA有两种方式,但我理想的需求是,缓冲区有数据后,自动发送,发完后停止,填充数据后再次自动发送。可目前使用的常规模式,每次缓冲区数据发送完DMA就停了,再次填充缓冲区后需要把DMA disable,再enable。想问下有没有那种,一往缓冲区写数据就发送,就像给LCD映射一块内存后,只要操作内存就可以。
沙发
icecut| | 2014-5-14 17:16 | 只看该作者
你要这么想,你写内存,会触发dma,这件事硬件怎么实现???

软件准备数据,启动dma,dma传输完成,中断,如有数据,重启传输...如无数据,停止.释放dma
以此循环....

至于lcd是定时刷新,如果这样发送,你会收到很多重复数据,而lcd是不在乎这种数据的.

使用特权

评论回复
板凳
diweo| | 2014-5-14 18:16 | 只看该作者
写入USAR_DR就会发送数据,是因为它是固定的那么个寄存器,可以有专门的附加电路来监测是否有对它的写操作。DMA的缓冲区是内存中的任意区域,硬件该怎么监测?
再说,Disable再Enable又不麻烦,必要时还可以结合中断。

使用特权

评论回复
地板
kingtut2008|  楼主 | 2014-5-14 22:03 | 只看该作者
二位说得有理。
我该再深入思考下的。
想不到回复这么快,:lol

使用特权

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

本版积分规则

2

主题

14

帖子

0

粉丝