Freescale LIN總線(xiàn)應用開(kāi)發(fā)平臺
如果對應于幀頭的特定ID,從節點(diǎn)沒(méi)有反饋,則檢查idActiveList[16]判斷對應的位置是否為1,如果為1,則表明有節點(diǎn)被除去。同時(shí),LostNode()函數執行,節點(diǎn)的LED燈顯示有節點(diǎn)丟失。
2.從節點(diǎn)的軟件結構
首先,配置寄存器(CONFIG),I/O寄存器和定時(shí)器寄存器初始化。初始化完成后,進(jìn)入主程序While(1)循環(huán)。對GR60和EY16,程序中的定時(shí)由時(shí)間基準模塊來(lái)實(shí)現(TBM)。由于QY4沒(méi)有時(shí)間基準模塊(TBM),所以程序中的定時(shí)由定時(shí)器來(lái)實(shí)現。由于不同的從節點(diǎn)上,時(shí)鐘不一樣,所以每個(gè)從節點(diǎn)執行完1個(gè)主程序程序環(huán)的時(shí)間也不一樣。程序中我們用#Define定義了2個(gè)時(shí)間周期:按一次開(kāi)關(guān)的時(shí)間(按下和跳起,60毫秒)和持續按住開(kāi)關(guān)的時(shí)間(3秒)。對于第3個(gè)定時(shí)(LIN總線(xiàn)持續5秒沒(méi)有活動(dòng),則進(jìn)入睡眠)在文件Slave.cfg中定義。
是LIN從節點(diǎn)的主軟件結構。當完成初始化工作,進(jìn)入主循環(huán)之后,如果LIN總線(xiàn)5秒鐘沒(méi)有活動(dòng),則進(jìn)入睡眠狀態(tài);如果由,則查看按鍵(開(kāi)關(guān))的類(lèi)型判斷是進(jìn)入ID節點(diǎn)的配置模式,還是進(jìn)入正常模式。如果是正常模式,則將數據(DATA)寫(xiě)入LED,若進(jìn)入ID節點(diǎn)配置模式,則配置ID,然后將ID寫(xiě)入LED。
是按鍵軟件流程圖。首先判斷按鍵有沒(méi)有被按下,如果有則計算按鍵被按下的時(shí)間。如果按鍵按下的時(shí)間超過(guò)3秒,則進(jìn)入節點(diǎn)ID配置模式(從0到4,然后再到0,反復進(jìn)行);如果按鍵按下的時(shí)間為60毫秒,則數據(DATA)加1,然后用這個(gè)數據給LED顯示,同時(shí)反饋給主節點(diǎn)(主節用LED顯示此數據)。
3.LIN底層驅動(dòng)軟件
前面的兩個(gè)小節我們講到了應用軟件。本小節將對LIN底層的驅動(dòng)函數作一個(gè)介紹。首先是數據類(lèi)型,主要的數據類(lèi)型是無(wú)符號8位數,惟一的一個(gè)16位數,用來(lái)給地址變量(指針)。在驅動(dòng)函數中,主要用到的常量有兩種,一種用來(lái)標示LIN總線(xiàn)的驅動(dòng)狀態(tài),一種用來(lái)表示LIN傳輸過(guò)程中消息幀的狀態(tài)。由于篇幅有限,與作者聯(lián)系可獲得免費的軟件源程序??偨Y
Freescale的LIN節點(diǎn)通信演示平臺,提供了一個(gè)很好的LIN控制開(kāi)發(fā)平臺。用戶(hù)可以基于此LIN控制開(kāi)發(fā)平臺的軟件(驅動(dòng)程序)和硬件非常簡(jiǎn)單的編寫(xiě)自己的應用程序(利用CODEWARRIOR集成開(kāi)發(fā)環(huán)境),然后利用此平臺的底層驅動(dòng)軟件和硬件環(huán)境,利用與PC相連的通信接口,燒寫(xiě)程序,并進(jìn)行調試。
參考文獻
1 Motorola Inc.,MC68HC908EY/D,09/2003.
2 Motorola Inc.,MC68HC908QY/D,09/2003.
3 Motorola Inc.,MC68HC908GZ/D,09/2003.
4 Motorola Inc.,MC68HC908GR/D,09/2003.
5 Motorola Inc.,MC9S12C32,2003.
6 LIN Protocol 1.3.
7 AN2573/D,2003.
8 AN2396/D,2003.
評論