前言
對于CAN協(xié)議,一般有兩種編碼格式:Intel 格式和Motorola格式。使用CAN之前,首先知道協(xié)議采用的是哪種格式,否則傳輸?shù)臄?shù)據(jù)有可能不是想要的效果。那么這兩種編碼格式有什么區(qū)別呢?
一、CAN總線數(shù)據(jù)傳輸?shù)囊?guī)則
一般情況下,對于一個字節(jié)的傳輸,CAN通常是先傳輸該字節(jié)的低位(Lsb),然后傳輸其高位(Msb)。如果一個信號只有8位(一個字節(jié)),那么不管是采用Intel 格式還是Motorola格式,它的傳輸方式都是一樣的;如果要傳輸?shù)男盘柍^一個字節(jié),那么就要看采用哪種編碼方式了。
如下圖所示,CAN協(xié)議定義CAN報文BYTE與BIT順序。(來自Vector的CANNoe中bdc編輯器)
正常情況下,每幀CAN數(shù)據(jù)最大有8個字節(jié)(如上圖中從上到下依次是BYTE0,BYTE1……BYTE7),在解析信號時,只有在這個信號跨字節(jié)時,才能看到Intel 格式和Motorola格式的差別。
二、Intel 格式和Motorola格式
1.區(qū)別
Intel 格式:同小端,低字節(jié)在前
Motorola格式:同大端,高字節(jié)在前
2.舉例
假如要現(xiàn)在有個車速的數(shù)據(jù)要傳輸,車速數(shù)據(jù)是0x3FF,這個車速按字節(jié)拆開就是高字節(jié)為0x03、低字節(jié)為0xFF。
如果采用Intel 格式編碼:傳輸順序如下圖,0xFF在BYTE0中傳輸,0x03在BYTE1中傳輸。
所以解析的車速V =( BYTE1<<8 + BYTE0)。(下圖綠色代表1,白色代表0)
如果采用Motorola格式編碼:傳輸順序如下圖,0x03在BYTE0中傳輸,0xFF在BYTE1中傳輸。
所以解析的車速V =( BYTE0<<8 + BYTE1)。文章來源:http://www.zghlxwxcb.cn/news/detail-410142.html
總結(jié)
對于一個信號在同一個字節(jié)內(nèi)傳輸,那么不管采用Intel 格式還是Motorola格式,傳輸方式是一樣的。
對于一個信號是需要跨字節(jié)傳輸?shù)?,那么采用Intel 格式的話,低字節(jié)在前,采用Motorola格式的話,高字節(jié)在前。文章來源地址http://www.zghlxwxcb.cn/news/detail-410142.html
到了這里,關(guān)于CAN報文格式—Intel與Motorola的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!