車身中央控制器的設計與實現(xiàn)
作為分布式車身控制系統(tǒng)的主節(jié)點,BCM與其它節(jié)點通過LIN總線進行通訊,采用LIN物理層收發(fā)器TJA1021和MCU片上外設UART完成LIN接口電路的設計,如圖5所示。TJA1021是Philips(編者注:現(xiàn)在是NXP公司)的LIN物理層芯片,波特率高達20kbit/s,實現(xiàn)總線波形整形和電平轉(zhuǎn)換功能[3],具有很高的抗電磁干擾性和極低的電磁發(fā)射,可以滿足汽車環(huán)境的苛刻要求。它內(nèi)部集成從機端電阻,在從機節(jié)點應用中無須再外接電阻便可以實現(xiàn)LIN總線的阻抗匹配,BCM是LIN主節(jié)點,如圖5所示,需要外接1k主機端電阻到VEE。
本文引用地址:http://www.biyoush.com/article/114479.htmLIN總線數(shù)據(jù)采取SCI格式,將TJA1021的TXD和RXD連接到MCU的UART發(fā)送和接收引腳上,便可以在UART上以軟件的形式實現(xiàn)LIN的數(shù)據(jù)鏈路層。由于LIN在物理上為單線形式,發(fā)送和接收都是在LIN線上進行的,所以發(fā)送也會觸發(fā)接收,這樣便可以將其數(shù)據(jù)鏈路層的實現(xiàn)統(tǒng)一到UART的接收處理函數(shù)中來。該部分可以根據(jù)LIN幀的格式以狀態(tài)機的形式實現(xiàn)[4]。
BCM做為車身控制系統(tǒng)的LIN主節(jié)點,以時間片輪轉(zhuǎn)的方式調(diào)度著LIN報文的傳輸,當時間片到達時,BCM發(fā)送包括間隔場、同步場和PID在內(nèi)的幀頭[5],然后由各個節(jié)點根據(jù)該PID決定接收數(shù)據(jù)場還是發(fā)送數(shù)據(jù)場。時間片的輪轉(zhuǎn)是基于調(diào)度表實現(xiàn)的,定義如下形式的結(jié)構(gòu)體實現(xiàn)對調(diào)度表條目的管理。
typedef struct
{
uchar handle;
uchar pid;
uchar mode;
uchar *data;
uchar datalen;
uchar ticks;
}l_sch_table_item;
其中handle為調(diào)度表條目索引,每次時間片輪轉(zhuǎn)時加一,輪轉(zhuǎn)到調(diào)度表表尾時切換到調(diào)度表表頭繼續(xù)輪轉(zhuǎn),pid為LIN報文的Protected ID,mode表示該幀數(shù)據(jù)場是由BCM發(fā)送還是由其他節(jié)點發(fā)送,data為數(shù)據(jù)場,datalen為數(shù)據(jù)場長度,ticks定義時間片長度即該幀和下一幀的時間間隔。
LIN幀調(diào)度表為l_sch_table_item結(jié)構(gòu)體數(shù)組,根據(jù)當前調(diào)度表條目的ticks決定時間片計時時間,超時發(fā)生時,切換當前時間片,同時切換調(diào)度表條目,這樣便實現(xiàn)了LIN報文的輪轉(zhuǎn)調(diào)度。
結(jié)語
本文針對某車型分析了其車身控制系統(tǒng)結(jié)構(gòu),從輸入信號檢測、輸出控制和LIN通訊三個方面,描述了其車身中央控制器的設計實現(xiàn),該控制器經(jīng)裝車試驗,運行良好,功能穩(wěn)定,有很高的實用價值。
評論