CAN signal Layout怎么那么繞?
1、CANoe工程的新建
打開CANoe軟件,在工具欄的”File”中點(diǎn)擊”New”,雙擊選擇創(chuàng)建的模板 ,再保存創(chuàng)建的cfg工程文件。如下:
2、Channel Mapping
每個(gè)CAN網(wǎng)絡(luò)都有所屬的Channel,稱之為Application Channel,如果在Real BUS的環(huán)境下要映射到相應(yīng)的硬件接口單元及相應(yīng)的Transceiver。下圖為網(wǎng)絡(luò)上的各個(gè)網(wǎng)絡(luò)(Comfort和Powertrain),及其網(wǎng)絡(luò)中的Can控制器節(jié)點(diǎn)和DBC文件。
通過(guò)Hardware-Channel Mapping實(shí)現(xiàn)邏輯上通道和物理通道的映射,當(dāng)你發(fā)現(xiàn)trace上沒(méi)有報(bào)文時(shí),第一檢查一下你通過(guò)DB9的接插件是否插在正確的硬件通道上了。
3、CAN DBC中報(bào)文及信號(hào)的屬性
CAN通信中物理層中一幀由以下幾個(gè)部分組成:
-
報(bào)文ID -
報(bào)文數(shù)據(jù) -
報(bào)文長(zhǎng)度
Identifier type 指定 CAN 報(bào)文標(biāo)識(shí)符是 Standard 還是 Extended 類型。默認(rèn)值為 Standard。標(biāo)準(zhǔn)標(biāo)識(shí)符是 11 位標(biāo)識(shí)符,擴(kuò)展標(biāo)識(shí)符是 29 位標(biāo)識(shí)符。
Remote frame 將 CAN 報(bào)文指定為遠(yuǎn)程幀。
Start bit 指定數(shù)據(jù)的開始位。開始位是從報(bào)文數(shù)據(jù)的開頭計(jì)數(shù)的最低有效位。開始位必須是 0 到 63 之間的整數(shù)。信號(hào)的起始位,一般來(lái)講,主機(jī)廠在定義整車CAN總線通信矩陣時(shí),其每一個(gè)信號(hào)都從其最低位開始填寫,
Length (bits) 指定信號(hào)在報(bào)文中占用的位數(shù)。長(zhǎng)度必須是 1 到 64 之間的整數(shù)。Data type 指定信號(hào)如何解釋分配的位中的數(shù)據(jù)。從下列各項(xiàng)中選擇:
-
signed(默認(rèn)值)
-
unsigned
-
single
-
double
4、信號(hào)在報(bào)文中的Layout問(wèn)題
CAN 報(bào)文中的比特流有兩方面要注意,第一是字節(jié)序,第二是bit numbering。字節(jié)序也叫大小端,決定如何去解析一系列字節(jié)來(lái)組裝成有意義的數(shù)據(jù)。即小端支持從低字節(jié)向高字節(jié)去排布信號(hào)。
即大端支持高字節(jié)向低字節(jié)去排布信號(hào)。
注意:字節(jié)內(nèi)的位的重要性(Significant)的順序是一定的,不隨兩種格式的變化而變化。
bit numbering,即報(bào)文中支持兩種方式的計(jì)數(shù)方式:
-
從右向左
這種情況的報(bào)文一般是Byte0_bit7的位最先被發(fā)送,然后是bit6,,,最后是Byte7_bit56位被發(fā)送。這種方式在汽車工業(yè)中是最通用的方式,為各大主機(jī)廠采用,在Vector的DBC中也按照這種排布方式去布局信號(hào)的index。
-從左向右
這種情況的報(bào)文一般是Byte0_bit0的位最先被發(fā)送,然后是bit1,,,最后是Byte7_bit63位被發(fā)送。相應(yīng)地和上述兩種bit numbering對(duì)應(yīng)的就是兩種message的Layout,
1)字節(jié)中的位序?yàn)閺挠业阶?)字節(jié)中的位序?yàn)閺淖蟮接?/p>
通常在DBC中選擇Byte order時(shí),可以選擇以下任一選項(xiàng):LE:其中字節(jié)順序?yàn)?little-endian 格式 (Intel?)。在這種格式中,從開始位(最低有效位)到最高有效位(具有最高位索引)進(jìn)行計(jì)數(shù)。例如,如果以 little-endian 格式打包數(shù)據(jù)的一個(gè)字節(jié)0x12(默認(rèn)其他信號(hào)為0),并且開始位為 29,則數(shù)據(jù)位表類似于下圖(從最低有效位到最高地址計(jì)數(shù)的 Little-Endian 字節(jié)順序)所示。則我們接收到的8字節(jié)的Can報(bào)文消息為:00 00 20 01 00 00 00 00,字節(jié)2和字節(jié)3的layou如下表所示:
Bytes | 2 | 3 |
---|---|---|
Hex | 0x20 | 0x01 |
Bits | 0100 0010 | 0000 0001 |
BE:其中字節(jié)順序?yàn)?big-endian 格式 (Motorola?)。在這種格式中,從開始位(最低有效位)到最高有效位進(jìn)行計(jì)數(shù)。例如,如果以 big-endian 格式打包數(shù)據(jù)的一個(gè)字節(jié),并且開始位為 29,則數(shù)據(jù)位表類似于下圖(從最低有效位到最低地址計(jì)數(shù)的 Big-Endian 字節(jié)順序)所示。
則我們接收到的8字節(jié)的Can報(bào)文消息為:00 01 20 00 00 00 00 00,字節(jié)1和字節(jié)2的layou如下表所示:
Bytes | 1 | 2 |
---|---|---|
Hex | 0x01 | 0x20 |
Bits | 0000 0001 | 0010 0000 |
總結(jié):Intel格式編碼:信號(hào)的低位(lsb)將被放在低字節(jié)(LSB)的低位。信號(hào)的起始位就是低字節(jié)的低位,從低字節(jié)向高字節(jié)去排布信號(hào)。Motorola格式編碼 :信號(hào)的低位(lsb)將被放在高字節(jié)(MSB)的低位。這樣,信號(hào)的起始位就是高字節(jié)的低位,從高字節(jié)向低字節(jié)去排布信號(hào)。
AUTOSAR ASILD級(jí)別安全軟件模塊的安全機(jī)制介紹
AUTOSAR模式管理經(jīng)驗(yàn)總結(jié)
使用AURIX TOM模塊生成交流電機(jī)的PWM驅(qū)動(dòng)
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!