IFX-RaymondDUAN 发表于 2024-2-26 16:14

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
附上参考代码。



IFX_Lingling 发表于 2024-2-27 09:27

这个点特别容易忽略呢~

laocuo1142 发表于 2024-2-27 10:18

的确,这个问题出的非常用心

OliviaSH 发表于 2024-2-28 18:28

这个没有空闲中断吗

IFX-RaymondDUAN 发表于 2024-3-21 19:31

XMC这款产品没有空闲中断

LOVEEVER 发表于 2024-3-27 15:28

DMA传输完成后,UART的数据传输还在进行当中,这个得需要程序进行判断进行串口临时关闭

jf101 发表于 2024-3-28 18:09

DMA传输确实还是比较容易忽略过程的

星辰大海不退缩 发表于 2024-3-29 14:24

楼主这个问题很实用经典

b5z1giu 发表于 2024-4-2 10:05

其实弄个定时器,做定时监测这个数据是否发完了,也是可以的吧

t1ngus4 发表于 2024-4-2 11:12

感觉没有空闲中断的话,就用与其通信的设备进行判断是否发完了,或者收完了呗

w2nme1ai7 发表于 2024-4-2 12:16

其实有空闲中断的话,确实会容易一些,哈哈

q1d0mnx 发表于 2024-4-2 13:21

用定时器吧,一般定时器检测到多久没数据了,就人为的认为发完了呗

kaif2n9j 发表于 2024-4-2 14:26

DMA就往里扔数据就行吧,还需要管是否发完吗?

p0gon9y 发表于 2024-4-2 15:30

可以不用DMA也行,就用阻塞式呗,也应该不会很慢吧

l1uyn9b 发表于 2024-4-3 06:22

串口发不发完应该有个寄存器能检测到吧

w2nme1ai7 发表于 2024-4-3 08:28

这英飞凌的MCU还有不支持空闲中断的呐

g0d5xs 发表于 2024-4-3 09:03

让对方给你个通讯结束指令呗,就可以了吧

liu96jp 发表于 2024-4-3 10:00

我觉得可以用协议的方式来弄,比如最后就发0D0A,检测到0D0A就证明完事儿了

Burnon_FAE_1 发表于 2024-4-9 09:53

没有空闲中断,要程序查询。这个问题确认容易忽略

小夏天的大西瓜 发表于 2024-4-22 21:43

XMC这款产品没有空闲中断,需要程序自动查询结果的
页: [1] 2
查看完整版本: XMC4300 UART DMA模式下如何判断数据发送完成