找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

请问PDMA集散-ping-pang模式,一个数据帧卡到了尾部和头部

[复制链接]
跳转到指定楼层
楼主
匿名  发表于 2024-1-10 08:58:40 回帖奖励 |倒序浏览 |阅读模式
请问PDMA集散-ping-pang模式,一个数据帧卡到了尾部和头部,这种该怎么处理比较好一些?

比如一个数据帧100字节,缓存buff[300],会导致一个数据卡在 buff[250],buff[50]之间了。
这种有she
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具

沙发
chrishu 发表于 2024-1-10 16:22:50 | 只看该作者
本帖最后由 chrishu 于 2024-1-10 16:24 编辑

集散模式是按照表格设定的搬运个数搬运完后才算结束。比如设置搬运个数=300,实际一帧收到50个数据,此时对于PDMA来说本次传输并没有结束,那么下一帧来时就会从index=50的位置继续往后写。
如果你想接收到每帧都是从数组的0地址开始,可以收完一帧数据后重启PDMA。如果是这种应用没必要用集散模式,用基本模式就可以了。
回复 支持 反对

使用道具 举报

板凳
匿名  发表于 2024-1-10 16:28:02
chrishu 发表于 2024-1-10 16:22
集散模式是按照表格设定的搬运个数搬运完后才算结束。比如设置搬运个数=300,实际一帧收到50个数据,此时对 ...

是啊!所以 我就发现了这个问题了!
如果对方的设备是爆发性的发送,就无所谓中间丢数据了。
如果对方的数据,是一发,一回,并且响应指令,就涉及到了这个卡在一个数组的后部分和前部分的尾+首连接的问题了。
另外,您说重启PDMA,是单独的重启一个通道,还是重启整个PDMA0?
可以教教我吗?
回复 支持 反对

使用道具

地板
Angus 发表于 2024-1-11 17:17:08 | 只看该作者
游客 121.29.98.x 发表于 2024-1-10 16:28
是啊!所以 我就发现了这个问题了!
如果对方的设备是爆发性的发送,就无所谓中间丢数据了。
如果对方的 ...

连续收发很多数据时,用PDMA 省了CPU时间。

如果你的应用是一发一回、这种应答方式,或者收发速率不是太快,建议你直接用中断收发就可以,况且UART有16字节缓存,费不了CPU多少时间。

如果每收发一包后,会停顿一会,就用单次PDMA 模式,每次收发完一包数据,重新启动就可以了。

集散模式PDMA 适于UART 收发速率快,数据又比较多,CPU 处理数据时,已没时间再去处理数据收发的情况。

建议你选个简单的处理方式。
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU