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