MCAL CddUart驱动使用DMA通信的问题分析
-
软件版本:MD2 0.9.1
MC0 2.3.0
1、同步发送缺帧问题使用UART硬件进行串口通信,使用DMA,连续调用同步发送,发现同步发送不完全。


原因:
同步发送内部依然使用DMA进行发送(新版本使用轮询的方式,DMA只作用于异步通信),当DMA将数据搬入FIFO完成时,在软件层面上被认为搬移完成,但其实硬件还未来得及将FIFO中的数据发送到总线上。此时立即再次调用同步发送就会导致发送不完全的问题。
解决方案:
调用完同步发送后稍加延时,让硬件将FIFO数据发送完成后再进行新的发送请求。

2、UART IP使用DMA配置IDLE中断
存在BUG,当UART使用DMA进行通信时,IDLE如果触发,没有及时清理标志位,导致一直进入中断。
解决方案:
在触发IDLE中断时结束通信的同时及时清除标志位。

附上MCAL MD2 CddUart模块 DMA+IDLE中断参考DEMO
CddUart_Idle_Demo.zip
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...