基于CAN/LIN息線的汽車混合網(wǎng)關(guān)設(shè)計
3.1 主監(jiān)控程序
如圖4所示,在主控制器AT91SAM7A3中劃出4塊緩沖區(qū)BUF1~BUF4,每一塊緩沖區(qū)中的數(shù)據(jù)都有明確而且唯一的來源和目的地。主監(jiān)控程序主要通過循環(huán)依次查詢BUF1~BUF4中的存儲情況,來決定是否發(fā)送數(shù)據(jù)以及將數(shù)據(jù)發(fā)送給誰。
當(dāng)高速CAN網(wǎng)絡(luò)上有數(shù)據(jù)需要接收的時候,通過高速CAN模塊接收數(shù)據(jù),對接收到的數(shù)據(jù)進(jìn)行處理后,將其存到緩沖區(qū)BUF1中,再由低速CAN模塊將其發(fā)送到低速CAN網(wǎng)絡(luò)上;當(dāng)LIN網(wǎng)絡(luò)上有數(shù)據(jù)需要接收時,通過LIN總線模塊接收數(shù)據(jù),對接收到的數(shù)據(jù)進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換(LIN格式的報文幀轉(zhuǎn)換為CAN 格式的報文幀),再將其存入到緩沖區(qū)BUF4中,并由低速CAN模塊將其發(fā)送到低速CAN網(wǎng)絡(luò)上;當(dāng)?shù)退貱AN網(wǎng)絡(luò)上有數(shù)據(jù)需要接收時,先接收數(shù)據(jù),然后判斷數(shù)據(jù)是發(fā)送到高速CAN總線,還是發(fā)送到LIN總線,根據(jù)判斷結(jié)果對數(shù)據(jù)進(jìn)行處理,存入相應(yīng)的緩沖區(qū)(如數(shù)據(jù)是發(fā)往高速CAN總線,則存入BUF2,否則存入BUF3)。
3.2 數(shù)據(jù)的發(fā)送
數(shù)據(jù)的發(fā)送由發(fā)送子程序完成,網(wǎng)關(guān)中主要有3個發(fā)送子程序,分別對應(yīng)兩路CAN控制器以及一路 LIN發(fā)送器。高速CAN的發(fā)送子程序負(fù)責(zé)發(fā)送BUF1中的數(shù)據(jù),LIN的發(fā)送子程序負(fù)責(zé)發(fā)送BUF3中的數(shù)據(jù),低速CAN的發(fā)送子程序負(fù)責(zé)發(fā)送BUF2 和BUF4中的數(shù)據(jù)。數(shù)據(jù)的發(fā)送采用查詢總線狀態(tài)的發(fā)送方式:查詢總線的忙閑情況,如果總線忙,則退出發(fā)送子程序,進(jìn)行其他的工作;如果總線空閑,則發(fā)送數(shù)據(jù)。發(fā)送完1幀數(shù)據(jù)后,再檢查與之相應(yīng)的緩沖區(qū)的狀態(tài)。如果為空,則退出發(fā)送子程序;如果非空,則再檢查總線的忙閑狀態(tài)。如果忙,則退出發(fā)送子程序;如果空閑,則發(fā)送數(shù)據(jù)。然后再開始新一輪的數(shù)據(jù)查詢發(fā)送過程。圖5為高速CAN向低速CAN發(fā)送的流程,其他的發(fā)送子程序過程與此類似。
3.3 數(shù)據(jù)的接收
評論