2019-10-15 02:21发布
1253171658 发表于 2017-2-16 08:25 DMA会自己按照串口的速度发送,也就是到时间就去发送一次,怎么会覆盖呢?我一个DMA控制串口1234接收和发 ...
cheyj520 发表于 2017-2-16 08:21 我的意思是从DMA到串口,怎么确定不覆盖串口发送的数据,因为串口发送的速度肯定比不了DMA传输的速度
cheyj520 发表于 2017-2-16 09:17 我又看了参考手册串口那部分关于利用DMA发送的介绍,”在每个TXE事件后,将从此存储器区读出数据并传送到 ...
最多设置5个标签!
我又看了参考手册串口那部分关于利用DMA发送的介绍,”在每个TXE事件后,将从此存储器区读出数据并传送到USART_DR寄存器“
还有讲DMA那章,“在发生一个事件后,外设向DMA控制器发送一个请求信号。 DMA控制器根据通道的优先权处理请求。当DMA控制器开始访问发出请求的外设时, DMA控制器立即发送给它一个应答信号。当从DMA控制器得到应答信号时,外设立即释放它的请求。一旦外设释放了这个请求, DMA控制器同时撤销应答信号。如果有更多的请求时,外设可以启动下一个周期”
这样应该可以解释的通了
定义一个缓存,有数据就往里面写。等到DMA空闲的时候(也就是上一次DMA缓存数据发送完成的时候,并且判断写数据缓存确定有数据),把写数据缓存里的数据复制到,DMA发送缓存,最后使能就可以了
DMA会自己按照串口的速度发送,也就是到时间就去发送一次,怎么会覆盖呢?我一个DMA控制串口1234接收和发送,和4路ADC采集都没问题
是啊,就是这样的啊,正因为外设是很慢的设备
一周热门 更多>