1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
CAN发送与接收的丢包问题 使用CAN分析仪进行发送 1ms间隔发送一帧标准帧 问题1:为什么基本接收不到?是硬件问题,还是搭载操作系统导致的? 使用CAN分析仪进行接收 单片机1ms间隔发送一帧标准帧 但是发送频率并不是1ms一次。而是3ms发送3次。 试了下无间隔发送,变成3ms发送十几次左右。也是无丢包 void can_send_test(void) MSH_CMD_EXPORT(can_send_test, can send test); 问题2:为什么发送会隔几秒发送多次?是不是fifo导致的? 使用CANOEPN协议进行收发,使用canfestival软件包 .单片机与电机通信,有收发 通信内容 总线负载 问题3:为什么canfestival发送会丢包,裸机不会?为什么单独发送不会,收发就会? 是不是canfestival线程处理不够快导致的 将can的自动重发功能打开 问题4:打开自动重发会有什么影响?会不会造成can通信延迟? 希望各位大佬可以解答一下我得到困惑。 刚用canopen,can之前也是使用标准can通信一下。对底层也不是很了解 |
|
相关推荐
7个回答
|
|
没有使用过rtt的can驱动框架,之前项目使用到can通讯。使用esp32和stm32f407通讯,没有使用canopen,自己定义的通讯协议,主要发送json字符串数据,一个json字符串会发送多次can帧。 stm32f1 f4系列can只有3个发送和接收fifo,esp32快速发送can包时,stm32如果没有来得及取,fifo很容易就满了。 我当时的情况是,即使把can中断优先级调为最高,在中断中马上通过消息队列缓存起来,依然会产生大量丢包,can通讯速率从1M降到20kp还是一样。 最开始的解决办法是,发送3帧就延时5ms,太浪费效率了。 后来根据can协议发送成功是有ack标志位的,然后就是每次发送一条can消息就判断标志位是否接收成功,接收成功继续发送下一帧,超时就发送错误。 自动重发文档介绍的就很详细了,在我的项目中自动重发反而会导致一些问题还要占一个发送fifo,我就把它关了 |
|
|
|
那么问题1的答案就是分析仪发太快了,STM32接收FIFO处理不过来了。是硬件不够快。
问题2也是因为fifo的问题。发送太快了,只能先存到缓存内,然后等上一次发送完成在发送。所以会发几次延时几ms 问题四的话,其实有canopen发送丢包也是可以纠错的。 不知道有了canoepn的话,还需不需要自动重发。开更好还是不开好 |
|
|
|
问题一stm32其实很快,通过判断标志位,can的实际传输速度也是很快的,20多个can帧不到1ms,没有深度测试过,看的打印log的时间信息
问题二不确定,stm32发送can帧时,确实是往发送fifo添加报文,我的项目中发送fifo没有占满过,因为esp32有64个接收fifo。 软件层面如果做了丢包处理,就不需要开启硬件自动重发吧,除非canopen支持stm32的自动重发功能 |
|
|
|
问题1可能是我用了操作系统的原因,处理就肯定没有裸机快了。
问题2其实不怎么重要,实际上也不需要这么快的发送速率。 canopen支不支持自动重发不知道,但是开了自动重发,通讯是正常的,延迟不知道怎么样。 canopen丢包过多,是会关闭can通讯的, |
|
|
|
关于问题2:我有了答案了。。。。 是分析仪的问题。换了一个贵的分析仪就好了。 使用RTT操作系统,标准CAN,1M波特率,无间隔发送100次,无接收。 如图所示。左边是便宜的,右边是贵的 测试发现,便宜的分析仪,测试ms级的发送都有误差。贵的可以测试100us级。 结论:一分钱一分货。 标准CAN最短发送间隔应该是128us,一个CAN帧有128bit,1M波特率刚好128us一帧 |
|
|
|
问题3的答案
丢包的原因 准确来说是撞包。由于两个不同节点同时发送CAN数据,由于优先级仲裁,导致低优先级的帧没有发送出去,硬件判断进入SCE中断后,转入发送失败事件处理。发送失败事件处理中判断为丢包,把计数加一 裸机发送不会是总线上没有同时两个节点都发送数据。或者是MCU发送的帧ID大于分析仪发送的。或者是速率不够快,造成撞包的几率减少 |
|
|
|
问题4
打开自动重发后,如果判断发送失败,会重复发送当前数据,直到发送成功。 一个会造成后面的数据会延迟发送。 另一个万一总线通信不良,比如短路、断路。会导致一直发送当前数据。如果没有做相应处理。另一个发送出错会进入SCE中断,自动重发下,没有发送出去会循环进入SCE中断的过程。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
489 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1823 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1142 浏览 0 评论
1620 浏览 0 评论
1424 浏览 0 评论
74719 浏览 21 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 10:33 , Processed in 0.610723 second(s), Total 53, Slave 45 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号