[技术问答] 用PDMA接收串口数据时有没有超时中断

[复制链接]
 楼主| powerantone 发表于 2020-12-10 11:31 | 显示全部楼层 |阅读模式

我有一个疑问,在设置PDMA接收串口数据的时候,要设置传输数据的长度计数,只有当计数为零,产生DMA传输完成中断。

但是在实际应用中,比如定义传输长度为40字节,但对方发过来的数据是70个,在接收到40个字节的时候产生一次中断,剩余下的30个字节不够产生DMA中断,这样接收方将一直得不到剩余的数据。

DMA有没有像串口接收超时中断那样,如果设置的时间过后,接收的数据量一直达不到40个时,会产生超时中断,以告知接收端, 对方已经发送完了。并且能得到实际接收到的字节数呢?
xuanhuanzi 发表于 2020-12-10 15:24 | 显示全部楼层
应该没这个功能吧
xuanhuanzi 发表于 2020-12-10 15:25 | 显示全部楼层
可以弄个计时函数,就是那个接收中断时候,或者发起传输时候,判断是否超时。
jasontu 发表于 2020-12-11 07:54 | 显示全部楼层
硬件有PDMA超时功能
磨砂 发表于 2021-1-7 21:44 | 显示全部楼层
请问什么叫做pdma啊
晓伍 发表于 2021-1-7 21:47 | 显示全部楼层
说明没有进入正常中断时吗
八层楼 发表于 2021-1-7 21:51 | 显示全部楼层
别用数组 用数据链可以吗
stormwind123 发表于 2021-7-6 16:38 | 显示全部楼层
新唐早期的pdma沒有time out功能,所以要用timer當作time out count.
現在最新的nuc121/nuc125有pdma time out的功能。
m4
Supports time-out function for each channel (M45xD/M45xC Only)
zhangyh89 发表于 2021-8-27 17:47 | 显示全部楼层
尝试过使用串口接收超时中断功能,但是发现,当串口接收设置PDMA后无法触发串口接收超时中断
aple0807 发表于 2021-8-28 11:39 | 显示全部楼层
zhangyh89 发表于 2021-8-27 17:47
尝试过使用串口接收超时中断功能,但是发现,当串口接收设置PDMA后无法触发串口接收超时中断 ...

新唐的串口超时要求RX fifo中至少有一个数据,开DMA会清空FIFO,不能触发。 可以在心跳定时器内检测PDMA数据指针是否变化。比如5ms内指针不变就视为报文结束。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

676

主题

3894

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部