zoukankan      html  css  js  c++  java
  • Motorola和Intel格式报文解析的区别

     

    结论:无论用的Motorola,还是Intel格式,只在单个信号跨字节时解析才有区别。

    先看下Vector的CANoe中dbc编辑器是如何呈现报文的:

    图1 CAN报文中byte与bit顺序

    从图中可以看出,每行表示一个字节的8个位,从右到左依次是bit0, bit1...bit7. 一共有8行,从上到下依次是byte0, byte1...byte7.这也正是每帧CAN报文数据能容纳的最多数据——8个byte,共64个bit(bit位序从byte0到byte7依次递增排序)。

    关于CAN报文,用的Motorola,还是Intel格式,只在单个信号跨字节时解析才有区别。

    举例:

    (1)配置CAN报文信号为Motorola格式

    图2 Motorola格式信号
    图3 Motorola格式信号排布

     报文中相应信号用上述Motorola格式解析出来的结果如下:

    图4 Motorola格式信号解析

     (2)配置CAN报文信号为Intel格式

    图5 Intel格式信号
    图6 Intel格式信号排布

    报文中相应信号用上述Intel格式解析出来的结果如下:

    图7 Intel格式信号解析 

    对比:

    a)跨字节信号ins_p和Treserved:两种格式解析结果不同。按照byte0, byte1...的先后顺序,Motorola格式大字节在前,小字节在后,如ins_p解析为0x3884。而Intel格式小字节在前,大字节在后,如ins_p解析为0x438。(此处的大字节指的是高位bit所在的字节,小字节指的是低位bit所在的字节)

    b)非跨字节信号VolAD:两种格式解析的结果相同,都是0xC0,也即192。

    注:

    a)需要明确:8个byte的顺序不变,每个byte中8个bit的顺序不变,如图1所示。

    b)从图3和图6的箭头方向可以看出每个信号不同格式下bit的排布顺序。其中红色箭头指向首尾bit,白色箭头指向跨字节的衔接bit。红色箭头的首为LSB(Least Significant Bit),尾为MSB(the Most Significant Bit)。

  • 相关阅读:
    Control Group(CGroup)资源限制组
    系统安全之用户认证
    如何在Linux中禁用和挂起休眠
    ubuntu18 virtualbox启动失败Kernel driver not installed (rc=-1908)
    C# Winform 多线程更新界面UI控件,解决界面卡顿问题(转)
    【573】LaTeX相关技巧
    程序计时函数
    王炸!!Spring 终于对 JVM 动手了…
    ThreadLocalRandom 是线程安全的吗?
    Spring Boot 应用可视化监控,一目了然!
  • 原文地址:https://www.cnblogs.com/isAndyWu/p/10788952.html
Copyright © 2011-2022 走看看