嵌入式——CAN(1)

目录

一、初识CAN

1. 介绍

2. CAN总线特点

(1)多主控制

(2)消息的发送

(3)系统的柔软性

(4)通信速度

(5)错误检测&错误通知&错误恢复功能

(6)故障封闭

(7)连接节点多

二、CAN物理层

补:显性电平和隐性电平。

1. 低速CAN

2. 高速CAN

三、CAN协议层

1. 数据帧

2. 位时序

3. 数据同步过程

(1)硬件同步

(2)再同步

补:硬件同步和再同步规则

4. CAN总线仲裁

(1)数据帧和遥控帧的优先级

(2)标准格式和扩展格式的优先级


一、初识CAN

1. 介绍

        CAN( Controller Area Network ),是ISO国际标准化的串行通信协议。现在,CAN 的高性能和可靠性己被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。CAN 等通信协议的开发,使多种 LAN 通过网关进行数据交换得以实现。

2. CAN总线特点

(1)多主控制

    ① 在总线空闲时,所有的 单元都可开始发送消息(多主控制)。

    ② 多个 单元同时开始 发送时,发送高优先级ID 消息的单元可获得发送权

(2)消息的发送

    ① 在 CAN 协议中,所有的 消息都以 固定的 格式发送。

    ② 总线 空闲时,所有与 总线相连的 单元都可以 开始发送 新消息。

    ③ 两个以上的 单元 同时开始 发送消息时,根据标识符( Identifier,ID )决定优先级( ID并不是表示发送的 目的地址,而是表示 访问总线的 消息的优先级 )

    ④ 两个以上的 单元同时 开始发送 消息时,对各消息 ID 的每个位进行 逐个仲裁比较。 仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利 的单元则 立刻停止发送 而进行 接收工作

(3)系统的柔软性

        与总线相连的 单元没有 类似于 “ 地址 ” 的信息。因此 在总线上 增加单元时,连接 在总线上的 其它 单元的 软硬件 及 应用层都不需要改变。

(4)通信速度

    ① 根据 整个网络的规模,可 设定适合的 通信速度

    ② 在同一网络中,所有单元 必须设定成 统一的 通信速度。即使 有一个单元的 通信速度与其它的不一样,此单元也会输出 错误信号,妨碍 整个网络的通信。

    ③ 不同网络间 可以有 不同的通信速度。

(5)错误检测&错误通知&错误恢复功能

    ① 所有的单元都 可以 检测错误(错误检测功能)。

    ② 检测出错误的单元 会立即 同时通 知其他所有 单元(错误通知功能)。

    ③ 正在 发送消息的单元一旦 检测出错误,会强制 结束当前的发送。

    ④ 强制结束发送的单元 会不断反复地 重新发送此消息 直到成功发送为止(错误恢复功能)

(6)故障封闭

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

(7)连接节点多

    ① CAN 总线是 可同时连接多个单元 的总线。可连接的单元总数 理论上是 没有限制的。但实际上可连接的单元数 受 总线上的 时间延迟及电气负载的限制。

    ② 降低 通信速度,可连接的单元数 增加;提高通信速度,则 可连接的单元数 减少。

二、CAN物理层

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

嵌入式——CAN(1)_第1张图片

补:显性电平和隐性电平

        总线上执行 逻辑上的线 “ 与 ” 时,显性电平 的逻辑值为 “ 0 ” ,隐性电平为 “ 1 ” 。

        “ 显性 ” 具有 “ 优先 ” 的意味,只要有 一个单元输出 显性电平,总线上即为 显性电平。

        “ 隐性 ” 具有 “ 包容 ” 的意味,只有 所有的单元都输出 隐性电平,总线上才为 隐性电平。( 显性电平比隐性电平更强

        CAN总线由两根线(CANL和CANH)组成,允许挂载多个设备节点(低速CAN:20 高速CAN:30)。

1. 低速CAN

嵌入式——CAN(1)_第2张图片

嵌入式——CAN(1)_第3张图片

2. 高速CAN

嵌入式——CAN(1)_第4张图片

嵌入式——CAN(1)_第5张图片

三、CAN协议层

        CAN总线以 “ 帧 ” 形式进行通信。CAN协议定义了5种类型的帧:数据帧、遥控帧、错误帧、过载帧、间隔帧。其中数据帧最为常用。

嵌入式——CAN(1)_第6张图片

1. 数据帧

        数据帧由7段组成,其又分为 标准帧 ( CAN 2.0A ) 和 扩展帧 ( CAN 2.0B ),主要体现在 仲裁段 和 控制段。

嵌入式——CAN(1)_第7张图片

(1)帧起始:表示数据帧开始的段,显性信号。

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

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

(4)数据段:数据的内容,一帧可发送0~8字节数据。

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

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

(7)帧结束:表示数据帧结束的段,7个隐性信号。

    补:遥控帧的 RTR 位为 隐性位,没有数据段。没有数据段的 数据帧 和 遥控帧可通过 RTR位 区别开来。

2. 位时序

        CAN总线以 “ 位同步 ” 机制,实现对电平的正确采样。位数据都由四段组成:同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2)

        1 位由多少个 Tq 构成、每个段又由多少个 Tq 构成等,可以 任意设定位时序。通过设定位时序,多个单元可 同时采样,也可 任意设定 采样点。根据位时序,就可以计算 CAN通信的 波特率

嵌入式——CAN(1)_第8张图片

嵌入式——CAN(1)_第9张图片

采样点:指读 取总线电平,并 将读到的 电平作为 位值的点。

嵌入式——CAN(1)_第10张图片

    注:节点监测到 总线上信号的 跳变在 SS段 范围内,表示 节点与总线的时序 是同步,此时采样点的 电平即 该位的 电平。

3. 数据同步过程

        CAN为了实现对总线电平信号的正确采样,数据同步分为硬件同步和再同步

(1)硬件同步

        节点通过 CAN总线 发送数据,一开始发送帧起始信号。总线上其他节点会 检测帧起始信号在不在位数据的 SS段内,判断内部时序与总线 是否同步。

        假如不在 SS段 内,这种情况下,采样点获得的电平状态是不正确的。所以,节点会 使用硬件同步方式 调整把自己的 SS段 平移到检测到边沿的地方,获得同步,同步情况下,采样点获得的电平状态才是正确的。

嵌入式——CAN(1)_第11张图片

(2)再同步

        利用普通数据位的边沿信号( 帧起始信号是特殊的边沿信号 )进行同步。再同步的方式分为两种情况:超前和滞后,即边沿信号与 SS段 的相对位置。

嵌入式——CAN(1)_第12张图片

嵌入式——CAN(1)_第13张图片

        再同步时,PSB1 和 PSB2 中增加 或者 减少的时间 被称为 “ 再同步补偿宽度( SJW ) ”,其范围:1~4Tq。

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

        限定 SJW值 后,再同步时,不能 增加限定长度 的 SJW值 。SJW值 较大时,吸收误差能力更强,但是 通讯速度会下降。 

补:硬件同步和再同步规则

    ① 1个位 中只 进行一次 同步调整

    ② 只有当 上次采样点的总线值 和 边沿后的总线值 不同时,该边沿才能用于 调整同步。

    ③ 在 总线空闲 且存在 隐性电平到显性电平的边沿 时,则一定要进行 硬件同步

    ④ 在 总线非空闲时 检测到的 隐性电平 到显性电平 的边沿 如果满足条件 ① 和 ② ,将进行再同步。但还要满足 ⑤、⑥。

    ⑤ 发送单元观测到 自身输出的显性电平 有延迟时不进行 再同步。

    ⑥ 发送单元 在帧起始到 仲裁段 有多个单元 同时发送的情况下,对 延迟边沿不进行 再同步。

4. CAN总线仲裁

        CAN总线处于空闲状态最先开始发送消息的单元获得发送权

        多个单元同时开始发送时,从仲裁段(报文ID)的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送,即首先出现隐性电平的单元失去对总线的占有权变为接收。

嵌入式——CAN(1)_第14张图片

        竞争失败单元,会 自动检测总线空闲,在 第一时间再次尝试发送。

(1)数据帧和遥控帧的优先级

        具有相同 ID 的数据帧 和 遥控帧 在总线上竞争时,仲裁段的最后一位(RTR) 为显性位的数据帧具有优先权,可继续发送。

嵌入式——CAN(1)_第15张图片

(2)标准格式和扩展格式的优先级

        标准格式 ID与具有相同 ID的遥控帧 或者扩展格式的数据帧 在总线上竞争时,标准格式的 RTR 位为显性位的具有优先权,可继续发送。

嵌入式——CAN(1)_第16张图片

你可能感兴趣的:(单片机,嵌入式硬件,笔记,stm32,CAN,通讯协议)