目录
1.显性和隐性
1.1.CAN总线上的数据位
CAN总线上的数据位(又称CAN总线位数值)采用具有两种互补的逻辑值,即显性和隐性。
- 显性:又称为显性等级或显性电平,用逻辑0表示;
- 隐性:又称为隐性等级或隐性电平,用逻辑1表示;
以上这两个又称为CAN总线中逻辑电平。
CAN总线上的CAN信号使用差分电压传送,两条信号线被称为CAN_H和CAN_L。
1.2.差分电压
差分电压,其实就是CAN_H与CAN_L之间的电位差,记。
上面的CAN总线位电平其实就是CAN总线位数值(逻辑值“0”或逻辑值“1”)对应CAN总线的显性(电平)和隐性(电平),而显性电平和隐性电平又是由两根信号线CAN_H和CAN_L中的电平所决定。
2.CAN总线类型
CAN总线类型分别是高速CAN、容错CAN(也就是低速CAN)、单线CAN。
注意:单线CAN其实就是CAN的单总线协议,这种CAN总线协议应用场景非常少。
2.1.CAN总线起源
- 1986年Bosch在SAE大会上提出CAN总线概念
- 在1987年Intel就推出了第一片CAN控制器芯片82526,由此点亮CAN总线发展的星星之火。
- 在1993年CAN国际标准ISO11898/ISO11519发布
ISO11898是高速CAN的标准。
注意:起初,高速CAN数据链路层和物理层都是在ISO11898中,后来就把ISO11898拆分ISO11898-1(只涉及高速CAN数据链路层)和ISO11898-2(只涉及高速CAN物理层)。
ISO11519是低速CAN的标准。
注意:在2006年,ISO11898-3已将ISO11519-2代替,所以我们查低速CAN的标准时,我们不用看ISO11519,可以直接看ISO11898-3。
在某一CAN总线中,显性电平和隐性电平固定在一个范围内,但是不同的CAN类型,显性电平和隐性电平的范围是不同的,
如下图:
- 高速CAN电平
- 容错(低速)CAN电平
- 单线CAN电平
不同类型的CAN总线,显隐性对应CAN_H和CAN_L的电平信号是不一样的。
3.CAN标准之总线电平
- ISO11898 定义了高速 CAN 通信速率在 125 kbps~1 Mbps 范围,高速CAN属于闭环总线;
- ISO11519 定义了低速 CAN 通信速率在 10~125 kbps 范围,低速CAN属于开环总线;
为什么说高速CAN是闭环总线?
我们可以根据高速CAN总线的拓扑结构直观看出CAN_H和CAN_L两条信号线通过两个120Ω的终端电阻围成的闭环,所以称为闭环总线。
为什么说低速CAN是开环总线?
我们可以根据低速CAN总线的拓扑结构直观看出CAN_H和CAN_L两条信号线是非闭合的环路,所以称为开环总线。
低速CAN总线和高速CAN总线在总线拓扑中的混合使用:
物理层 | ISO11898(高速CAN) | ISO11519-2(低速CAN) | ||||||||||
通信速度 | 最高1Mbps | 最高125kbps | ||||||||||
总线最大长度 | 40m/1Mbps | 1km/40kbps | ||||||||||
总线拓扑 | 隐性 | 显性 | 隐性 | 显性 | ||||||||
Min | Nom | Max | Min | Nom | Max | Min | Nom | Max | Min | Nom | Max | |
CAN_H(V) | 2.00 | 2.50 | 3.00 | 2.75 | 3.50 | 4.50 | 1.60 | 1.75 | 1.90 | 3.85 | 4.00 | 5.00 |
CAN_L(V) | 2.00 | 2.50 | 3.00 | 0.50 | 1.50 | 2.25 | 3.10 | 3.25 | 3.40 | 0.00 | 1.00 | 1.15 |
电位差 (H-L)(V) | -0.5 | 0 | 0.05 | 1.5 | 2.0 | 3.0 | -0.3 | -1.5 | - | 0.3 | 3.00 | - |
上表中的Nom表示基准值
注意:上面粉色区域都是显隐性的电位差的范围,这个范围值是标准规定的。根据这个显隐性电位差的范围,如果一个CAN_H是一个最大值或最小值,那么CAN_L就不可能是满范围,也就是受到CAN_H的限制,使电位差显隐性在这个固定范围(粉色最大和最小),所以这个显隐性信号按照这个标准才是准的。
- 在CAN总线上,逻辑“0”和“1”之间显著的电压差是通信可靠的保证。
高速CAN总线电平:
显性:CAN_H =3.5V,CAN_L=1.5V,电压差为2V为逻辑“0”
隐性:CAN_H =2.5V,CAN_L=2.5V,电压差为0V为逻辑“1”
低速CAN总线电平:
显性:CAN_H =4V,CAN_L=1V,电压差为3V为逻辑“0”
隐性:CAN_H =1.75V,CAN_L=3.25V,电压差为-1.5V为逻辑“1” - 高速CAN和低速CAN的平均电压都是2.5V
4.CAN信号传输
- CAN信号的发送:
CAN控制器将从CPU传来的信号转换成逻辑电平(即逻辑0-显性电平、逻辑1-隐性电平),这个逻辑电平是CAN发送器和CAN控制器之前所熟知的协定,CAN收发器接收到逻辑电平之后,再将其转换为差分信号输出到CAN总线上。 - CAN信号的接收:
CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。
以上总结来说:
1、发送方通过使总线电平发生变化,将其信息传递到CAN总线上
2、接收方通过监听总线电平,将总线上的消息读入自己的接收器。
以上就是根据某些大佬的经验总结出来CAN总线中总线逻辑值的相关学习知识,已经解决了我的疑惑,看看是否对大家有一定帮助!!!