打印
[技术问答]

用PDMA接收串口数据时有没有超时中断

[复制链接]
3317|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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超时功能

使用特权

评论回复
5
磨砂| | 2021-1-7 21:44 | 只看该作者
请问什么叫做pdma啊

使用特权

评论回复
6
晓伍| | 2021-1-7 21:47 | 只看该作者
说明没有进入正常中断时吗

使用特权

评论回复
7
八层楼| | 2021-1-7 21:51 | 只看该作者
别用数组 用数据链可以吗

使用特权

评论回复
8
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)

使用特权

评论回复
9
zhangyh89| | 2021-8-27 17:47 | 只看该作者
尝试过使用串口接收超时中断功能,但是发现,当串口接收设置PDMA后无法触发串口接收超时中断

使用特权

评论回复
10
aple0807| | 2021-8-28 11:39 | 只看该作者
zhangyh89 发表于 2021-8-27 17:47
尝试过使用串口接收超时中断功能,但是发现,当串口接收设置PDMA后无法触发串口接收超时中断 ...

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

549

主题

2378

帖子

4

粉丝