zoukankan      html  css  js  c++  java
  • CAN总线数据解析(Intel格式)

    1.1 CAN总线输出数据表头:
    解析CAN数据的相关基础知识:

    1.channel:CAN通道。

    2.Identifier:在某个时间点发送一条报文,该报文的ID号,将这个ID号对照解析文件,从而进行报文解析。
    3.Is Standard:判断是否是标准帧。
    CAN的消息帧格式有两种,分别是CAN2.0A标准帧(standard)和CAN2.0B扩展帧(extended)。
    标准帧用11个bit表示ID编号(identifier),注意11bit的ID是一个有符号数,需要用偏置(offset)补偿。【扩展帧用?个bit表示ID编号,是否是有符号数?】
    4.Is Data:判断帧类型是否是数据帧。
    帧的类型有四种类型,分别是数据帧、远程帧、错误帧、超载帧。
    远程帧:接收数据的节点可以通过发送远程帧要求源节点发送数据,远程帧没有数据场。
    错误帧:是6个连续的显性位。
    5. Is TX:判断是接收节点还是发送节点(TX)
    6.DLC:数据长度码,占4个bit,可包括0~8Byte,本例中为8Byte。
    7~14:报文(包含8个字节),十六进制表示。
     
     
    1.2 解析原始数据的公式
    【程序中的ui表示Ui(unsigned int)无符号整型数据,不同公司的CAN解析有各自的解析规则,需要解析文件】
    CAN总线发送出来的原始数据是有符号数,需要转化为无符号数,所以需要加一个offset偏置量。factor是调整(状态参数物理值和报文数值)的比例系数
    offset含义:将有符号数值(比如100 0000 0000)转化为无符号数(000 0000 0000)需要+1024。
    【100 0000 0000(bin)=1024 (dec)
    CAN总线传输出的数据是 100 0000 0000 ,但是第一个bit表示的是符号位,1表示负号,其真正想传输的是0(十进制的数值0),所以需要解析的时候需要+1024;
    100 0000 0000 是11个bit,这是由于标准帧表示ID的bit个数是11;【那么扩展帧的偏置是29bit,偏置+2^29?】
    factor含义:
    按照老师程序的编写方式:解析规律= 状态值 = (报文解析出的十进制数值 + offset) * factor (有空可以再去看看一般的CAN解析公式)
    【程序中的/10,/8,/100  对应的就是 factor=0.1,0.125,0.01】
  • 相关阅读:
    1062 Talent and Virtue (25 分)
    1083 List Grades (25 分)
    1149 Dangerous Goods Packaging (25 分)
    1121 Damn Single (25 分)
    1120 Friend Numbers (20 分)
    1084 Broken Keyboard (20 分)
    1092 To Buy or Not to Buy (20 分)
    数组与链表
    二叉树
    时间复杂度与空间复杂度
  • 原文地址:https://www.cnblogs.com/feynmania/p/13290434.html
Copyright © 2011-2022 走看看