在搞清楚FullCAN和BasicCAN是什么之前,我們先搞清楚一些基礎(chǔ)的東西。
1基礎(chǔ)概念
提示:
以英飛凌tc397為例。
1、CAN Module與CAN Node、Controller關(guān)系
平時(shí)開發(fā)中,我們說(shuō)“ECU有3路CAN”,所說(shuō)的“3路CAN”和3個(gè)Node是一個(gè)概念嗎?不是。
我們平時(shí)所討論的“3路CAN”是指3個(gè)網(wǎng)絡(luò),也就是我們口語(yǔ)中的“節(jié)點(diǎn)”。而芯片手冊(cè)中(Data Sheet),一個(gè)CAN Module會(huì)包含多個(gè)Node(即,Controller),比如:tc397芯片手冊(cè)中,MCMCAN Module包含3個(gè)CAN Module,每個(gè)Module包含4個(gè)Controller,如下所示:
2、Controller與Transceiver關(guān)系
在實(shí)際的使用中,一個(gè)Controller必須配一個(gè)Transceiver,Controller+Transceiver = Network,如下所示:
所以,平時(shí)我們口語(yǔ)話的“3路CAN”是指3個(gè)Controller+Transceiver組合,即:3個(gè)Network,我們也常稱“3個(gè)節(jié)點(diǎn)”。
3、Controller與RAM資源關(guān)系
剛提到,tc397中,一個(gè)CAN Module包含4個(gè)Controller,那每個(gè)Controller可以發(fā)送多少個(gè)CAN報(bào)文,接收多少個(gè)CAN 報(bào)文呢?這里我們要區(qū)分硬件緩存CAN報(bào)文的數(shù)量和項(xiàng)目中要求發(fā)送/接收?qǐng)?bào)文的數(shù)量。
硬件緩存CAN報(bào)文數(shù)量:是指上層請(qǐng)求發(fā)送報(bào)文或者接收?qǐng)?bào)文時(shí),CAN驅(qū)動(dòng)最多能緩存的數(shù)量;
項(xiàng)目中要求發(fā)送/接收?qǐng)?bào)文的數(shù)量:是指當(dāng)前節(jié)點(diǎn)要外發(fā)或者接收的報(bào)文數(shù)量。
以發(fā)送CAN報(bào)文數(shù)量為例:需求要求當(dāng)前網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送100幀CanID不同的CAN報(bào)文,實(shí)際該節(jié)點(diǎn)CAN Controller可用的硬件發(fā)送緩存區(qū)最多有32,意味著底層硬件最多緩存32幀發(fā)送報(bào)文,如果超過32幀發(fā)送請(qǐng)求,則會(huì)因沒有硬件空間緩存而發(fā)送請(qǐng)求失敗。
tc397 CAN Module資源情況如下所示:
提示:上圖中的Controller用“Node”表示。由上可以看出,3個(gè)CAN Module,共12個(gè)Controller。
每個(gè)CAN Module(4個(gè)Controller)共用32個(gè)發(fā)送Tx Buffer,共用64個(gè)Rx Buffer
...對(duì)于發(fā)送緩沖區(qū),每個(gè)CAN Module共用32個(gè)發(fā)送緩沖區(qū),如果配置了32個(gè)TxDedicated Buffer,則沒有空間配置Tx FIFO/Queue;同理,每個(gè)CAN Module雖然有兩個(gè)Rx FIFO,如果配置了64個(gè)Rx Dedicated Buffer,則沒有空間配置Rx FIFO。一般,Tx/Rx Buffer配置時(shí),會(huì)混合使用,比如:
20TxDedicated Buffer+ 12Tx Queue
40 RxDedicated Buffer+ 24Rx FIFO
MCMCAN
Module RAM區(qū)地址劃分順序如下所示:
4、Mailbox、HRH、HWObject
Mailbox:郵箱,就是CAN驅(qū)動(dòng)所具有的接收緩存區(qū)和發(fā)送緩存區(qū),接收緩存區(qū)和發(fā)送緩存區(qū)均在RAM區(qū)。
HWObject:硬件對(duì)象,包含CAN ID、DLC、Data等信息的RAM區(qū)。
HRH:Hardware Receive Handle,接收句柄,一個(gè)HRH表示一個(gè)接收HWObject。
HTH:HardwareTransmitHandle,發(fā)送句柄,一個(gè)HTH表示一個(gè)發(fā)送HWObject。
Mailbox、HWObject、HRH、HTH、Controller、Transceiver之間的關(guān)系如下所示:
2FullCAN和BasicCAN是什么?
首先,F(xiàn)ullCAN和BasicCAN是CanIf模塊配置的參數(shù)。
BasicCAN:一個(gè)HWObject(HardwareObject)可以處理一段范圍的CanId
FullCAN:一個(gè)HWObject(HardwareObject)只能處理單個(gè)CanId
Autosar對(duì)FullCAN和BasicCAN的解釋如下所示:
將上述的解釋進(jìn)一步細(xì)化,如下所示:
使用工程中,MCAL會(huì)將緩存區(qū)分配成FIFO和Dedicated Buffer,F(xiàn)IFO和Dedicated Buffer的區(qū)別是什么呢?Dedicated Buffer區(qū)域,Hareware Object與HRH/HTH一一對(duì)應(yīng),而FIFO區(qū)域,一個(gè)HRH/HTH對(duì)應(yīng)多個(gè)HarewareObject,如下所示:
3為什么需要FullCAN和BasicCAN?
在CAN驅(qū)動(dòng)層,可以通過過濾的方式,過濾一段范圍內(nèi)的CanID,也就是說(shuō):會(huì)有一段范圍內(nèi)的報(bào)文接收進(jìn)來(lái),但是接收進(jìn)來(lái)的這一段范圍的報(bào)文并不一定都是上層所需要的,怎么辦呢?用軟件方式,再過濾一遍,由CanIf過濾所需要的CAN報(bào)文。因此,提出了FullCAN和BasicCAN的概念。
比如:HRH對(duì)應(yīng)BASIC CAN類型,接收CanID范圍:0x10~0x18,CanIf根據(jù)過濾算法,在0x10~0x18范圍內(nèi)過濾出需要的0x10、0x13、0x14、0x16、0x17送給上層,而其余的丟棄,如下所示:
CanIf可以通過設(shè)置CANIF_HRHRANGE_LOWER_CANID、CANIF_HRHRANGE_UPPER_CANID方式過濾,也可以通過設(shè)置CANIF_HRHRANGE_BASEID、CANIF_HRHRANGE_MASK進(jìn)行過濾。
不同報(bào)文類型如何選擇FULL CAN/BASICCAN
應(yīng)用報(bào)文:一般選擇配置成FULL CAN類型,對(duì)于應(yīng)用報(bào)文,一般不需要緩存,使用最新接收的數(shù)據(jù)即可。對(duì)于發(fā)送的應(yīng)用報(bào)文,都配置成FULL CAN類型需要一個(gè)前提:上層需要發(fā)送應(yīng)用報(bào)文數(shù)量<底層硬件緩存區(qū)數(shù)量。比如:底層發(fā)送硬件緩存區(qū)數(shù)量為32,節(jié)點(diǎn)需要發(fā)送的應(yīng)用報(bào)文數(shù)量為50,顯然無(wú)法將50個(gè)發(fā)送的應(yīng)用報(bào)文都配置成FULL CAN。遇到這種情況,一般會(huì)將重要的應(yīng)用報(bào)文配置成FULL CAN,而其他要發(fā)送的應(yīng)用報(bào)文配置成BASIC CAN。這樣配置以后,硬件緩存區(qū)的分配就需要混用,即:Dedicated Tx Buffers+Tx Queue或者 Dedicated Tx Buffers+Tx FIFO,如下所示:
如上圖,ID3、ID15、ID20是比較重要的應(yīng)用報(bào)文,配置成FULL CAN,分別給一個(gè)獨(dú)立的緩存區(qū);其他的緩存區(qū)則配置成BASIC CAN,即:一個(gè)緩存區(qū)可以發(fā)送多個(gè)不同CanID的報(bào)文。
診斷報(bào)文:一般選擇配置成BASIC CAN類型(結(jié)合FIFO Buffer使用),因?yàn)樵\斷報(bào)文的請(qǐng)求/響應(yīng)不能錯(cuò)序,需按照順序處理,且數(shù)據(jù)不能覆蓋;
網(wǎng)絡(luò)管理報(bào)文:接收一般選擇配置成BASIC CAN類型,因?yàn)橐粋€(gè)節(jié)點(diǎn)一般會(huì)要求接收一段范圍的網(wǎng)絡(luò)管理報(bào)文,eg:0x500~0x53F。發(fā)送網(wǎng)絡(luò)管理報(bào)文配置成FULL/BASIC CAN類型均可,如果資源夠用,推薦配置成FULL CAN類型,因?yàn)槊總€(gè)節(jié)點(diǎn)的發(fā)送網(wǎng)絡(luò)管理報(bào)文唯一;
標(biāo)定報(bào)文:一般選擇配置成FULL CAN類型。
審核編輯:劉清
-
CAN
+關(guān)注
關(guān)注
57文章
2744瀏覽量
463615 -
RAM
+關(guān)注
關(guān)注
8文章
1368瀏覽量
114641 -
fifo
+關(guān)注
關(guān)注
3文章
387瀏覽量
43648
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論