CAN总线常见的两种编码格式(Intel/Motorola)
在汽车电子行业的开发或者测试中,我们经常会看到CAN总线信号的常见的两种编码格式:Intel格式与Motorola格式。
讲解这两种格式之前,我们先来了解一些大端模式和小端模式,会对后面理解这两种编码格式有很大的帮助。
一、大端模式和小端模式
大端模式(Big-Endian):高字节存低地址,低字节存高地址
小端模式(Little-Endian):高字节存高地址,低字节存低地址
单纯的从概念描述上可能比较难理解,我们来看一个实例,十六进制数---0x12345678,分别来看一下这个数据在两种模式下的存储情况:
数据0x12345678,共四个字节,从高字节到低字节依次为12、34、56、78
将这个数据以大端的方式存放在数组data[3]中为:
将这个数据以小端的方式存放在数组data[3]中为:
二、Intel格式与Motorola格式
1.当一个信号的长度不超过1个字节(8bit),且不跨字节时,Intel格式与Motorola格式编码结果是完全一样的,如图:
2.当一个信号的长度不超过1个字节(8bit),但是跨字节时,Intel格式与Motorola格式编码结果是不一样的
MSB:高位字节 LSB:低位字节
Motorola格式(类似于大端模式):从高地址开始存储
Intel格式(类似于小端模式):从低地址开始存储