华大136可以实现用UART+DMA自动接收不定的数据吗?有源码?
想要的效果就是外设之间自动接收处理,当接收完最后一个字节时,CPU去接收就行了。有没有大神实现过这种效果?有没参考源码? DMA circle模式,写FIFO,空闲中断判断接收完成,然后每次读写操作FIFO指针? 最关键的是需要硬件uart具有空闲中断功能
有的话就很简单,没有的话就整复杂了。。。 1a2b3c 发表于 2024-4-2 18:02
最关键的是需要硬件uart具有空闲中断功能
有的话就很简单,没有的话就整复杂了。。。 ...
(引用自3楼)
就是没有空闲中断 Joshua_Astray 发表于 2024-4-2 17:36
DMA circle模式,写FIFO,空闲中断判断接收完成,然后每次读写操作FIFO指针?
(引用自2楼)
FIFO也太复杂了 1a2b3c 发表于 2024-4-2 18:02
最关键的是需要硬件uart具有空闲中断功能
有的话就很简单,没有的话就整复杂了。。。 ...
(引用自3楼)
空闲中断也不是很靠谱,比如碰到两个字节间隔较长的情况。自己做个超时处理也不麻烦 akey3000 发表于 2024-4-2 18:37
空闲中断也不是很靠谱,比如碰到两个字节间隔较长的情况。自己做个超时处理也不麻烦 ...
(引用自6楼)
关键是自己做超时管理,串口接收没法关联到定时器。不知道是我的代码写得有问题。 akey3000 发表于 2024-4-2 18:37
空闲中断也不是很靠谱,比如碰到两个字节间隔较长的情况。自己做个超时处理也不麻烦 ...
(引用自6楼)
既然都知道乐空闲的定义,肯定就按照定义的来了,就不应该按你德实际数据帧有没有跑完
楼主如果都不能很好的处理简单的,换了其它的复杂方式实现肯定怕就更不易了哦 Landmark 发表于 2024-4-2 18:55
关键是自己做超时管理,串口接收没法关联到定时器。不知道是我的代码写得有问题。 ...
(引用自7楼)
恐怕对你或者你的方案不适合吧,
简单的来说,假如你的数据不是很频繁,比如一帧数据来了以后,下一针需要100ms以后了,而且你的美帧对你字节之间的间隔远远没有100ms那么大的间隔,那什你可以把定时器设置为110ms,每次定时中断后看下串口接收fifo的计数器有没有增加,没有增长那么就说明已经很常间隔没有收到数据了,就是所谓的空闲状态了
反之就不是
不好的:需要额外增加系统资源(定时器);增加系统调度资源(定是中断);响应不及时,等等 1a2b3c 发表于 2024-4-2 19:36
恐怕对你或者你的方案不适合吧,
简单的来说,假如你的数据不是很频繁,比如一帧数据来了以后,下一针需 ...
(引用自9楼)
谢谢您的回复,我从您的回复当中获取到想法了,对我这个问题应该有帮助{:lol:}
页:
[1]