TI中文支持网
TI专业的中文技术问题搜集分享网站

280049 CAN 发送buff怎么清空

Other Parts Discussed in Thread:C2000WARE

在使用280049进行CAN bus off测试时遇到该类问题:

1、在CAN正常通讯过程中,外部短接CANH和CANL。仿真可看到寄存器CanaRegs.CAN_CTL.bit.Init 变为1。

2、断开外部CANH和CANL,软件手动清除CanaRegs.CAN_CTL.bit.Init = 0,回复CAN通讯。在清除CanaRegs.CAN_CTL.bit.Init = 0 时刻,通过示波器检测CANH或CANL,可看到总线有报文数据(此时我的CAN发送任务还未启动)。我认为是之前发送的数据,因为bus off的原因没有发送成功,存在CAN 发送buffer中。当软件清除CanaRegs.CAN_CTL.bit.Init时,自动发送buffer中的数据。我希望在清除CanaRegs.CAN_CTL.bit.Init时,不要有任何数据发出。等到我的回复工作准备好后,发送全新的数据。

问题,在清除CanaRegs.CAN_CTL.bit.Init之前,怎样清除先CAN发送buffer中的数据。

Green Deng:

感谢对TI产品的关注!为更加有效地解决你的问题,我需要询问更了解这个模块的TI资深工程师,再为你解答,一旦得到回复会立即回复给你。

,

Green Deng:

要禁用未成功发送消息的自动重传,可以将CAN_CTL寄存器的DAR位置1。可以从C2000Ware的driverlib中使用API​​ CAN_disableRetry()。
禁用自动重传也会在仲裁失败后禁用自动重传,请确保程序运行正常。

,

Aiden zhang:

谢谢您的答复。我不是想禁用自动重传,正常通讯过程,轻微的CAN总线故障传送失败通过自动重传是能恢复正常的。我只是想在CAN总线产生bus off 时,在恢复bus off时不要重传之前发送buffer内的数据。

,

Green Deng:

我可以想到的一种可能性是在检测到bus-off时禁用消息对象。假设消息尚未复制到发送缓冲区,将阻止自动发送。

赞(0)
未经允许不得转载:TI中文支持网 » 280049 CAN 发送buff怎么清空
分享到: 更多 (0)