【车载开发系列】CAN通信总线再理解(上篇)
【车载开发系列】CAN通信总线再理解上篇
- 【车载开发系列】CAN通信总线再理解(上篇)
- 一. CAN的概念
- 1)硬件组成
- 2)编码与负载
- 3)收发数据
- 4)半双工通信
- 二. CAN总线历史
- 三. CAN总线通信速率
- 四. CAN的特点
- 1)多主控制
- 2)开闭环总线
- 3)安全性
- 4)故障封闭功能
- 5)连接节点多
- 五. 物理层特征
- 1)显性电平
- 2)隐性电平
- 六. CAN收发器芯片介绍
一. CAN的概念
- CAN(Controller Area Network:控制器局域网),是ISO国际标准化的串行通信协议。
- 为满足汽车产业的“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需求。
- CAN通信协议是一种基于广播的通信方式,它采用多主结构;
- 即网络中的每个节点都可以在任何时候主动地向网络上其他节点发送信息,而不分主从,通信方式灵活。
1)硬件组成
- CAN通信节点由一个CAN控制器及CAN收发器组成
- 控制器与收发器(电平转换)之间通过CAN_Tx及CAN_Rx信号线相连;
- 收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连。
2)编码与负载
- 由于CAN通信协议不对节点进行地址编码,而是对数据内容进行编码,所以网络中的节点个数理论上不受限制,只要总线的负载足够即可,还可以通过中继器增强负载量。
3)收发数据
- 当CAN节点需要发送数据时,控制器把要发送的二进制编码通过CAN_Tx线发送到收发器,然后由收发器把这个普通的逻辑电平转化为差分信号,通过差分线CAN_High和CAN_Low线输出到CAN总线网络。
- 而通过收发器接收总线上的数据到控制器时,则是相反的过程,收发器把总线上收到的CAN_High及CAN_Low信号转化为普通的逻辑电平信号,通过CAN_Rx输出到控制器中。
4)半双工通信
- 由于CAN总线协议的物理层只有1对差分线,在一个时刻只能表示一个信号,所以对通信节点来说,CAN通讯是半双工的,收发数据需要分时进行。
- 在CAN的通讯网络中,因为共用总线,在整个网络中同一时刻只能有一个通讯节点发送信号,其余的节点在该时刻都只能接收。
二. CAN总线历史
CAN总线的发展历史大致可以分为下面的四个阶段。
年份 | 事件 |
---|---|
1986年 | 博世公司开发出CAN通信协议 |
1993年 | ISO发布CAN标准ISO11898及ISO11519 |
2011年 | 博世公司开发出CAN FD |
2024年 | CAN已经发展成为了汽车网络的标准协议 |
三. CAN总线通信速率
CAN种类 | 参照标准 | 通信速率 | 通信长度 |
---|---|---|---|
低速CAN | ISO11519 | 10~125kbps | 总线长度可达1000米 |
高速CAN | ISO11898 | 125kbps~1Mbps | 总线长度 <= 40米 |
CAN FD | ISO11898-1 | 5Mbps | 同经典CAN |
- 高速CAN也称为经典CAN。
四. CAN的特点
- 每个设备都可以主动发送数据,没有了主从设备的概念;
- 没有类似地址的信息,添加设备不改变原有总线的状态,增加了柔软性;
- CAN总线协议已广泛应用在汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。
1)多主控制
- 总线空闲时,所有单元都可发送消息,而两个以上的单元同时发送消息时,根据标识符(ID, 非地址)决定优先级。
- 两个以上的单元同时开始发送消息时,对各消息ID的每个位进行逐个仲裁比较。
- 仲裁获胜(优先级最高)的单元可继续发送消息,仲裁失利的单元则立即停止发送而进行接收工作。
2)开闭环总线
- 闭环通讯网络是一种高速、短距离网络,它的总线最大长度为40m,通信速度最高1Mbps,总线的两端各需要一个120Ω的电阻;
- 开环总线网络是低速、远距离网络,它的最大传输距离1km,最高通讯速率为125kbps,两根总线是独立的、不形成闭环,要求每根总线上各需要串联一个2.2kΩ的电阻。
3)安全性
- 具有错误检测/错误通知和错误恢复功能
4)故障封闭功能
- CAN可以判断出错误的类型是总线上数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生次序数据错误时,可将引起此故障的单元从总线上隔离出去。
5)连接节点多
- CAN总线上可以挂载多个通讯节点,节点之间的信号经过总线传输,实现节点间通信
五. 物理层特征
- CAN是一种异步通信,CAN_High和CAN_Low两条信号线构成一组差分信号线,以差分信号的形式进行通讯。
- CAN控制器根据CAN_L和CAN_H的电位差来判断总线电平。总线电平分为显性电平和隐性电平。
- 显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。
1)显性电平
- 逻辑0,用于表示CAN总线上的某个节点正在发送数据;
- 当总线上有一个或多个节点发送显性电平时,总线状态被置为显性电平。
- CAN_High的电平通常为3.5V,CAN_Low的电平通常为1.5V,相差2V左右;
2)隐性电平
- 逻辑1,用于表示CAN总线处于空闲状态,没有节点发送数据。
- 当总线上所有节点都停止发送数据或发送隐性电平时,总线状态被置为隐性电平。
- CAN_High和CAN_Low线上的电压均为2.5V,相差0V。
六. CAN收发器芯片介绍
- (1)CAN收发器芯片常见有:TJA1050、TJA1042、SIT1050T。
- (2)收发器芯片原理图:
(3)CAN芯片引脚介绍
引脚 | 功能 |
---|---|
D | 接STM32 CAN_TX,CAN发送引脚 |
GND | 接地 |
VCC | 该芯片工作电压为5V |
R | 接STM32 CAN_RX,CAN接收引脚 |
RS | 高速/静音模式选择(低电平为高速) |
CANH | 高电位CAN电压输入输出端 |
CANL | 低电位CAN电压输入输出端 |
Vref | 参考电压输出 |