本文将概述CAN网络,让大家对CAN总线协议有一个全局的概念,再到底层的CAN总线协议知识。
1.MCU应用程序MCU应用程序我将其分为三块:业务逻辑代码、协议层代码、底层驱动代码。
B.协议层代码:比如后续要讲述的CANOpen。
C.底层驱动代码:配置CAN总线相应参数、控制收发的代码。
写这一章节的主要目的就是想让大家了解CAN总线位于OSI所在层次。
1.ISO/OSI基本参照模型
【注】
ISO:InternationalStandardizationOrganization国际标准化组织;
OSI:OpenSystemsInterconnection开放式系统间互联;
LLC:LogicalLinkControl逻辑链路控制;
MAC:MediumAccessControl媒介访问控制;
从上图可以知道CAN总线底层硬件的内容(CAN控制器、收发器)主要位于OSI的第1层和第2层。
CAN总线协议:就是为了保证通信(收发)数据在CAN总线上能稳定传输而制订的一套协议。
1.总线信号CAN总线为「两线」「差分」信号,用隐形代表逻辑1,显性代表逻辑0。如下图:
2.优先级
假如某一时刻,一个设备(节点)往总线发0,一个设备往总线发1。那么总线会呈现什么现象?
答案:最后总线呈现为显性,也就是0。
3.位时序
位时序逻辑将监视串行总线,执行采样并调整采样点,在调整采样点时,需要在起始位边沿进行同步并后续的边沿进行再同步。
4.帧的种类和格式帧的种类有多种:数据帧:用于发送单元向接收单元传送数据的帧。遥控帧:用于接收单元向具有相同ID的发送单元请求数据的帧。错误帧:用于当检测出错误时向其它单元通知错误的帧。过载帧:用于接收单元通知其尚未做好接收准备的帧。帧间隔:用于将数据帧及遥控帧与前面的帧分离开来的帧。
数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符ID,扩展格式有29个位的ID。
5.位填充位填充是为防止突发错误而设定的功能。当同样的电平持续5位时则添加一个位的反型数据。如下图:
6.错误的种类
CAN总线协议内容很多,初学者可以先了解这些,希望对你有所帮助。