CAN介绍

由于打算去面试一家外企,做汽车电子的;所以为了复习一下知识,特意复习这篇文章(先说明,这篇文章不是我写的,我顶多在其中加了自己理解的部分,从师兄给的笔记里面找到的,所以不知道作者是谁了)。。。。。。。

CAN

CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO 国际标准化的串行通信协议。

技术背景介绍
在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世(BOSCH)公司开发出面向汽车的CAN通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,已是汽车网络的标准协议。

现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

CAN总线特点
①多主控制。
总线空闲时,所有单元都可发送消息,而两个以上的单元同时开始发送消息时,根据标识符(ID,非地址)决定优先级。两个以上的单元同时开始发送消息时,对各消息ID 的每个位进行逐个仲裁比较。仲裁获胜(优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。 这个有点类似於单片机里面中断的优先级。

②系统柔软性。
连接总线的单元,没有类似“地址”的信息,因此,在总线上添加单元时,已连接的其他单元的软硬件和应用层都不需要做改变

③速度快,距离远。最高1Mbps(距离<40M),最远可达10KM(速率<5Kbps)。

④ 具有错误检测、错误通知和错误恢复功能。
所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

⑤故障封闭功能。
CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

⑥连接节点多。
CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

CAN物理层特性
SO11898标准:
**加粗样式**![
CAN 控制器根据CAN_L和CAN_H上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

在这里插入图片描述
显性电平对应逻辑:0
CAN_H和CAN_L之差为2V左右。
隐性电平对应逻辑:1
CAN_H和CAN_L之差为0V。

显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,**只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。**另外,在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。

CAN帧种类的介绍在这里插入图片描述
其中,数据帧和遥控帧(远程帧)有标准格式和扩展格式两种格式。标准格式有11 个位的标识符(ID),扩展格式有29 个位的ID 。最常用,也是最复杂的是数据帧,这里重点介绍数据帧的格式。想详细了解的话可以去我上传过的一份资料~

数据帖的组成
在这里插入图片描述

①帧起始。
表示数据帧开始的段
②仲裁段。
表示该帧优先级的段
③控制段。
表示数据的字节数及保留位的段
④数据段。
数据的内容,一帧可发送0~8个字节的数据
⑤CRC段。
检查帧的传输错误的段
⑥ACK段。
表示确认正常接收的段。
⑦帧结束。
表示数据帧结束的段。
图中D表示显性电平,R表示隐形电平(下同)。

数据帧的解析
帧起始:标准帧和扩展帧都是由1个位的显性电平表示帧起始。
仲裁段:表示数据优先级的段,标准帧和扩展帧格式在本段有所区别,如图所示:
在这里插入图片描述
ID:高位在前,低位在后。
基本ID,禁止高7位都为隐性,即不能:ID=1111111XXXX。
RTR,远程请求位。0,数据帧;1, 远程帧;
SRR,替代远程请求位。设置为1(隐性电平);
IDE,标识符选择位。0,标准标识符;1,扩展标识符;

控制段由6个位构成,表示数据段的字节数。标准帧和扩展帧的控制段稍有不同,如图所示:
在这里插入图片描述
r0,r1:保留位。必须以显现电平发送,但是接收可以是隐性电平。
DLC:数据长度码。0~8,表示发送/接收的数据长度(字节)。
IDE,标识符选择位。0,标准标识符;1,扩展标识符;

数据段:该段可包含0~8个字节的数据,从最高位(MSB)开始输出。标准帧和扩展帧在这个段的格式完全一样:

CRC段:该段用于检查帧传输错误。由15个位的CRC顺序和1个位的CRC界定符(用于分隔的位)组成,标准帧和扩展帧在这个段的格式也是相同的;CRC的值计算范围包括:帧起始、仲裁段、控制段、数据段。
接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误。

ACK段,此段用来确认是否正常接收。由ACK槽(ACK Slot)和ACK界定符2个位组成。标准帧和扩展帧在这个段的格式也是相同的:

发送单元ACK段:发送2个隐性位。
接收单元ACK段:接收到正确消息的单元,在ACK槽发送显性位,通知发送单元,正常接收结束。称之为发送ACK/返回ACK。
注意:发送 ACK 的是既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元(发送单元不发送ACK)。正常消息是指:不含填充错误、格式错误、CRC 错误的消息。

帧结束:由7个位的隐性位组成。标准帧和扩展帧在这个段格式完全一样。

CAN总线仲裁
在总线空闲态,最先开始发送消息的单元获得发送权。
多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。
同时多个单元发送数据时,总线仲裁(优先级)过程:
在这里插入图片描述

规律:
1,总线空闲时,最先发送的单元获得发送优先权,一但发送,其他单元无法抢占。
2,如果有多个单元同时发送,则连续输出显性电平多的单元,具有较高优先级。 从ID开始比较,如果ID相同,还可能会比较RTR和SRR等位。

CAN位时序

位速率
由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位一般可以分为如下四段:
① 同步段(SS)
② 传播时间段(PTS)
③ 相位缓冲段1(PBS1)
④ 相位缓冲段2(PBS2)
这些段又由可称为 Time Quantum(以下称为Tq)的最小时间单位构成。
1 位分为4 个段,每个段又由若干个Tq 构成,这称为位时序。
位时间=1/波特率,因此,知道位时间,我们就可以知道波特率。
1 位由多少个Tq 构成、每个段又由多少个Tq 构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。

位时序各段的作用和 Tq 数如下表:
在这里插入图片描述
一个位的构成
在这里插入图片描述
图中采样时间加大或减少量的最大值就是SJW,这里的采样点就是读取总线电平,并将读到的电平作为位置的点;位置在PBS1结束处。

在STM32中: 1Mbps速率下,采用点的位置在6tq位置处,BS1=5,BS2=2
500kbps速率下,采用点的位置在8tq位置处,BS1=7,BS2=3
250kbps速率下,采用点的位置在14tq位置处,BS1=13,BS2=2
125k,100k,50k,20k,10k的采用点位置与250K相同。

看了这么多,在这里总结一下:

标识符(ID)
数据帧的构成
总线仲裁
位时序

STMM32 CAN简介

STM32 bxCAN特点
① 支持CAN协议2.0A和2.0B主动模式
② 波特率最高达1Mbps
③ 支持时间触发通信
④ 具有3个发送邮箱
⑤ 具有3级深度的2个接收FIFO
⑥ 可变的筛选器组(也称过滤器组,最多28个)

STM32 bxCAN模式
工作模式 P426
①初始化模式(INRQ=1,SLEEP=0)
②正常模式(INRQ=0,SLEEP=0)
③睡眠模式(SLEEP=1)
测试模式
①静默模式( LBKM=0,SILM=1 )
②环回模式( LBKM=1,SILM=0 )
③环回静默模式(LBKM=1,SILM=1)
调试模式
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章