完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问PDMA集散-ping-pang模式,一个数据帧卡到了尾部和头部,这种该怎么处理比较好一些?
比如一个数据帧100字节,缓存buff[300],会导致一个数据卡在 buff[250],buff[50]之间了。 这种有she |
|
相关推荐
2个回答
|
|
集散模式是按照表格设定的搬运个数搬运完后才算结束。比如设置搬运个数=300,实际一帧收到50个数据,此时对于PDMA来说本次传输并没有结束,那么下一帧来时就会从index=50的位置继续往后写。
如果你想接收到每帧都是从数组的0地址开始,可以收完一帧数据后重启PDMA。如果是这种应用没必要用集散模式,用基本模式就可以了。 |
|
|
|
对于PDMA集散-ping-pang模式,一个数据帧卡到了尾部和头部的情况,可以采取以下几种处理方法:
1. 增大缓存大小:如果可能的话,可以增大缓存的大小,以确保能够容纳一个完整的数据帧。在这种情况下,可以将缓存的大小增加到至少350字节,以确保能够容纳100字节的数据帧。 2. 重新设计数据缓冲区:如果无法增大缓存的大小,或者有其他限制,可以重新设计数据缓冲区的结构。例如,可以使用环形缓冲区来解决数据卡在缓冲区头部和尾部之间的问题。环形缓冲区可以循环利用缓冲区的空间,使得数据帧能够被正确存储。 3. 数据拆分和组合:如果数据帧卡在缓冲区的中间,可以将数据帧拆分为两部分,分别存储在缓冲区的两个部分。然后,在数据接收端,将两部分数据进行组合,以得到完整的数据帧。这种方法需要在数据帧的头部和尾部添加额外的标识符,以标识数据帧的起始和结束。 4. 错误处理和重传:如果以上方法无法解决问题,可以在数据接收端进行错误处理,并要求数据发送端重新发送数据帧。这可以通过在通信协议中定义一些错误检测和重传机制来实现。 综上所述,具体采取哪种处理方法取决于实际情况和系统的限制。在设计过程中,需要考虑数据帧的大小、缓存大小以及通信协议等因素,以选择最合适的处理方法。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:33 , Processed in 0.639511 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号