Controller Area Network(控制器局部网络)是一种有效支持分布式控制或实时控制的串行异步半双工的现场总线,支持多主机多从机,需要 CAN控制器 和 CAN收发器 的硬件支持
特点:
结构简单,抗干扰强,速度快
节点自由增减,理论上无数量限制
各节点之间自由通讯
标准 | 内容 |
ISO 11898-1:2015 | 定义数据链路层(包括逻辑链路控制(LLC)子层、媒体访问控制(MAC)子层、物理信令(PHS)子层),规定了经典CAN帧格式和新引入的CAN灵活数据速率帧格式。经典CAN帧格式允许比特率高达1mbit /s,有效负载高达每帧8字节。灵活数据速率帧格式允许比特率高于1mbit /s,有效负载大于每帧8字节。有三种实现选项:只支持经典CAN帧格式,不支持灵活数据速率帧格式;支持经典CAN帧格式和容忍灵活数据速率帧格式;支持经典CAN帧格式和灵活数据速率帧格式。 |
ISO 11898-2:2016 | 高速、低功耗、选择性唤醒的物理层 |
ISO 11898-3:2006 | 低速容错物理层,传输速率 40 kbit/s 到 125 kbit/s,该标准允许在连线失败时仍能继续运行 |
ISO 11898-4:2004 | 时间触发通讯 |
有 2 条差分信号线:CAN_HIGH(黄色)和 CAN_LOW(绿色)
隐性状态 = 1
显性状态 = 0
两种状态用 电压差 来分辨,但 CAN 协议并没有具体定义实现方式(差值的设定,需要两条线都呈显性时才能达到阈值,只有一条线呈显性电平则达不到阈值)
CAN 总线采用二进制不归零(NRZ)编码方式,所以总线上不是 0 就是 1
若两个节点同时分别发送 0 和 1,采用 与 运算,与 0 清 0,所以总线上是 0,即显性
常用的 CAN 总线:单线CAN、低速容错CAN、高速CAN,这三种总线的主要区别在于电平逻辑
CAN 总线有 空闲、有效、休眠、唤醒 这四种模式:
空闲时(隐性位)
单线 CAN:
电平为 0V
低容错 CAN:
CANH为 0V
CANL为 5V
差为 5
高速 CAN:
CANH为 2.5V
CANL为 2.5V
差为 0
有效时(显性位)
单线 CAN:
电平为 4V(空闲为 0V)+4
低容错 CAN:
CANH为 4V(空闲为 0V)+4
CANL为 1V(空闲为 5V)-4
差为 3,大于 3 时都为隐性(3、4、5)
高速 CAN:
CANH为 3.6V(空闲为 2.5V)+1.1
CANL为 1.4V(空闲为 2.5V)-1.1
差为 2.2,小于 2.2 时都为隐性(0、1.1、2.2)
休眠时
单线 CAN:
休眠电平为 0V
低容错 CAN:
CANH休眠电平为 0V
CANL休眠电平为 12V(空闲为 5V)
高速 CAN(收发器不同,标准不同):
TJA1040:
CANH休眠电平为 0V(空闲为 2.5V)
CANL休眠电平为 0V(空闲为 2.5V)
TJA1050:
CANH休眠电平为 2.5V
CANL休眠电平为 2.5V
唤醒时
单线 CAN:
唤醒电平为 12V(休眠为 0V)(空闲为 0V)
必须连续 3 个唤醒位才能唤醒其他节点
低容错 CAN:
CANH唤醒电平为 1.8V(休眠为 0V)(空闲为 0V)
CANL唤醒电平为 3.2V(休眠为 12V)(空闲为 5V)
高速 CAN:
TJA1040:
CANH为 0V(空闲为 2.5V)
CANL为 0V(空闲为 2.5V)
TJA1050:
CANH为 2.5V
CANL为 2.5V