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_ES [LEC]位的定义。
如数据表中所述、值0x0表示无错误、值0x7表示自上次读取以来无错误。 这两个值之间的区别是什么?
此致、
Brian
您好 Brian、
LEC 值为"0"表示没有错误、表示 未检测到填充、ACK、位和 CRC 错误。 然而、"7"表示在 CPU 上次读取错误和状态寄存器期间未检测到 CAN 总线事件。 对错误状态寄存器的任何读取访问都会将 LEC 重新初始化为"7"、因此"7"实际上并不表示没有错误。
此致、
Joseph
您好、Joseph、
还是有点困惑。 为了简单起见、在正常情况下、如果 MCU 读取 LEC 值、我们应该看到0还是7?
此致、
Brian
您好 Brian、
同意、这仍然令人困惑、因此我所做的是在我的设置中运行发送和接收事务、同时在 CCS 中监控 CAN_ES 寄存器。 在成功发送/接收消息后、LEC 将在 CCS 寄存器窗口中读为"0"、表示没有遇到错误。 如果添加一个代码来读取状态寄存器、如下所示:
temp = CanaRegs.CAN_ES.all;
LEC 将在 CCS 寄存器窗口中读为"7"。
这证明了 TRM 中 CAN_ES 的寄存器/位描述的状态。 希望这能澄清您的困惑。
此致、
Joseph