CAN总线原理

一、基础信息

CAN总线为异步、半双工通信,线路分为闭环与开环,常见模式为闭环线路,采用双绞线、差分信号形式

隐形状态为1,CAN_H和CAN_L压差为0v,所有设备不使能;

显性状态为0,CAN_H和CAN_L压差为2v,分别为3.5v和1.5v,设备使能,因此在总线仲裁的时候0状态优先级高;

二、仲裁机制

1、服从先来后到,只有连续监测到11个高电平的时候才可以发送数据,因此需要在消息帧的数据段进行位填充,避免其他设备误认为总线空闲;

2、当有多个设备同时发送数据时,启用仲裁机制,最先发送0最多的设备获胜,该机制能够在不破换有效数据的情况下完成仲裁,具有较高的效率;

三、帧结构

CAN总线的帧结构包括标准帧和扩展帧两种形式,由1位标志位IDE判断。帧结构包含以下7部分(场):

| 场序列 | 字段名 | 长度 | 说明 |

| 1 | 帧起始(SOF) | 1 bit | 一个显性位('0'),表示一帧开始,用于同步。 |

| 2 | 仲裁场 | 11bit / 29 bit | 决定报文优先级和帧类型,包含ID和关键控制位。 |

| 3 | 控制场 | 6 bit | 包含数据长度代码(DLC),指明数据场有多少个字节。 |

| 4 | 数据场 | 0-8 byte | 实际要传输的数据,长度由DLC指定。 |

| 5 | CRC场 | 16 bit | 循环冗余校验码,用于校验传输是否正确。 |

| 6 | ACK场 | 2 bit | 发送器发出隐性位,任何正确接收的节点用显性位应答。 |

| 7 | 帧结束 | 7 bit | 7个隐性位,表示帧结束。 |

其中ACK的总线权限短暂交由接受设备接管,由接收设备发送标志位0来确认收到,因此ACK标志位前后各有一个空闲位用于权限交接,CRC场的最后一位和ACK场的最后一位。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务