一、故障检测功能
CAN 收发器是 CAN 总线系统中的重要组件,用于实现数据在 CAN 总线上的传输,CAN 收发器除了收发数据,部分收发器还能提供故障检测功能,CAN 收发器的故障检测功能对于确保 CAN 总线系统的正常运行至关重要,它们可以及时发现和纠正总线上的错误,从而防止数据丢失和通信故障的发生。
常见的 CAN 收发器故障检测功能主要包括以下几个方面:
1.1、总线监测
CAN 收发器能够监测总线电平,并通过收发器回环到 RXD 来检测总线上的信号,这种机制有助于检测总线上的通信故障,如信号丢失或信号干扰。
1.2、错误检测机制
CAN 控制器可以通过收发器在接收和发送数据时执行错误检测,这包括位填充检查、帧格式检查、CRC 校验和 ACK 检查等,这些检查能够识别出总线上的错误类型,如位错误、填充错误、CRC 错误和 ACK 错误等。
1.3、错误计数机制
当CAN收发器检测到错误时,它会记录错误的数量。根据错误的数量和类型,CAN总线系统可以采取不同的措施来响应这些错误,如重新发送数据、降低通信速度或进入错误状态。
1.4、错误状态管理
CAN 收发器能够管理错误状态,并根据错误的严重程度和持续时间来采取相应的措施,例如,当错误计数达到一定的阈值时,CAN收发器可能会进入错误状态,并停止在总线上发送和接收数据。
二、本地故障检测功能
除了上面介绍的故障检测机制外,一些高级的 CAN 收发器还具有其他故障检测功能,如过热保护、欠压保护和过压保护等,这些功能可以保护CAN收发器免受损坏,并提高系统的可靠性和稳定性,如 NXP TJA1443 就可以检测四种不同的本地故障条件,其中任何一种都会设置本地故障标志,大多数情况下禁用发射器来保证安全。
2.1、TXD 显性超时故障
硬件上或者软件程序控制 TXD 保持在 LOW 的电平,这个故障将驱动总线线路进入永久显性,从而阻塞所有网络通信。NXP TJA1443 上的 TXD dominant time-out 功能可以防止这个阻塞状态,TJA1443 当 TXD 引脚为 LOW 时,启动 TXD 显性超时定时器,如果 TXD 引脚上的 LOW 状态持续时长超过 Tto(dom)TXD,发射机将被禁用,并且释放总线为隐性状态,接触总线上的阻塞状态。当 TXD 设置为 HIGH 时,TXD 主导超时定时器复位,清除本地故障标志,发射机解除禁用状态。
这个功能在硬件设计时需要注意的是,当主控默认电平是低电平,通过 GPIO 控制 CAN 收发器 STB,选用的 CAN 收发器 STB 为低电平使能。

在这种情况下,开发板一上电,默认低电平会使能 CAN 收发器,主控 TXD 电平低电平,CAN 收发器 TXD 显性超时定时器开始计时,超时后 RXD 释放,在总线上显示为错误帧,为了避免这种不可控情况,可以采用 TXD 硬件上上拉,避免触发 TXD dominant time-out 功能。
2.2、TXD 与 RXD 短路
引脚 RXD 和 TXD 之间的短路也会将总线锁定在永久的显性状态,从而阻塞所有网络通信,因为 RXD 的低侧驱动器通常是比连接到 TXD 的控制器的高端驱动器强,一旦它被驱动为显性,TXD-to-RXD 短路检测通过禁用发射机来防止这种网络锁定,发射机保持禁用状态,直到本地故障标志被清除。
2.3、总线显性故障
CAN 总线短路 (到 VBAT、VCC 或 GND) 或其他网络节点之一的故障,可能导致总线上的差分电压高到足以表示总线显性状态,因为当总线为显性状态时,节点不会开始传输,所以主控制器将无法检测到这种故障情况。然而,总线的优势位检测将检测短路,如果总线上的显性时间持续的时间长 Tto(dom)BUS 则设置本地失败标志,通过检查这个标志,控制器可以确定一个固定总线是否阻塞了网络通信,没有必要进入隐性状态将关闭发射机,当总线恢复状态时,本地失败标志就会重置。
2.4、超温警告
如果结温过高超过 Tj(sd),CAN 总线驱动被禁用,发射机将保持禁用状态,直到结温降到 Tj(sd) 以下,本地故障标志将被清除。
三、参考资料
《NXP TJA1443 DataSheet》
https://www.nxp.com/products/interfaces/can-transceivers/can-with-flexible-data-rate/automotive-can-fd-transceiver-family:TJA144x?linkline=Data%20Sheet&fpsp=1#documentation