CAN理论基础
概述
CAN 定义了物理层(Physical)和数据链路层(DataLink)
- 物理层:规定引脚数、如何定义0和1等等
- 数据链路层:如何定义一个CAN帧
物理层
特性包括
- 包括 CAN_Low 和 CAN_High 两个线
- 逐位总线仲裁
- 双绞线,差分信号
电平
0为显性,1为隐性,即0可以把1覆盖了
按位仲裁
可以理解0的优先级比1高,即数字越小优先级越高;节点A它发送了1却检测到了0,那它就会停止发送了,因为有优先级更高的设备在传输
数据链路层(帧)
共有三种类型:
其中**错误帧
、过载帧
、帧间隔
**都是由硬件完成的,没有办法用软件来控制。
数据帧和遥控帧有**标准格式
与扩展格式
。标准格式有11位
标识符,扩展格式有29位
**标识符。
- 数据帧
- 远程帧
- 错误帧
数据帧
包括
1 | 帧起始 | 表示帧的开始,产生一个bit的显性电平。 |
---|---|---|
2 | 仲裁段 | 表示帧的优先级, 由标识符(ID)和传送帧类型(RTR)组成。 |
3 | 控制端 | 表示数据的字节数,由6个bit构成(4bits为DLC 0~8bytes)。IDE位用于表明此帧是标准帧还是扩展帧。 |
4 | 数据段 | 数据的具体内容,可发送0~8 个字节的数据。 |
5 | CRC段 | 用于校验传输是否正确。 |
6 | ACK段 | 表示确认是否正常接收。 |
7 | 帧结束 | 表示此帧结束。 |
远程帧
用于请求数据
不包括数据区
错误帧
Transmitted when a node detects a fault and cause all other nodes to detect a fault
包括
- 错误标志
- 错误分割(留时间给其他设备发错误帧)
如何使用
配置波特率
配置过滤器:CAN过滤器有两种工作模式:
列表模式
与掩码模式
。- 列表:列出ID名字,过滤器通过判断报文ID与其是否一致来决定是接受还是舍弃这份报文。
- 掩码:通过确定ID特定位的值来判断报文的接受与丢弃。
之后就可以发送和接收了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Xiao's Blog!