DMA通信读取UART接收值的问题

2019-07-20 09:14发布

用DMA读取串口接收值(外设到内存,把UART->DR读取到自己定义的一个数组)时,设置DMA_InitStructure.DMA_BufferSize = 8是什么意思?网上很多人说这就代表读取8个字节的数据之后完成DMA,然后进入TC中断(TCIF已经置位)。但是大家都知道DMA读取寄存器的速度要远远大于串口通信的速度,那么这八次读取会不会出现因为串口太慢来不及更新DR而导致读取的八个值都一样的情况?还是说只有在串口的DR更新之后才会发送DMA请求继而把串口接收到的字节写入内存?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
xuande
1楼-- · 2019-07-20 09:27
 精彩回答 2  元偷偷看……
静水k深流
2楼-- · 2019-07-20 11:41
xuande 发表于 2016-4-4 16:04
后面的情况,
必须接收成功,再触发DMA。

您的意思是说只有当串口接收数据成功也就是说数据已经更新了才会触发DMA请求吗?
xuande
3楼-- · 2019-07-20 17:22
静水k深流 发表于 2016-4-4 16:06
您的意思是说只有当串口接收数据成功也就是说数据已经更新了才会触发DMA请求吗?


对,要设置成这样。


静水k深流
4楼-- · 2019-07-20 19:56
 精彩回答 2  元偷偷看……
静水k深流
5楼-- · 2019-07-21 00:20
 精彩回答 2  元偷偷看……
天耀中华
6楼-- · 2019-07-21 01:29
楼主,可以把代码分享一下吗?感谢您。这个从外设到内存的传输过程中,内存的地址到底是什么呢?是不是你定义的数组就作为内存的地址啊?我一直在疑惑这个问题,而且您的那个外设是从哪里接受到的数据啊?是不是另一个单片机啊

一周热门 更多>