CAN-通讯协议
■ CAN-简介
CAN-主流通讯协议对比
■ CAN-硬件电路
■ CAN-物理层特性
■ CAN-电平标准
■ CAN-收发器-TJA1050(高速CAN)
■ CAN-总线帧格式
帧 | 帧用途 |
---|---|
数据帧 | 用于发送单元向接收单元传送数据的帧。 |
遥控帧 | 用于接收单元向具有相同 ID 的发送单元请求数据的帧。 |
错误帧 | 用于当检测出错误时向其它单元通知错误的帧。 |
过载帧 | 用于接收单元通知其尚未做好接收准备的帧。 |
帧间隔 | 用于将数据帧及遥控帧与前面的帧分离开来的帧。 |
■ CAN-数据帧
数据帧 | 用于发送单元向接收单元传送数据的帧。
■ 1. 帧起始
标准、扩展格式相同, 表示帧开始的段。 1 个位的显性位。
■ 2. 仲裁段
表示数据的优先级的段。
标准格式和扩展格式在此的构成有所不同。
■ 3. 控制段
控制段由 6 个位构成,表示数据段的字节数。标准格式和扩展格式的构成有所不同。
■ 4. 数据段
数据段可包含 0~8 个字节的数据。从 MSB(最高位)开始输出。
■ 5. CRC段 (标准/扩展格式相同)
■ 6. ACK段
ACK 段用来确认是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成。
■ 7. 帧结束
帧结束是表示该该帧的结束的段。由 7 个位的隐性位构成。
■ CAN-遥控帧
遥控帧 | 用于接收单元向具有相同 ID 的发送单元请求数据的帧。
==RTR 段为1 表示遥控帧,RTR段为0表示为数据帧。 ==
■ CAN-错误帧
错误帧 | 用于当检测出错误时向其它单元通知错误的帧。
■ CAN-过载帧
过载帧 | 用于接收单元通知其尚未做好接收准备的帧。
■ CAN-帧间隔
帧间隔 | 用于将数据帧及遥控帧与前面的帧分离开来的帧。
■ CAN-仲裁
■ 1. 仲裁-优先级的决定
在总线空闲态,最先开始发送消息的单元获得发送权。
多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继
续发送。
CAN模块在发送的同时也在读取线上的电平状态。
■ 2. 仲裁-数据帧和遥控帧的优先级
具有相同 ID 的数据帧和遥控帧在总线上竞争时, 仲裁段的最后一位(RTR) 为显性位的数据帧具有优先权,可继续发送。
数据帧和遥控帧的仲裁过程如图
■ 3. 仲裁-标准格式和扩展格式的优先级
标准格式 ID 与具有相同 ID 的遥控帧或者扩展格式的数据帧在总线上竞争时,标准格式的 RTR 位为显性位的具有优先权,可继续发送。
标准格式和扩展格式的仲裁过程如图
■ CAN-位填充
位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。
位填充的构成如图
■ CAN-错误帧
■ CAN-错误帧的种类
■ CAN-错误帧的输出
检测出满足错误条件的单元输出错误标志通报错误。
处于主动错误状态的单元输出的错误标志为主动错误标志;处于被动错误状态的单元输出的错误标志为被动错误标志。
发送单元发送完错误帧后,将再次发送数据帧或遥控帧。
错误标志输出时序如表 10 所示。
■ CAN-位时序
■ CAN-同步
■ 1. 取得同步的方法
■ 2. 硬件同步
接收单元在总线空闲状态检测出帧起始时进行的同步调整。
在检测出边沿的地方不考虑 SJW 的值而认为是 SS 段。
■ 3. 再同步
在接收过程中检测出总线上的电平变化时进行的同步调整。
每当检测出边沿时,根据 SJW 值通过加长 PBS1 段,或缩短 PBS2 段,以调整同步。但如果发生了超出 SJW
值的误差时,最大调整量不能超过 SJW 值。
■ 4. 调整同步的规则
硬件同步和再同步遵从如下规则。
(1) 1 个位中只进行一次同步调整。
(2) 只有当上次采样点的总线值和边沿后的总线值不同时,该边沿才能用于调整同步。
(3) 在总线空闲且存在隐性电平到显性电平的边沿时,则一定要进行硬件同步。
(4) 在总线非空闲时检测到的隐性电平到显性电平的边沿如果满足条件( 1)和( 2),将进行再同步。但还要满足下面条件。
(5) 发送单元观测到自身输出的显性电平有延迟时不进行再同步。
(6) 发送单元在帧起始到仲裁段有多个单元同时发送的情况下,对延迟边沿不进行再同步。