浅谈CAN总线— 物理层
物理层主要是指硬件的用法,包括了CAN网络的组成、硬件接法等。
- 硬件接法
CAN完成通讯需要有CAN控制器和CAN收发器,目前市面上大多的控制器已经由芯片的外设完成,收发器的话要单独再加一个元器件。
常见CAN收发器分为三种:
高速CAN,最高速率1M/bps
低速/容错CAN,最高速率125K/bps
单线CAN,最高速率33.3K/bps
使用不同类型的收发器需要不同的电路,并且通讯使用的差分信号也不一样。
接法和物理信号如下图所示:
从图中可以看出,不同的类型有不同接线方式,我这个项目使用的高速CAN,所以需要在CAN_L和CAN_H的终端增加,终端电阻,这个终端电阻一般不由我们的ECU负责,一般由主机厂,也就是车厂负责(一般是120Ω)。
CAN控制器和收发器的接法如下图所示:
TJA1043T是收发器,想要和CAN总线上其他节点通讯,就需要通过收发器将数据变成差分信号,TJA1043有5种工作模式(这5种模式通过这STB_N和EN两个引脚电平控制):
正常模式
在正常模式下,收发器可以通过总线CANH和CANL发送和接收数据。 差分接收器将总线上的模拟数据转换为数字数据,然后输出到RXD引脚。 控制和优化总线上的输出信号的斜率,以确保最低的EME。 总线引脚偏置到0.5VCC(通过Ri)。 INH引脚有效,因此由INH引脚控制的稳压器(见图7)也将处于活动状态。
监听模式
在监听模式下,收发器的发送器被禁用,收发器提供了有效的监听功能。 接收器仍会在CANH和CANL引脚转换为数字数据,可通过RXD引脚输出。 与正常情况一样模式下,总线引脚偏置在0.5VCC,引脚INH保持活动状态。
待机模式
待机模式是TJA1043的一级省电模式,可降低电流消耗。 在待机模式下,收发器无法发送或接收数据,并且低功率接收器被激活以监视总线活动。 总线引脚偏置在地面(通过Ri)。 INH引脚仍处于活动状态,因此由该引脚控制的稳压器将也要活跃。引脚RXD和ERR_N将反映任何有效的唤醒请求(前提是VIO和VBAT)。
进入睡眠模式
进入睡眠模式是进入睡眠模式的受控路径。 在“进入睡眠”模式下,收发器的行为与“待机”模式相同,此外还要进入睡眠状态命令被发送到收发器。 收发器将保持“进入睡眠”模式,在进入‘休眠模式’之前保持时间(th(min))内收发器不会进入‘休眠模式’。如果在th(min)时间内,STB_N引脚或EN引脚的状态改变或设置了Wake标志,则不会进入休眠模式。
睡眠模式
睡眠模式是TJA1043的第二级节能模式。 通过“进入睡眠”模式进入休眠模式,以及在VCC或VCC上的欠压检测时间时在相关电压电平恢复之前,VIO已过。 在睡眠模式下,收发器的行为与待机模式相同,但INH引脚已置位浮空。 由该引脚控制的稳压器将被关闭,并且电流流入VBAT引脚将降至最低。 引脚STB_N,EN和唤醒标志可用于从休眠模式唤醒节点。
内部标志
TJA1043将七个内部标志用于故障安全后备模式控制和系统诊断支持。 控制器可以通过引脚查询其中五个标志ERR_N。 引脚ERR_N上随时可用哪个标志取决于激活状态操作模式以及许多其他条件。
远程唤醒
TJA1043支持通过CAN总线远程唤醒,远程唤醒可以通过发送连续隐性位来实现,详细解释见百度:CAN如何用报文唤醒一个处于睡眠状态的节点
2.2 CAN信号
CAN使用差分电平传递信号,这样有更好的稳定性。
- CAN总线最高传输速率可达1Mbps(通信距离最长40m),如果降低传输速率,其直接通信的最远距离可达10km(速率5Kbps以下),其总线上的节点数可达110个。
- CAN总线没有主从节点之分,所有CAN总线上的节点都是地位等价的。
- CAN差分信号中
CAN_H > CAN_L 逻辑0 显性
CAN_H = CAN_L 逻辑1 隐性
如下图所示