本文说的CAN即是一种总线,也是一种协议。因此,我们常听见CAN总线,也常听见CAN协议。本CAN协议和CANOpen协议是两套不同的协议。从软硬件层次来划分,CAN协议属于硬件协议,而CANOpen属于软件协议。本文文线束工程师之家网将概述CAN网络,让大家对CAN总线协议有一个全局的概念,再到底层的CAN总线协议知识。
文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
1CAN网络
CAN网络可以理解为多台CAN设备连接在同一条CAN总线上组合成的网络,其中的CAN设备我们称之为节点。CAN网络拓扑结构如下图:文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
2ISO标准化的CAN协议
写这一章节的主要目的就是想让大家了解CAN总线位于OSI所在层次。文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
1.ISO/OSI基本参照模型文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
【注】文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
ISO:International Standardization Organization国际标准化组织;文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
OSI:Open Systems Interconnection开放式系统间互联;文章源自线束工程师之家-https://www.suncve.com/basic-principle-of-can-bus-protocol/
2.CAN在OSI模型中的定义
【注】
LLC:Logical Link Control逻辑链路控制;
MAC:Medium Access Control媒介访问控制;
从上图可以知道CAN总线底层硬件的内容(CAN控制器、收发器)主要位于OSI的第1层和第2层。
3概述CAN总线协议
CAN总线协议:就是为了保证通信(收发)数据在CAN总线上能稳定传输而制订的一套协议。
CAN总线协议的内容很多,为方便初学者理解,本文先大概描述一下CAN总线协议,后续文章详细讲述CAN总线协议的内容。
2.优先级
假如某一时刻,一个设备(节点)往总线发0,一个设备往总线发1。那么总线会呈现什么现象?
答案:最后总线呈现为显性,也就是0。
3.位时序
位时序逻辑将监视串行总线,执行采样并调整采样点,在调整采样点时,需要在起始位边沿进行同步并后续的边沿进行再同步。
简单的说就是对一个bit位分几段进行采样,目的就是提高数据传输稳定性。在STM32中底层驱动代码就需要进行位时序编程,在STM32参考手册中也会发现如下位时序图:
6.错误的种类