在汽車電子行業的開發或者測試中,我們經常會看到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格式(類似於小端模式):從低地址開始存儲