CAN
一、CAN矩阵列表基础信息
CANID决定了是否处理这条报文,如果同一CAN总线上其他device协议中有一样的CANID,那就会进行处理(报文过滤器),标准帧ID长度为11位,扩展帧长度为29位
CANID越小优先级越高------仲裁机制
lenth(长度):数据场最多为8字节
Byte order:报文字节的排列顺序,CAN报文字节排列顺序有两种
- Intel的顺序排列:intel格式与小端格式一样,低地址代表低字节,高地址代表高字节
- Motorola的顺序排列:Motorola与大端格式一样,低地址代表高字节,高地址代表低字节,但是他有两种表达方式他们的数据结构是一样的,只是表达方式不一样
- Motorla_LSB:LSB的起始位是从低字节开始
- Motorla_MSB:MSB的起始位是从高字节开始
Data type(数据类型)
- Unsigned Inerger(无符号整形)如:Uint8,Unit16表示8位或16位无符号数
- Signed Interger(有符号整形)如Int8、Int16补码表示
- Float、Double(浮点型)
- Boolean(布尔类型):常用1位来表示开关量
- ENumeration(枚举):用数值表示特定状态如:0=off、1=on
- String(字符串):将连续字节按ASCII编码解析
Resolution(精度):比例因子,如1/256;指的是每个最低有效位(LSB)代表的物理量大小,开始值每变化1对应物理量变化多少
offset(偏移量):平移量;表示当原始值为0时,对应的物理值是多少
- 如果offset=0,说明原始值0就代表物理量0
- 如果offset≠0,说明原始值对应着一个非0的物理值
标准转换公式:物理值=原始值*分辨率+偏移量
物理值范围/总线值,换算前后范围
signal value Desilption:枚举值信号含义
反算公式:Hex=(物理值-偏移量)/精度
二、1939协议(扩展)
PGN(参数组编号):
用来唯一标识一条报文里包含哪些参数(信号)的一个数字
CANID的进一步细化和结构化
CANID拆解如下:
- 优先级 3位
- 扩展数据页(EDP) 1位
- 数据页(DP) 1位
- PDU格式(PF)8位;用于判断是PDU1还是PDU2
- PDU特定域(PS)8位;含义由PF的值决定
- 源地址(SA)8位;发送这条报文的节点地址
PGN组成规则如下:
高位:DP+EDP 2位
中位:PF 8位
低位:PS 8位
- 若PF<240,格式为PDU1,为点对点,此时PS代表目标地址(DA),PGN的低八位强制为0
- 若PF≥240,格式为PDU2,为广播,此时PS是组扩展帧(GE)完整保留作为PGN的低8位
公式为:(DP,EDP)+PF+(GE)