CAN协议(ISO11898)

张开发
2026/4/15 14:15:15 15 分钟阅读

分享文章

CAN协议(ISO11898)
目录1 性能特点2 错误状态2.1 错误种类3 帧的类型3.1 数据帧3.2 遥控帧3.3 错误帧3.4 过载帧3.5 帧间隔4 帧的优先级5 位填充6 采样点6.1 CAN波特率计算6.2 采样点计算S32G为例6.2.1第一采样点6.2.2 第二采样点1 性能特点1、多主控制在总线空闲时所有的单元都可开始发送消息。2、信息的发送两个以上的单元同时开始发送消息时根据标识符Identifier 以下称为ID决定优先级。对各消息 ID 的每个位进行逐个仲裁比较。仲裁获胜被判定为优先级最高的单元可继续发送消息仲裁失利的单元则立刻停止发送而进行接收工作。3、系统的柔软性连接在总线上的其它单元的软硬 件及应用层都不需要改变。4、通信速度在同一网络中所有单元必须设定成统一的通信速度。5、远程数据请求可通过发送“遥控帧”请求其他单元发送数据6、错误检测功能错误通知功能错误恢复功能所有的单元都可以检测错误错误检测功能。检测出错误的单元会立即同时通知其他所有单元错误通知功能。正在发送消息的单元一旦检测出错误会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止错误恢复功能。7、故障封闭CAN 可以判断出错误的类型是总线上暂时的数据错误如外部噪声等还是持续的数据错误。当总线上发生持续数据错误时可将引起此故障的单元从总线上隔离出去8、连接CAN总线是可以同时连接多个单元的总线9、使用NRZ编码非归零编码位填充保证有足够跳变沿用于时间同步位填充发送节点发送5个连续的相同极性位后在位流中自动插入一个极性相反的位。清除填充接收节点对相同极性位的数量进行检测从位流中将填充位去掉。2 错误状态1、主动错误主动错误状态是可以正常参加总线通信的状态。处于主动错误状态的单元检测出错误时输出主动错误标志。2、被动错误状态处于被动错误状态的单元即使检测出错误也不能发送错误通知并且整个总线也被认为是没有错误的。被动错误状态的单元在发送结束后不能马上再次开始发送在间隔帧期间内 必须插入“延迟传送”(8 个位的隐性位)。3、总线关闭态总线关闭态信息的接收和发送均被禁止。通过发送错误计数和接受错误计数管理2.1 错误种类错误共有 5 种多种错误可能同时发生。位错误、填充错误、CRC 错误、格式错误、ACK 错误3 帧的类型3.1 数据帧共七个部分组成帧起始、仲裁段、控制段、数据段、CRC 段、ACK 段 、帧结束(1) 帧起始表示数据帧开始的段1 个位的显性位。显性电平的逻辑值为“0”隐性电平为“1”(2) 仲裁段表示该帧优先级的段标准格式和扩展格式在此的构成有所不同。(3) 控制段表示数据的字节数及保留位的段。保留位r0、r1 保留位必须全部以显性电平发送。但接收方可以接收显性、隐性及其任意组合的电平。(4) 数据段可发送 08 个字节的数据从 MSB最高位开始输出。(5) CRC 段CRC 段是检查帧传输错误的帧。由 15 个位的CRC 顺序和 1 个位的 CRC 界定符用于分隔的位构成CRC 顺序是根据多项式生成的 CRC 值CRC 的计算范围包括帧起始、仲裁段、控制段、数据段。接收方以同样的算法计算 CRC 值并进行比较不一致时会通报错误。(6) ACK 段ACK 段用来确认是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成。1.发送单元的 ACK 段发送单元在 ACK 段发送2 个位的隐性位。2.接收单元的 ACK 段接收到正确消息的单元在 ACK 槽(ACK Slot)发送显性位通知发送单元正常接收结束。这称作“发送 ACK”或者“返回 ACK”(7) 帧结束帧结束是表示该该帧的结束的段。由7个位的隐性位构成。3.2 遥控帧1、遥控帧的RTR 位为隐性位没有数据段。没有数据段的数据帧和遥控帧可通过 RTR 位区别开来。2、遥控帧的数据长度码以所请求数据帧的数据长度码表示。3、没有数据段的数据帧有何用途可用于各单元的定期连接确认/应答、或仲裁段本身带有实质性信息的情况下。3.3 错误帧用于在接收和发送消息时检测出错误通知错误的帧。错误帧由错误标志和错误界定符构成。1、错误标志错误标志包括主动错误标志和被动错误标志两种。-主动错误标志6 个位的显性位。-被动错误标志6 个位的隐性位。2、错误界定符错误界定符由 8 个位的隐性位构成。3.4 过载帧1、过载标志6 个位的显性位。2、过载界定符8 个位的隐性位。3.5 帧间隔帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧数据帧、 遥控帧、错误帧、过载帧分开。过载帧和错误帧前不能插入帧间隔。1、间隔:3 个位的隐性位。2、总线空闲:隐性电平无长度限制0 亦可。本状态下可视为总线空闲要发送的单元可开始访问总线。3、延迟传送发送暂时停止:8 个位的隐性位。只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。4 帧的优先级1、ID越小的优先级越高2、仲裁段的最后一位RTR为显性位的数据帧具有优先权 可继续发送。数据帧为显性遥控帧拓展数据帧为隐性5 位填充位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。位填充发送节点发送5个连续的相同极性位后在位流中自动插入一个极性相反的位。清除填充接收节点对相同极性位的数量进行检测从位流中将填充位去掉。6 采样点6.1 CAN波特率计算TQ(Time-Quanta)是CAN通信里的最小时间单位TQ Prescaller / fCANCLKTQS是一个Bit包含的TQ数量TQS SYNCTSEG1TSEG2Prop_SEG但不是一个bit的传输时间一个CAN bit的传输时间根据ISO标准可知为Bit_time TQS*TQ波特率的计算公式为CAN_Baud 1/Bit_time1/(TQS*TQ) 1/((SYNCTSEG1TSEG2Prop_SEG)*TQ) 1/(SYNCTSEG1TSEG2Prop_SEG)*Prescaller/fCANCLK)fCANCLK / ((SYNCTSEG1TSEG2Prop_SEG)*Prescaller)6.2 采样点计算S32G为例6.2.1第一采样点Phase Segment 1 (PSEG1 1) × TQ.Phase Segment 2 (PSEG2 1) × TQ.Propagation Segment Time PROPSEG × TQ.Resync Jump Width SJW 1.(Sync_SEGTime Segment 1)/(Sync_SEGTime Segment 1 Time Segment 2)(1PROPSEGPSEG12)/(1PROPSEGPSEG12PSEG21)6.2.2 第二采样点Phase Segment 1 (FPSEG1 1) × TQ.Phase Segment 2 (FPSEG2 1) × TQ.Propagation Segment Time FPROPSEG × TQ.Resync Jump Width FSJW 1.(Sync_SEGTime Segment 1)/(Sync_SEGTime Segment 1 Time Segment 2)(1PROPSEGPSEG11)/(1PROPSEGPSEG11PSEG21)

更多文章