我们的can总线和SPI和IIC时钟信号的同步通讯不同,它是一种异步通讯,只有CAN_High和CAN_Low两条信号线,组成一个差分信号线,以 差分信号的形式进行通讯。
CAN总线的物理层形式主要就是两种,一个是闭环总线网络,一个开环总线网络。
如上图就是一个闭环总线网络,这其中的CAN通讯网络,它的总线长度为40m,通信的最高速度是1Mbps,在总线的两端都要有个120欧的电阻。
这个就是开环总线网络,我们的CAN_High和CAN_Low是独立的,不形成闭环,在这每根总线上各串联有一个“2.2千欧”的电阻,它的传输距离有1km,最高通讯速度是125kbps。
一般我们都是闭环用的多,说实话40m真够用了。
我们的CAN通讯协议不对节点进行地址编码,而是对数据内容进行编码的,所以理论上我们挂载的节点数量是不受限制的,前提是总线的负载足够,可以通过中继器增强负载。
通过上图我们可以发现CAN通讯节点是一个控制器和一个收发器构成的,控制器和收发器是由CAN_Rx和CAN_Tx连接的,收发器和CAN总线之间就是CAN_High和CAN_Low信号线相连的。其中我们的CAN_Rx和CAN_Tx使用普通的类似TTL逻辑信号,而我们的CAN_High和CAN_Low是一对比较特别的差分信号。
我们的CAN节点需要发送数据的时候就是通过CAN_Tx将二进制编码发送到收发器,然后由这个收发器把这个普通的逻辑电平信号转化成差分信号,我们通过差分线CAN_High和CAN_Low输出到CAN总线网络上。通过收发器接收总线上的数据到控制器时,则是相反的过程,差分信号到收发器,然后转换成普通逻辑电平信号(二进制编码),通过CAN_Rx输出到控制器中。
我们开发板上的can外设就是控制器,然后还需要外接一个收发器。
差分信号又是差模信号,我们是用两根信号线的电压差值来表示逻辑0和逻辑1,
优点:
1.抗干扰能力强,当外界存在噪声干扰的时候,几乎会同时耦合到两条信号线上,而我们接收端只关心差值,所以外界的共模噪声可以完全抵消。
2.能有限抑制它对外部的电磁干扰。
3.时序定位精确,差分信号的开关变化是位于两个信号的交点。
由于差分信号我们在USB和485协议,以太网协议,都是差分信号传输。
看一下下面的图,我们大概讲一下显
我们高速用的多,所以重点就是说高速,以典型值为例。
CAN_High 2.5V CAN_Low2.5V 相减就是0 我们逻辑1 就是隐形电平
CAN_High 3.5V CAN_Low1.5V 相减就是2V 我们逻辑0 就是显性电平 、
为什么要分隐形电平和显性电平,是因为我们的CAN总线协议物理层只有一对差分线,在一个时刻只能表示一个信号,所以对通讯节点来说,CAN通讯是半双工,收发数据需要分时进行,在同一个时刻,我们只能一个节点发送,其他接收,所以这时候就是类似I2C总线的“线与”特性将使它处于显性电平状态,可以认为显性具有优先的意思,
显性高电压 逻辑为0 隐形低电压 逻辑为1