单片机/MCU论坛
直播中

贾飞世

8年用户 1887经验值
私信 关注
[问答]

请问PDMA集散-ping-pang模式,一个数据帧卡到了尾部和头部,这种该怎么处理比较好一些?

请问PDMA集散-ping-pang模式,一个数据帧卡到了尾部和头部,这种该怎么处理比较好一些?

比如一个数据帧100字节,缓存buff[300],会导致一个数据卡在 buff[250],buff[50]之间了。
这种有she

回帖(2)

颜立歆

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

李秀兰

2024-1-16 17:23:29
对于PDMA集散-ping-pang模式,一个数据帧卡到了尾部和头部的情况,可以采取以下几种处理方法:

1. 增大缓存大小:如果可能的话,可以增大缓存的大小,以确保能够容纳一个完整的数据帧。在这种情况下,可以将缓存的大小增加到至少350字节,以确保能够容纳100字节的数据帧。

2. 重新设计数据缓冲区:如果无法增大缓存的大小,或者有其他限制,可以重新设计数据缓冲区的结构。例如,可以使用环形缓冲区来解决数据卡在缓冲区头部和尾部之间的问题。环形缓冲区可以循环利用缓冲区的空间,使得数据帧能够被正确存储。

3. 数据拆分和组合:如果数据帧卡在缓冲区的中间,可以将数据帧拆分为两部分,分别存储在缓冲区的两个部分。然后,在数据接收端,将两部分数据进行组合,以得到完整的数据帧。这种方法需要在数据帧的头部和尾部添加额外的标识符,以标识数据帧的起始和结束。

4. 错误处理和重传:如果以上方法无法解决问题,可以在数据接收端进行错误处理,并要求数据发送端重新发送数据帧。这可以通过在通信协议中定义一些错误检测和重传机制来实现。

综上所述,具体采取哪种处理方法取决于实际情况和系统的限制。在设计过程中,需要考虑数据帧的大小、缓存大小以及通信协议等因素,以选择最合适的处理方法。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分