1、CAN 协议简介
CAN 与 I2C、SPI 等具有时钟信号的同步通讯方式不同,CAN 通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有 CAN_High 和 CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。
CAN 物理层的形式主要分为闭环总线及开环总线网络两种,闭环总线适合于高速通讯,开环总线适合于低速远距离通讯。
1.1 闭环总线网络
CAN 物理层的形式主要有两种,CAN 闭环总线通讯网络中的 CAN 通讯网络是一种遵循 ISO11898 标准的高速、短距离闭环网络,它的总线最大长度为 40m,通信速度最高为 1Mbps,总线的两端各要求有一个120 欧的电阻。
1.2 开环总线网络
CAN 开环总线通讯网络是遵循 ISO11519-2 标准的低速、远距离开环网络,它的最大传输距离为 1km,最高通讯速率为 125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一个2.2 千欧的电阻。
1.3 差分信号
差分信号又称差模信号,与传统使用单根信号线电压表示逻辑的方式有区别,使用差分信号传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值来表示逻辑 0 和逻辑 1。见图差分信号 ,它使用了 V+ 与 V-信号的差值表达出了图下方的信号。
以高速 CAN 协议为例,当表示逻辑 1 时 (隐性电平),CAN_High 和 CAN_Low 线上的电压均为 2.5v,即它们的电压差 V H -V L = 0V;而表示逻辑 0 时 (显性电平),CAN_High 的电平为 3.5V,CAN_Low 线的电平为 1.5V,即它们的电压差为 V H -V L = 2V。
例如:当 CAN 收发器从 CAN_Tx 线接收到来自 CAN 控制器的低电平信号时 (逻辑 0),它会使CAN_High 输出 3.5V,同时 CAN_Low 输出 1.5V,从而输出显性电平表示逻辑 0。
显性电平逻辑 0,高优先级
隐性电平逻辑 1