差分信号
CAN通讯是一种半双工异步通讯,只具有CAN_High和CAN_Low两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯,通过两根信号线的电压差值来表示逻辑0和逻辑1
CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一,发送方通过使总线电平发生变化,将消息发送给接收方
显性电平:对应逻辑 0,CAN_H和 CAN_L之差为 2.5V左右
隐性电平:对应逻辑 1,CAN_H和 CAN_L之差为 0V
在总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平
隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平
仲裁机制
两个以上的节点同时发送数据,通过帧仲裁段的ID进行仲裁,优先级高的单元继续发送,其他单元立即停止发送进入接收状态
在开始阶段,两个节点发送的电平一样,所以它们一直继续发送数据。到了图中箭头所指处,节点1发送的为隐性电平,而节点2发送的为显性电平,因此节点2竟争总线成功,继续发送数据,节点1进入接收状态