XMC4300 UART DMA模式下如何判断数据发送完成
本帖最后由 IFX-RaymondDUAN 于 2024-3-12 13:54 编辑问题背景:客户在使用XMC4300的DMA模式进行UART数据传输时发现,在DMA传输完成后,UART的数据传输还在进行当中,希望能准确的判断UART的数据传输完成。
该问题的解决方法可以参考以下链接:
https://community.infineon.com/t5/%E7%9F%A5%E8%AF%86%E5%BA%93%E6%96%87%E7%AB%A0/XMC4300-UART-DMA%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E6%95%B0%E6%8D%AE%E5%8F%91%E9%80%81%E5%AE%8C%E6%88%90/ta-p/474984
附上参考代码。
这个点特别容易忽略呢~ 的确,这个问题出的非常用心 这个没有空闲中断吗 XMC这款产品没有空闲中断 DMA传输完成后,UART的数据传输还在进行当中,这个得需要程序进行判断进行串口临时关闭 DMA传输确实还是比较容易忽略过程的 楼主这个问题很实用经典 其实弄个定时器,做定时监测这个数据是否发完了,也是可以的吧 感觉没有空闲中断的话,就用与其通信的设备进行判断是否发完了,或者收完了呗 其实有空闲中断的话,确实会容易一些,哈哈 用定时器吧,一般定时器检测到多久没数据了,就人为的认为发完了呗 DMA就往里扔数据就行吧,还需要管是否发完吗? 可以不用DMA也行,就用阻塞式呗,也应该不会很慢吧 串口发不发完应该有个寄存器能检测到吧 这英飞凌的MCU还有不支持空闲中断的呐 让对方给你个通讯结束指令呗,就可以了吧 我觉得可以用协议的方式来弄,比如最后就发0D0A,检测到0D0A就证明完事儿了
没有空闲中断,要程序查询。这个问题确认容易忽略 XMC这款产品没有空闲中断,需要程序自动查询结果的
页:
[1]
2