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