CAN

CAN(Controller Area Network,控制局域⽹络)是一种串行通信协议

物理层介绍

CAN由芯片内部CAN外设(CAN控制器)、CAN芯片(CAN收发器)、CAN总线(CANH、CANL);
在这里插入图片描述

CAN使用差分信号进行数据传输,根据CANH和CANL上的电位差来判断总线电平以高速CAN为例:

CANH - CANL = 2V,显性电平(逻辑0)
CANH - CANL = 0V,隐形电平(逻辑1)

协议层介绍

CAN总线以“帧”形式进行通信。CAN协议定义了5种类型的帧:==数据帧、遥控帧、错误帧、过载帧、间隔帧,==其中数据帧最为常用。
在这里插入图片描述
标准数据帧CAN2.0A:

  1. 起始帧:start = 0(显性信号),长度1
  2. 仲裁段:标识符位(ID)确定优先级,RTR= 0(数据帧)/RTR = 1(遥控帧)
  3. 控制段:控制数据段长度
  4. CRC段:循环校验,检查帧是否正确
  5. ACK段:确认正常正确接收
  6. 结束帧:end = 1,EOF为7个隐形信号
    在这里插入图片描述

发送实例

以发送数据帧为例:
若总线处于空闲状态,首先发送显性信号的单元获得发送权
若多个单元同时发送,仲裁段判断,率先出现隐性信号(=1)的单元转为接收(仲裁失利),连续 输出显性信号(=1)的单元继续发送
竞争失败的单元持续检测总线状态,若空闲再次尝试发送

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐