CAN协议

CAN

一、CAN矩阵列表基础信息

CANID决定了是否处理这条报文,如果同一CAN总线上其他device协议中有一样的CANID,那就会进行处理(报文过滤器),标准帧ID长度为11位,扩展帧长度为29位

CANID越小优先级越高------仲裁机制

lenth(长度):数据场最多为8字节

Byte order:报文字节的排列顺序,CAN报文字节排列顺序有两种

  1. Intel的顺序排列:intel格式与小端格式一样,低地址代表低字节,高地址代表高字节
  2. Motorola的顺序排列:Motorola与大端格式一样,低地址代表高字节,高地址代表低字节,但是他有两种表达方式他们的数据结构是一样的,只是表达方式不一样
  3. Motorla_LSB:LSB的起始位是从低字节开始
  4. Motorla_MSB:MSB的起始位是从高字节开始

Data type(数据类型)

  1. Unsigned Inerger(无符号整形)如:Uint8,Unit16表示8位或16位无符号数
  2. Signed Interger(有符号整形)如Int8、Int16补码表示
  3. Float、Double(浮点型)
  4. Boolean(布尔类型):常用1位来表示开关量
  5. ENumeration(枚举):用数值表示特定状态如:0=off、1=on
  6. String(字符串):将连续字节按ASCII编码解析

Resolution(精度):比例因子,如1/256;指的是每个最低有效位(LSB)代表的物理量大小,开始值每变化1对应物理量变化多少

offset(偏移量):平移量;表示当原始值为0时,对应的物理值是多少

  • 如果offset=0,说明原始值0就代表物理量0
  • 如果offset≠0,说明原始值对应着一个非0的物理值

标准转换公式:物理值=原始值*分辨率+偏移量

物理值范围/总线值,换算前后范围

signal value Desilption:枚举值信号含义

反算公式:Hex=(物理值-偏移量)/精度

二、1939协议(扩展)

PGN(参数组编号):

用来唯一标识一条报文里包含哪些参数(信号)的一个数字

CANID的进一步细化和结构化

CANID拆解如下:

  1. 优先级 3位
  2. 扩展数据页(EDP) 1位
  3. 数据页(DP) 1位
  4. PDU格式(PF)8位;用于判断是PDU1还是PDU2
  5. PDU特定域(PS)8位;含义由PF的值决定
  6. 源地址(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)

无标签
评论区
头像
文章目录