第四天:CAN总线

一、CAN总线协议

        CAN总线协议是一种专为高可靠性、实时通信设计的串行总线标准。它最初由博世公司为汽车电子系统开发,现已广泛应用于工业控制、医疗设备等诸多领域。其核心思想是创造一个共享的通信通道,让多个微控制器或设备能够可靠地交换信息,特别适合在电磁环境复杂、对安全要求严苛的场景中使用。

图1 CAN总线网络拓扑图

        该协议采用多主架构,任何节点都可以在总线空闲时主动发送信息。当多个节点同时发送时,其独特的非破坏性仲裁机制会确保优先级最高的报文(标识符数值最小)无延迟地继续传输,而其他节点则自动转为接收状态,这个过程不会造成任何数据损坏或时间浪费,从而保证了系统的实时性。

        在物理连接上,CAN总线通常使用双绞线进行差分信号传输,用CAN_H和CAN_L两根线之间的电压差来表示逻辑“0”(显性电平)和逻辑“1”(隐性电平)。这种设计赋予了其强大的抗共模干扰能力。总线两端必须连接终端电阻以匹配阻抗,确保信号完整性。

图2 CAN协议硬件连接图

        CAN协议定义了严谨的帧结构来封装数据。其中最主要的是数据帧,用于承载实际信息,它包含一个标识符(ID)、控制场和最多8个字节的数据场。此外还有用于请求数据的远程帧、在检测到错误时主动发出的错误帧,以及用于协调总线负载的过载帧。根据标识符长度不同,分为标准帧(11位ID)和扩展帧(29位ID)。        


帧类型

(1)数据帧:传输数据

  • 标准帧(CAN 2.0A):11位标识符,最大数据长度8字节。

  • 扩展帧(CAN 2.0B):29位标识符,兼容标准帧。

数据帧结构

字段

描述

帧起始(SOF)

1位显性电平,同步节点

仲裁场

标识符(ID)+ RTR位(远程请求标志)

控制场

数据长度码(DLC,0-8字节)

数据场

实际传输的数据(0-8字节)

CRC场

循环冗余校验码 + CRC定界符

应答场(ACK)

发送隐性位,接收节点回显显性位

帧结束(EOF)

7位隐性电平

(2)远程帧:请求发送数据

  • 无数据场,通过标识符请求对应节点发送数据。

(3)错误帧:节点检测错误时主动发出

  • 由错误标志(6位相同电平)和错误界定符(8位隐性电平)组成。

(4)过载帧:节点请求延迟下一帧

  • 在数据帧之间插入延迟。


错误处理

CAN总线定义5种错误类型,节点具备错误计数器:

  • 位错误:发送与监控电平不一致。

  • 填充错误:连续6位相同电平(违反位填充规则)。

  • CRC错误:校验码不匹配。

  • 格式错误:固定格式字段出现非法位。

  • 应答错误:未收到接收节点的显性ACK。

节点状态

  • 主动错误:正常通信。

  • 被动错误:错误计数较高,发送时需等待额外延迟。

  • 总线关闭:严重错误下节点自动断开连接。

        CAN总线以其稳定、实时、多主的特性,成为复杂分布式系统的首选通信协议。其简洁的硬件设计、可靠的错误机制和灵活的网络扩展性,使其在车辆和工业领域持续占据核心地位。随着CAN FD和CAN XL等演进,CAN协议仍在不断适应更高带宽和更复杂的应用需求。

二、CAN总线应用优势

        下面对嵌入式常见协议进行对比:

协议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值