打印
[MCU]

众拳【STM8入门】第26讲 CAN总线概述

[复制链接]
1775|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 刘洋讲单片机 于 2017-1-11 14:52 编辑

第26讲.CAN总线概述.zip (460.21 KB)
众拳【剑齿虎STM8】开发板学习笔记分享

26讲   CAN总线概述

26.1 什么是CAN
CANController Area Network的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。
    在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898ISO11519进行了标准化,现在在欧洲已是汽车网络的标准协议。
    CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。
    现在,CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。
26.1.1  车载网络的构想示意图
1是车载网络的构想示意图。CAN 等通信协议的开发,使多种 LAN 通过网关进行数据交换得以实现

26.1 车载网络的构想示意图
26.1.2  CAN总线特点
CAN 协议具有以下特点。
(1) 多主控制
    在总线空闲时,所有的单元都可开始发送消息(多主控制)。
    最先访问总线的单元可获得发送权(CSMA/CA 方式 *1 )。
    多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权。
(2) 消息的发送
    CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息 ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。
(3) 系统的柔软性
    与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。
(4) 通信速度
    根据整个网络的规模,可设定适合的通信速度。
    在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。
(5) 远程数据请求
   可通过发送“遥控帧” 请求其他单元发送数据。
(6) 错误检测功能·错误通知功能·错误恢复功能
   所有的单元都可以检测错误(错误检测功能)。
   检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。
   正在发送消息的单元一旦检测出错误, 会强制结束当前的发送。 强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。
(7) 故障封闭
   CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
(8) 连接
   CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。
26.1.3  总线拓扑图
CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

26.2 CAN总线拓扑图
26.1.4  CAN电平特性
    我们使用ISO11898标准,物理层特征如图所示。
26.3 ISO11898(125K~1Mbps)电平特征
    CAN 控制器根据CAN_LCAN_H上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。
    显性电平对应逻辑:0
         CAN_HCAN_L之差为2V左右。
    隐性电平对应逻辑:1
         CAN_HCAN_L之差为0V
    显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。

26.2 CAN 协议及标准规格   
   CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。ISO11898 ISO11519-2 标准对于数据链路层的定义相同,但物理层不同。
   ISO11898 是通信速度为 125kbps-1Mbps CAN 高速通信标准。
   ISO11519 是通信速度为 125kbps 以下的 CAN 低速通信标准。
26.2.1  ISO 标准化的 CAN 协议
    CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。   ISO11898 ISO11519-2 标准对于数据链路层的定义相同,但物理层不同。
   ISO11898 是通信速度为 125kbps-1Mbps CAN 高速通信标准。
   ISO11519 是通信速度为 125kbps 以下的 CAN 低速通信标准。

图片4.png (56.36 KB )

图片4.png

图片5.png (40 KB )

图片5.png

图片6.png (35.14 KB )

图片6.png

图片7.png (39.1 KB )

图片7.png

图片8.png (49.38 KB )

图片8.png

相关帖子

沙发
刘洋讲单片机|  楼主 | 2017-1-11 14:33 | 只看该作者
26.2.2  ISO11898 和 ISO11519-2 的不同点

1、物理层的不同点

ISO11898 ISO11519-2 CAN 协议中物理层的标准有所不同。CAN 协议的物理层如图 7 所示,定义了三个子层,ISO11898 ISO11519-2 在物理层中的 PMA 层和 MDI 层有所不同。

在物理层(PMA 层、MDI 层),ISO11898 ISO11519-2 的主要不同点如表 26-1 所示。

  

26-1 ISO11898 和 11519-2 物理层的主要不同点

物理层
ISO 11898(High speed)
ISO 11519-2(Low speed)
通信速度
最高1Mbps
最高125kbps
总线最大长度
40m/1Mbps
1km/40kbps
连接单元数
最大30
最大20
总线拓扑
隐性
显性
隐性
显性
Min
Nom
Max
Min
Nom
Max
Min
Nom
Max
Min
Nom
Max
CAN_High(V)
2.00
2.50
3.00
2.75
3.50
4.50
1.60
1.75
1.90
3.85
4.00
5.00
CAN_Low(V)
2.00
2.50
3.00
0.50
1.50
2.25
3.10
3.25
3.40
0.00
1.00
1.15
电位差(H-L)(V)
-0.5
0
0.05
1.5
2.0
3.0
-0.3
-1.5
-
0.3
3.00
-
双绞线 (屏蔽/非屏蔽)
闭环总线
阻抗(Z):120Ω (Min.85Ω Max.130Ω)
总线电阻率(r):70mΩ/m
总线延迟时间:5ns/m
终端电阻:120Ω (Min.85Ω Max.130Ω)
双绞线 (屏蔽/非屏蔽)
开环总线
阻抗(Ζ):120Ω (Min.85Ω Max.130Ω)
总线电阻率(Γ):90mΩ/m
总线延迟时间:5ns/m
终端电阻:2.20kΩ (Min.2.09kΩ
Max.2.31kΩ)
CAN_L 与 GND 间静电容量 30pF/m
CAN_H 与 GND 间静电容量 30pF/m
CAN_L 与 GND 间静电容量 30pF/m
26.2.3  驱动 IC 的选择

ISO11898 ISO11519-2 的物理层的规格不同,每种规格需要有专门的驱动 IC 与之相对应。ISO11898 ISO11519-2 所对应的主要的驱动 IC 如表 5 所示。

26-2 ISO11898 和 11519-2 物理层的主要不同点

驱动IC
ISO 11898(High speed)
ISO 11519-2(Low speed)
HA13721RPJE(RENESAS)
PCA82C250(Philips)
Si9200(Siliconix)
CF15(Bosch)
PCA82C252(Philips)
TJA1053(Philips)
SN65LBC032(Texas Instruments)
26.3 CAN帧种类介绍

通信是通过以下 5 种类型的帧进行的。

• 数据帧

遥控帧

• 错误帧

• 过载帧

• 帧间隔

另外, 数据帧和遥控帧有标准格式和扩展格式两种格式。 标准格式有 11 个位的标识符 (Identifier: 以下称 ID) ,

扩展格式有 29 个位的 ID

26.3.1  帧的种类及用途

    26-3 帧的种类及用途

帧用途
数据帧
用于发送单元向接收单元传送数据的帧。
摇控帧
用于接收单元向具有相同 ID 的发送单元请求数据的帧。
错误帧
用于当检测出错误时向其它单元通知错误的帧
过载帧
用于接收单元通知其尚未做好接收准备的帧
帧间隔
用于将数据帧及遥控帧与前面的帧分离开来的帧

26.3.2  CAN数据帧介绍

数据帧由7个段构成。

(1) 帧起始:表示数据帧开始的段。

(2) 仲裁段:表示该帧优先级的段。

(3) 控制段:表示数据的字节数及保留位的段。

(4) 数据段:数据的内容,可发送 08 个字节的数据。

(5) CRC 段:检查帧的传输错误的段。

(6) ACK 段:表示确认正常接收的段。

(7) 帧结束:表示数据帧结束的段。

下面对帧的构成进行说明。

26.4 数据帧结构

一、帧起始(标准、扩展格式相同)

    表示帧开始的段。1 个位的显性位。

二、仲裁段

    表示数据的优先级的段。

标准格式和扩展格式在此的构成有所不同。

26.5 数据帧(终裁段)

ID:高位在前,低位在后。基本ID,禁止高7位都为隐性,即不能:ID=1111111XXXX

RTR,远程请求位。0,数据帧;1, 远程帧;

SRR,替代远程请求位。设置为1(隐性电平);

IDE,标识符选择位。0,标准标识符;1,扩展标识符;

三、控制段

    控制段由 6 个位构成,表示数据段的字节数。标准格式和扩展格式的构成有所不同。

四、数据段(标准、扩展格式相同)

    数据段可包含 08 个字节的数据。从 MSB(最高位)开始输出。

五、CRC 段(标准/扩展格式相同)

    CRC 段是检查帧传输错误的帧。由 15 个位的 CRC 顺序 *1 1 个位的 CRC 界定符(用于分隔的位)构成

六、ACK

ACK 段用来确认是否正常接收。由 ACK (ACK Slot)ACK 界定符 2 个位构成。

26.6 数据帧(ACK段)

发送单元ACK段:发送2个隐性位。

接收单元ACK段:接收到正确消息的单元,在ACK槽发送显性位,通知发送单元,正常接收结束。称之为发送ACK/返回ACK

七、帧结束

    帧结束是表示该该帧的结束的段。由 7 个位的隐性位构成。

26.3.3  总线优先级的决定

在总线空闲态,最先开始发送消息的单元获得发送权。

多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。

26.7 总线优先级判断

规律:

    1,总线空闲时,最先发送的单元获得发送优先权,一但发送,其他单元无法抢占。

    2,如果有多个单元同时发送,则连续输出显性电平多的单元,具有较高优先级。

    ID开始比较,如果ID相同,还可能会比较RTRSRR等位。



使用特权

评论回复
板凳
刘洋讲单片机|  楼主 | 2017-1-11 14:34 | 只看该作者
26.3.4  CAN位速率

位速率。由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位一般可以分为如下四段:

同步段(SS)

传播时间段(PTS)

相位缓冲段1(PBS1)

相位缓冲段2(PBS2)

26-4 段及其作用

段名称
段的作用
Tq数
同步段
(SS: Synchronization Segment)
多个连接在总线上的单元通过此段实现时序调整,同步进行接收和发送的工作。由隐性电平到显性电平的边沿或由显性电平到隐性电平边沿最好出现在此段中。
1Tq
8~25Tq
传播时间段
(PTS: Propagation Time Segment)
用于吸收网络上的物理延迟的段。
所谓的网络的物理延迟指发送单元的输出延迟、总线上信号的传播延迟、接收单元的输入延迟。
这个段的时间为以上各延迟时间的和的两倍。
1~8Tq
相位缓冲段 1
(PBS1: Phase Buffer Segment 1)
当信号边沿不能被包含于 SS 段中时,可在此段进行补偿。
由于各单元以各自独立的时钟工作, 细微的时钟误差会累积起来,PBS 段可用于吸收此误差。通过对相位缓冲段加减 SJW 吸收误差。(请参照图 34)。SJW 加大后允许误差加大,但通信速度下降。
1~8Tq
相位缓冲段 2
(PBS2: Phase Buffer Segment 2)
2~8Tq
再同步补偿宽度
(SJW: reSynchronization Jump Width)
因时钟频率偏差、传送延迟等,各单元有同步误差。SJW 为补偿此误差的最大值。
14Tq

26.8  1个位的构成

采样点:

所谓采样点是读取总线电平,并将读到的电平作为位值的点。位置在 PBS1 结束处。

26.4 同步的方法

CAN 协议的通信方法为 NRZNon-Return to Zero)方式。各个位的开头或者结尾都没有附加同步信号。发送单元以与位时序同步的方式开始发送数据。另外,接收单元根据总线上电平的变化进行同步并进行接收工作。

但是,发送单元和接收单元存在的时钟频率误差及传输路径上的(电缆、驱动器等)相位延迟会引起同步偏差。因此接收单元通过硬件同步或者再同步的方法调整时序进行接收。

一、硬件同步

    接收单元在总线空闲状态检测出帧起始时进行的同步调整。

    在检测出边沿的地方不考虑 SJW 的值而认为是 SS 段。

二、再同步

    在接收过程中检测出总线上的电平变化时进行的同步调整。

    每当检测出边沿时,根据 SJW 值通过加长 PBS1 段,或缩短 PBS2 段,以调整同步。但如果发生了超出 SJW值的误差时,最大调整量不能超过 SJW 值。


使用特权

评论回复
地板
渔夫的烟斗| | 2017-1-14 08:54 | 只看该作者
code?

使用特权

评论回复
5
刘洋讲单片机|  楼主 | 2017-1-14 09:41 | 只看该作者

众拳剑齿虎STM8开发板资料及代码下载地址,已发私信

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

148

主题

499

帖子

64

粉丝