完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现象描述:
在发送多帧报文数据时,出现了较为严重的报文丢失现象。编写测试程序,在for循环中循环发送id为0-7ff的报文,对返回值进行了判断。期待收到的报文id为连续的,且步长为1。但实际id并不连续,增加的步长并不是1(如附件 现象.jpg) 自我分析: 发送函数如附件 代码.jpg,发送方式为对32个msgbuf状态进行查询,状态ok再调用UpdataAndTransmitMsgBuffer()函数,由该函数的返回状态判断此次报文发送是否成功。但是由前面的现象(发出去的报文id不连续),明显看出UpdataAndTransmitMsgBuffer()返回了SUCCESS,但实际并未发送成功。 问题: 为什么UpdataAndTransmitMsgBuffer()函数返回了SUCCESS,填充已经成功,但是实际有大概率的未发送成功的情况(Can总线状态正常,两个节点)。 |
|
相关推荐
2个回答
|
|
可以尝试在发送代码里加一些延时,看看是不是接收的频率跟不上发送所导致的。
|
|
|
|
根据现象描述和自我分析,可能的原因和解决方法如下:
1. 帧发送速率过快:CAN FD的数据传输速率较高,如果发送速率过快可能会导致报文丢失。可以尝试通过增加发送延时或控制发送速率来解决。 2. 硬件限制:硬件设备可能存在发送缓冲区大小限制,当发送缓冲区已满时,可能会导致报文丢失。可以尝试增加硬件设备的发送缓冲区大小或使用更高性能的硬件设备。 3. 软件优化:检查发送程序的实现逻辑,确保在报文发送之前正确处理和更新发送缓冲区以及传输相关的状态。同时,确保错误处理机制能够正确处理发送失败的情况。 4. 总线负载过重:如果总线上存在大量的报文传输,可能会导致发送冲突和丢失。可以尝试优化总线负载或调整报文发送顺序以减少冲突。 5. 确保报文发送函数正确返回成功状态:确认报文发送函数UpdataAndTransmitMsgBuffer()的返回状态的定义和实现是否正确。可以根据返回状态进一步判断发送是否成功。 6. 可能存在其他硬件或软件相关问题:例如电缆连接质量、驱动程序或操作系统相关问题等。可以检查和排除这些问题。 建议逐步排查和调试,可以先确认发送速率和总线负载是否合适,检查报文发送函数的实现和返回值的准确性,以及硬件相关问题。如果问题依然存在,可以考虑使用相关调试工具或咨询供应商进行进一步的支持。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
693 浏览 0 评论
483 浏览 0 评论
嵌入式学习-搭建自己的ubuntu系统之ubuntu网络设置
598 浏览 0 评论
龙芯中科胡伟武:3B6600 八核桌面 CPU 性能将达到英特尔中高端酷睿 12~13 代水平
665 浏览 0 评论
树莓派Pico 2发布,搭载RP2350双核RISC-V和Arm Cortex-M33微控制器!
618 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10712 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-17 05:02 , Processed in 0.459966 second(s), Total 44, Slave 38 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号