CAN网络矩阵详解,摩托罗拉(Motorala)大端序,英特尔(Intel)小端序

一、从单片机角度讲解(CAN报文发送端)

 此图是客户的诊断需求规范,其字节表就是Motorala字节序,关键点讲解:

1. #1代表第一个字节,在程序中存放时,就是在CAN数组的0下标内存中,ECU发送数据给上位机时就会首先发送字节31(且从0x31的高位bit到低位bit进行发送),再发送0x01\0xFF……

2. 该#1#8字节,ECU开发人员会以#5#8这4个字节代表内存地址这个数据,MSB代表地址内存的高字节端,LSB代表低字节端,很明显,在该段字节串中,很明显,MSB在前,LSB在后,所以属于大端序(motorala),MSB端的字节会最早被ECU发送至上位机,发送每个字节的每个bit时,高位bit会被首先ECU发送至上位机。

二、从上位机角度讲解(CAN报文接收端)

 此图是CAN网络CAN矩阵核心图,上位机接收后的每个bit数据都有在图中占据一个坑位,以接收前8个字节为例子,接收本章节图一中诊断需求规范表的#1~#8,关键点讲解:

1. 申明:VECTOR工具接收到该8个字节后,如上图的字节及位排列核心图是VECTOR工具的一种常用配置

2. 解释核心图:Byte0就相当于,客户需求文档截图中的#1,Byte1即#2,依次类推。Bit0代表#1字节,即SID的第0bit,位序号排为0

3. 解释核心图:ECU通信与VCTOR工具通信时,始终位序号7是在Byte0字节中最先被接受的,然后接收位序号6,直至位序号0,然后接收位序号15,始终位序号15也是在Byte1字节中最先被接受的,然后接收位序号14,直至位序号8;Byte0最先被接收,然后接收Byte1,依次直至接收Byte7

4. 对于数据[memoryAddress],可以网络矩阵的方式描述,VECTOR解读数据时会这样解读:数据长度31个bit,起始字节为Byte7,起始位为56,因为[memoryAddress]是按照motorala字节序排列,所以,其数据在核心矩阵图中的范围是从下至上,从起始位56至32,即LSB至MSB

5. 虚构一个数据xxx,若网络矩阵表注明了xxx数据的条件是:数据长度12bit,motorala序,起始位为19>>>>那么得出分析结果,该数据在矩阵图中的位置是19~14,从LSB到MSB,位序号依次为19、20、21、22、23、8、9、10、11、12、13、14,这12个bit(第0bit为矩阵序号19,第11bit为矩阵序号14)即组成xxx数据的值

6. 虚构一个数据xxx,若网络矩阵表注明了xxx数据的条件是:数据长度14bit,intel序,起始位为19》》那么得出分析结果,该数据在矩阵图中的位置是19~38,从LSB到MSB,位序号依次为19、18、17、16、31、30、29、28、27、26、25、24、39、38,这12个bit(第0bit为矩阵序号19,第13bit为矩阵序号38)即组成xxx数据的值

7. 不要受矩阵图中的矩阵序号所干扰,该矩阵序号是按照每个字节的0bit位到7bit位依次递增的,而不是按照VECTOR所接收bit的先后顺序进行排序的,实际上VECTOR接收的bit先后顺序是:7、6、5、4、3、2、1、15、14、13、12、11、10、9、8、23、22……

8. 按照矩阵图读取数据包的真实数据时,是按照VECTOR接收bit的先后顺序进行数据组包,得到的数据包真实值,ECU发送时始终是首先发送高字节,且首先发送高字节中的高位(因为在嵌入式ECU中总是motorala序,低地址存放高字节,高地址存放低字节,发送数据时,高位总是被先发送,高位的权值更大,更重要)

CAN网络矩阵详解,摩托罗拉(Motorala)大端序,英特尔(Intel)小端序相关推荐

  1. 大端序(big-edian)和 小端序(little-endian)

    在各种计算机体系结构中,对于字节.字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特.字节.字.双字等等)应该以什么样的顺序进行传送.如果不达成一致的规 ...

  2. 低字节+高字节+字地址+大端序+小端序全辨析

    低字节+高字节+字地址+大端序+小端序全辨析 @(组成原理) 本次总结这个知识点的起因是一道相对寻址题中把这个知识点作为基本条件,然而其他的问题我都明白,却卡在了低字节为字地址的存放方式中.因此有必要 ...

  3. 小端模式和大端模式_大端序和小端序

    字节存储顺序主要分为大端序(Big-endian)和小端序(Little-endian),区别如下 Big-endian:高位字节存入低地址,低位字节存入高地址 Little-endian:低位字节存 ...

  4. 22 大端序和小端序

    分析下列程序,输出结果(AC) #include<stdio.h> #include<stdlib.h> union X{int32_t a;struct {int16_t b ...

  5. 什么是大端序和小端序,为什么要有字节序

    什么是字节序 字节序,又称端序或尾序(英语中用单词:Endianness 表示),在计算机领域中,指电脑内存中或在数字通信链路中,占用多个字节的数据的字节排列顺序. 在几乎所有的平台上,多字节对象都被 ...

  6. python正则匹配空格+数字+空格_详解Python中正则匹配TAB及空格的小技巧

    详解Python中正则匹配TAB及空格的小技巧 发布时间:2020-10-15 08:38:48 来源:脚本之家 阅读:94 作者:杰瑞26 在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任 ...

  7. Golang的大端序和小端序

    一 什么是字节序 字节(Byte)是计算机世界的计量单位,比如,一部电视剧是10G个字节(1GB),一张图片是1K个字节(1KB).这些数据量有多有少,大多数时候,一个字节肯定是装不下的,这个时候我们 ...

  8. C语言学习笔记11-结构体(struct、结构作为函数参数、结构数组)、联合体/共用体typedef; union(大、小端序)

    C语言-结构类型 程序中的数据都需要有类型支撑,当数据很复杂时(不是简单的一个值,如时间信息:年月日时分秒6个数据需要作为一个整体),我们需要声明一个新的结构类型来描述这种复合的数据(可以包含很多不同 ...

  9. 逆向工程核心原理学习笔记(九):小端序标记法2

    程序地址:http://t.cn/RXnT2pD 我们用OD查看小端序. 代码如下: 我们编译,然后拖进OD查看,直接跳到0x401000入口点. 我们看到几个位置: 由此处我们可以推测后面括号中存放 ...

  10. 数据格式:大端模式(Big-endian)和小端模式(Little-endian)

    有没有想过当定义一个变量的时候,这个变量在内存中是如何存放的呢?这就涉及到数据格式中的大端模式(Big-endian)和小端模式(Little-endian) 大端模式(Big-endian):高位字 ...

最新文章

  1. centos vim配置高亮语法和格式化粘贴
  2. UVa307 - Sticks(DFS+剪枝)
  3. 看样子还是:JSP和JAVA
  4. c++如何将int数组中的值取出*号运算符_如何用动态规划巧妙解决 “双十一” 购物时的凑单问题?羊毛薅起来!!!...
  5. 【剑指offer】面试题32:从上到下打印二叉树(java)
  6. 【OpenCV 例程200篇】17. 两张图像的渐变切换
  7. 系统损坏sql数据库备份_如何识别损坏SQL备份文件
  8. 计算机关机电路,实用电脑电源关机全断电电路
  9. bzoj 2938: [Poi2000]病毒(AC自动机)
  10. ssh相关命令Linux,Linux SSH常用命令 [长期更新]...
  11. linux内存分段管理,Linux內存管理之分段機制
  12. 我的oh my zsh主题
  13. 郝斌数据结构-线性表之单链表程序(C语言版)
  14. Blender2.9入门篇
  15. 如何成为优秀的驱动开发工程师
  16. 计算机领域顶级会议列表
  17. 从一篇防范钓鱼邮件的通知说起
  18. 集群出现块丢失,块找回,以及相关底层原理,fsck等
  19. 台式计算机读不到u盘怎么回事,u盘读不出来怎么办?Win7电脑无法识别设备如何解决?...
  20. C#学习笔记(三)—–C#高级特性:dynamic

热门文章

  1. 学习-Java类和对象之对象组合之求圆柱体积
  2. workerman gatawayworker 定时器
  3. 腾讯下载的qlv格式视频转换mp4格式方法
  4. 用C++实现文件压缩
  5. linux服务篇-Squid服务
  6. JAVA练习216-整数的英语表示
  7. 图层蒙版和图层剪贴路径_PS蒙版解读:快速蒙版、图层蒙版、剪贴蒙版、矢量蒙版(二)...
  8. STM32F401 / STM32F411 WeAct Studio 资料以及翻版说明
  9. 4个终于被破译的世界级密码
  10. html5 手机剪切板,H5页面在手机端如何实现复制粘贴板功能