CAN是控制器局域网络(Controller Area Network)的简称,是一种能够实现分布式实时控制的异步半双工的串行通信网络。CAN通讯并不是以时钟信号来进行同步的,接受与发送不能同时进行。它以CAN_H和CAN_L构成的一组差分信号线进行通讯。
1.1 CAN总线特点
(1)多主控制:当总线处于空闲状态时,任意一个节点都可以向总线发送报文。
如何判断总线处于空闲状态??
当总线上的上出现连续的11位隐性电平1,那么就可以判断总线处于空闲状态。当节点监听到总线上连续出现了11位隐性电平,那么就会认为总线当前处于空闲状态,它就会立即向总线上发送自己的报文。
(2)非破坏性逐位仲裁机制:当多个节点向总线发送报文,就会出现总线访问冲突,总线根据标识符ID的优先级来选择优先级最高的报文先进行传输。而且标识符越小,优先权越高。(该部分需要与帧结构结合去理解,将在第二节进行讲解!!!)
如果标识符ID相同,则如何判断优先级??
那么就对下一位进行比较。如:数据帧与远程帧有时候标识符ID相同,数据帧的优先级高于远程帧。
在仲裁期间,每一个收发器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。
(3)线与机制:在总线上,显性电平可以覆盖隐性电平,即 0 可以覆盖 1。例如:当节点A和节点B各向总线发送了一个显性位0,一个隐性位1,则在总线上的电平为显0。
(4)异步半双工通信: CAN通讯并不是以时钟信号来进行同步的,接受与发送不能同时进行。
结合上述内容,思考下面的问题:
为什么总线的电平是这样的??
当这两个节点发现总线的电平是连续11位的隐性电平,则判断总线处于空闲,两个节点都向总线发送数据和标识符ID。首先判断优先级,节点1和节点2的发送Tx的ID10、ID9、ID8相同,所以收到的电平与发送的一样,总线的电平也是一样的,但ID7的位置节点1的电平为0,则节点1的优先级高于节点2,节点2停止报文发送,变为只监听不发送,所以节点2监听到的信息、总线的电平与节点1的完全一致。
1.2 CAN总线的分类
CAN总线根据收发器的不同,分为高速CAN总线(又称为闭环总线网络)和低速CAN总线(又称开环总线网络,容错CAN)。
(1)高速CAN总线,遵循ISO11898标准,总线最大长度为40m,最高信号传输速率为1Mbps,具有“高速、短距离”的特点,总线两端各有一个终端电阻。终端电阻的阻值典型是“120Ω”。
终端电阻的作用是什么??必须是120Ω吗??
高频信号传输时,信号波长相对传输线较短,信号在传输线终端会形成反射波,干扰原信号,所以需要在传输末端加终端电阻使信号到达传输线末端后不反射。而终端电阻应该与通讯电缆的阻抗相同,其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠性。典型值为120 Ω,但终端电阻并非必须是120 Ω。
下表是ISO11898协议终端电阻的推荐值:
(2) 低速CAN总线,遵循ISO11519-2标准,总线的最大传输距离为1km,最高传输速度为125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联一个“2.2千欧”的电阻。
1.3 CAN节点
(1)CPU/MCU 处理器;
(2)CAN 控制器;
(3)CAN 收发器。
CAN控制器的作用:一方面接收CAN收发器的数据,进行解析后发送给CPU;另一方面接收CPU的指令数据,然后发送给CAN收发器。
CAN收发器的作用:将CAN_H和CAN_L产生的差分信号转换成逻辑电平信号通过CAN_RxD传给CAN控制器;或者将CAN控制器通过CAN_TxD传来的逻辑电平信号(逻辑0表示显性电平;逻辑1代表隐性电平)转换成差分信号通过差分线CAN_H和CAN_L线传输到CAN总线上。即实现逻辑电平信号与差分信号之间的转换。
信号发送过程:每个节点都有自己的控制器和收发器。当一个节点需要发送数据到另一个节点时,自身节点的处理器需要将要发送的数据和自己的标识符传给自身的控制器,处于准备状态;当具有总线的使用权后,将数据和标识符组装成报文,将报文以一定格式发出,此时其他的节点处于接收状态。至于其他节点是否接收,由其他节点决定,是都会对某些报文进行过滤。
1.4 差分信号
差分信号又称为差模信号。它采用两根振幅相等,相位相反的信号线,通过两根信号线的电压差值来表示信号。
CAN_H-CAN_L<0.5V时为隐性,逻辑信号表现为“逻辑1”-高电平;CAN_H-CAN_L>0.9V时为显性,逻辑信号表现为“逻辑0”-低电平。
扫二维码|关注我们
微信号|BMS之旅