16.8 CAN控制器操作

16.8.1 错误处理

CAN控制器根据CAN规范2.0B的规定计数和处理发送和接收错误。发送和接收错误计数器每当检测到错误时就会递增,而当操作无误时会递减。如果发送错误计数器的值为255时又有一个错误出现,那么CAN控制器就被强制进入一个称为总线关闭(Bus-off)的状态。在这个状态中,下列寄存器位被置位:CANxSR的BS位、CANxIR的BEI和EI位(如果它们使能),以及CANxMOD的RM位。RM复位能禁能CAN控制器。而且在这个时候,发送错误计数器被设置为127,接收错误计数器被清零。再次启动节点时必须软件清零RM位。然后,发送错误计数器递减计数128次证明是否在总线空闲条件下(11个连续的隐形位)。软件可通过读取Tx错误计数器来监控这个递减计数。当递减计数结束时,CAN控制器清零CANxSR的BS和ES位,置位CANxICR的EI位(如果IER的EIE位为1)。

有关CAN总线节点设计的更多细节,可以参考《CAN总线节点设计》一书,这本书详细讲解了如何优化节点设计以减少错误的发生。《快速读懂CAN bus节点的错误处理规则》中提供了更为深入的错误处理机制分析。若对控制器的具体操作感兴趣,《CAN总线控制器简介》将是一个很好的入门指南。

对于实际应用中的节点设计,如在温度测量节点上的应用,可以参考《基于CAN总线的温度测量节点设计》。此书不仅对温度测量节点进行了全面的描述,还对如何确保这些节点的可靠性进行了详细讨论。