再来请教 CAN :数据 会重发 一般是怎么引起的?

2020-01-01 17:56发布


如图

2019-09-26_183315.png (5.1 KB, 下载次数: 0) 下载附件 2019-9-26 18:34 上传

蓝 {MOD} 帧在前面已经发过了,结果又重新传了一次,DATA5是一个计数器,发一次加1

这样排除了软件中重新调用的可能;

===

发送方式用的是 自动重发

以下是发送函数
                MailBox =  CAN_Transmit(CANx, &CanToCanTxMsg[CanTxMsgOut].CanTransStruc);
                if(MailBox==CAN_TxStatus_NoMailBox)
                {
                        return;//break;
                }
       
                i = 0;
                while((CAN_TransmitStatus(CANx, MailBox)==CAN_TxStatus_Failed)&&(i<0XFFF)) i++;
                if(i >= 0XFFF)
                {
                        return;
                }

=====
想到一种可能性,不知道有多大
假设开始时在邮箱1中发送不成功,下次发送转到邮箱2中发送

过了一会儿 邮箱1又发送成功,这样2个邮箱都发送了才出现偶尔发送2次的情况
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
lnskngdc
1楼-- · 2020-01-01 22:47
发送不成功,好像会自动重发,看你这个测试截图应该是连续发的,帧间间隔时间很短吧?
isakura
2楼-- · 2020-01-02 02:42
lnskngdc 发表于 2019-9-26 18:49
发送不成功,好像会自动重发,看你这个测试截图应该是连续发的,帧间间隔时间很短吧? ...


正常的情况下我这里是100ms一包

40--00   00--40  这样子呢,是立即就发的
lnskngdc
3楼-- · 2020-01-02 07:01
你最好说下波特率,另一个设备是什么样的?

如果有CAN分析仪,可以用最大压力测试,如果是自己的设备,可能就会丢包
isakura
4楼-- · 2020-01-02 10:52
lnskngdc 发表于 2019-9-26 18:49
发送不成功,好像会自动重发,看你这个测试截图应该是连续发的,帧间间隔时间很短吧? ...

2019-09-26_185700.png (27.35 KB, 下载次数: 0)

下载附件

2019-9-26 18:57 上传



出错误 带时间 的 监测数据
isakura
5楼-- · 2020-01-02 14:18
 精彩回答 2  元偷偷看……
lnskngdc
6楼-- · 2020-01-02 17:18
isakura 发表于 2019-9-26 18:58
波特率 500K  设备 都是自己做的CAN板

自己做的板子,如果接收邮箱满了,你是怎么处理的?

还有很重要的一个问题,你用的是什么样的线?太细的线很影响通讯的

一周热门 更多>