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