当前位置:首页 > 嵌入式 > 嵌入式分享

异步通信因无全局时钟、依赖帧结构同步,易受电磁干扰、总线衰减、节点故障导致数据错误。CAN 总线通过 “多层级错误检测”、“错误计数器与状态机”、“总线离线隔离” 三大机制,构建了高可靠的容错体系,确保即使在恶劣环境中,仍能维持通信稳定,避免故障节点扩散错误。

(一)多层级错误检测:覆盖通信全流程

CAN 总线定义了五种核心错误类型,通过硬件级检测机制,覆盖从位传输到帧结束的全流程,确保错误能被快速识别:

位错误(Bit Error):发送方发送一位数据后,在采样点检测到总线电平与自身发送电平不一致(ACK 槽除外),判定为位错误。例如,发送方发送显性位,却检测到总线为隐性位,可能是总线短路或其他节点干扰导致。

填充错误(Stuff Error):CAN 协议规定 “连续 5 个相同位后必须插入 1 个相反位(位填充)”,接收方若检测到连续 6 个相同位且非帧结束,判定为填充错误。填充错误通常源于发送方位填充逻辑故障或总线信号干扰导致的位丢失。

CRC 错误(CRC Error):接收方计算的 CRC 值与发送方的 CRC 场不一致,判定为 CRC 错误。CRC 错误是数据传输错误的直接体现,可能由电磁干扰导致的数据位翻转引起。

ACK 错误(Acknowledgment Error):发送方在 ACK 槽发送隐性位后,未检测到总线的显性位(无节点确认接收),判定为 ACK 错误。ACK 错误说明无节点正确接收帧,可能是总线断路或所有接收节点故障。

帧格式错误(Form Error):接收方检测到帧结构中的固定字段(如 CRC 界定符、ACK 界定符、帧结束)应为隐性位却出现显性位,判定为帧格式错误。帧格式错误通常源于发送方帧结构构建错误或总线严重干扰。

这些错误检测均由 CAN 控制器硬件实时执行,无需 MCU 干预,检测延迟仅为 1~2 TQ,确保错误能在帧传输过程中被快速识别,避免错误数据被处理。

(二)错误计数器与状态机:动态调整节点行为

CAN 控制器内置 “发送错误计数器(TEC)” 与 “接收错误计数器(REC)”,通过计数器数值动态调整节点的错误状态,实现 “分级容错”—— 根据错误严重程度,节点分为 “错误主动(Error Active)”、“错误被动(Error Passive)”、“总线离线(Bus-Off)” 三种状态,避免故障节点持续干扰总线:

错误主动状态(默认状态):TEC96 REC96,节点具备完整的发送与错误处理能力。检测到错误时,节点发送 “主动错误帧”(6 个显性位 + 8 个隐性位),通知所有节点存在错误,并根据错误类型更新计数器(如位错误 TEC+8REC+8);发送成功时,TEC-1(最低为 0),接收成功时,REC-1(最低为 0)。

错误被动状态:TEC>96 REC>96,节点因错误较多,限制发送能力以减少干扰。检测到错误时,节点发送 “被动错误帧”(6 个隐性位 + 8 个隐性位),不主动触发总线显性位;发送数据时,需等待总线空闲 11 个隐性位后才能发送,避免与其他节点冲突;当 TEC96 REC96 时,恢复为错误主动状态。

总线离线状态:TEC>255,节点因严重错误被隔离。此时节点完全停止发送数据(包括错误帧),仅监听总线,当检测到 128 次连续 11 个隐性位(总线空闲)时,TEC REC 清零,恢复为错误主动状态。总线离线状态是最后的容错手段,避免故障节点(如 CAN 收发器短路)持续发送错误帧,导致整个总线瘫痪。

例如,汽车中的某传感器节点因线路接触不良,持续发送位错误帧,TEC 0 逐步增加:TEC=8(第一次错误)→ TEC=96(第 12 次错误)→ TEC=97(第 13 次错误,进入错误被动状态)→ TEC=256(第 32 次错误,进入总线离线状态)。离线后,节点停止发送,避免干扰发动机 ECUABS 控制器等核心节点;当线路修复,节点检测到 128 次总线空闲后,恢复正常通信,确保汽车行驶安全。

(三)差分信号与总线拓扑:物理层抗干扰设计

CAN 异步通信的可靠性不仅依赖协议层机制,还需物理层的抗干扰设计 —— 通过差分信号传输、总线拓扑优化、终端电阻匹配,减少电磁干扰与信号衰减,为异步通信提供稳定的物理基础。

差分信号传输:CAN 总线采用 CAN_H CAN_L 两根双绞线传输差分信号,显性位时 CAN_H=3.5VCAN_L=1.5V(差分电压 2V),隐性位时 CAN_H=CAN_L=2.5V(差分电压 0V)。差分信号的优势在于 “抗共模干扰”—— 电磁干扰(如电机噪声、射频信号)会同时影响 CAN_H CAN_L,产生相同的共模电压,而接收方仅检测差分电压,共模干扰被抵消,大幅提升抗干扰能力。例如,工业车间的电机启动时产生强电磁干扰,共模电压可达 1V,但差分电压仍稳定在 2V,接收方仍能准确识别显性位。

总线拓扑与终端电阻:CAN 总线采用 “线性总线拓扑”(所有节点并联在 CAN_H/CAN_L 上),避免星形、树形拓扑导致的信号反射;总线两端的节点需接入 120Ω 终端电阻,匹配总线特性阻抗(双绞线特性阻抗约 120Ω),减少信号反射。信号反射会导致总线电平出现毛刺,引发位错误,终端电阻可将反射信号吸收,确保信号完整性。例如,100 米长的 CAN 总线,若未接终端电阻,信号反射会导致显性位电平波动 ±0.5V,接终端电阻后波动小于 ±0.1V,满足异步通信的采样要求。

总线保护措施:实际应用中,CAN 总线还需加入过压保护(如 TVS 二极管)、过流保护(如自恢复保险丝),防止雷击、电源浪涌导致的收发器损坏。例如,汽车 CAN 总线在 CAN_H/CAN_L 与地之间并联 TVS 二极管(型号 SMBJ6.5CA),当总线电压超过 6.5V 时,TVS 二极管击穿,将过压电流导入地,保护 CAN 收发器(如 TJA1050)不被烧毁。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭