我最近在调试一个CAN 接收稳定性的问题,DSP 软件起来后,CAN 收发正常,然后我尝试拔掉CAN 连接线,再连接CAN 设备,在经历了连续几次的插拔-连接之后,CANES 会有这两个BIT 位CCE 和 ACKE置上,随之CAN 收发彻底停摆了:


其中ACKE 是不是跟硬件连接线有关系?CCE 啥情况会被置上呢?
PS : 有时候SMA ,SE 错误也会置上,这两个位应该不会导致CAN 收发彻底停摆;
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我最近在调试一个CAN 接收稳定性的问题,DSP 软件起来后,CAN 收发正常,然后我尝试拔掉CAN 连接线,再连接CAN 设备,在经历了连续几次的插拔-连接之后,CANES 会有这两个BIT 位CCE 和 ACKE置上,随之CAN 收发彻底停摆了:


其中ACKE 是不是跟硬件连接线有关系?CCE 啥情况会被置上呢?
PS : 有时候SMA ,SE 错误也会置上,这两个位应该不会导致CAN 收发彻底停摆;
为啥ACKE 出现了,传输还是正常的?
SMA 错误应该是我点击仿真器暂停,导致传输挂起了,所以是正常的;
您好,
ACKE 是不是跟硬件连接线有关系?
ACKE 与 硬件连接线无关。 当网络上没有其它节点发送 ACK 信号时,ACKE 就会发生。
CCE 啥情况会被置上呢?
CCE 将在两种情况下被置上:
在这两种情况下,传输/接收都不会发生。
有时候SMA ,SE 错误也会置上,这两个位应该不会导致CAN 收发彻底停摆;
SMA 不会。 SE 表示发生了填充错误。
你说的总线关闭状态,是指CAN 线拔掉吗?
我现在的问题是在硬件受到干扰时,CAN 连接会彻底失效,然后即便去除外部干扰,CAN 连接也无法恢复正常状态;
你说的总线关闭状态,是指CAN 线拔掉吗?
不,当 TEC 或 REC 为≥255时,总线关闭是一个条件。 当通信期间出现大量错误时,将发生 BO。 请注意,断开 CAN 线路可能会导致 BO。
我现在的问题是在硬件受到干扰时,CAN 连接会彻底失效,然后即便去除外部干扰,CAN 连接也无法恢复正常状态;
节点可能处于 BO 状态。 如果是,它将不会参与通信。 如果 ABO=1,则节点可以自动从 BO 退出(前提是没有更多错误)。 如果 ABO = 0,节点将保持在 BO 中。 这可能是目前的情况。
我目前是JTAG 插上进行调试的, 我拔掉CAN 盒,SE 错误会出来;
另外关于CCE 置位,我还是没搞清楚,我CAN 连接正常的情况下拔掉CAN 盒,后面就出现这个错误了,所以我理解肯定不是第一种情况,那就是这个情况, "当 CCR 位在总线关闭状态下由 CAN 模块置位时"?
如果出现这个错误? InitCan 操作需要重做一次吗?
这个时候需要把BTC 重新来一次,然后等CCE 清除吗? 难不成CAN 模块哪部分又坏掉了,需要重新初始化?
ECanaShadow.CANBTC.all = 0;
// Refer to CH 16.7.1.3 of TRM
ECanaShadow.CANBTC.bit.BRPREG = 5;
ECanaShadow.CANBTC.bit.TSEG2REG = 2;
ECanaShadow.CANBTC.bit.TSEG1REG = 10;
ECanaShadow.CANBTC.bit.SAM = 1;
ECanaRegs.CANBTC.all = ECanaShadow.CANBTC.all;
但我看这个寄存器值都没变啊?
看到您这边在英文论坛跟进了,那我们这边会将该贴先关闭,如果您还需要其他技术支持可以随时reopen该帖子。