嵌入式——CAN
·
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:
- 起始帧:start = 0(显性信号),长度1
- 仲裁段:标识符位(ID)确定优先级,RTR= 0(数据帧)/RTR = 1(遥控帧)
- 控制段:控制数据段长度
- CRC段:循环校验,检查帧是否正确
- ACK段:确认正常正确接收
- 结束帧:end = 1,EOF为7个隐形信号

发送实例
以发送数据帧为例:
若总线处于空闲状态,首先发送显性信号的单元获得发送权
若多个单元同时发送,仲裁段判断,率先出现隐性信号(=1)的单元转为接收(仲裁失利),连续 输出显性信号(=1)的单元继续发送
竞争失败的单元持续检测总线状态,若空闲再次尝试发送
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)