CAN總線在嵌入式數(shù)控系統(tǒng)中的應(yīng)用
驅(qū)動(dòng)程序是應(yīng)用程序與硬件之間的一個(gè)中間軟件層。它使某個(gè)特定的硬件響應(yīng)一個(gè)定義良好的內(nèi)部編程接口,同時(shí)完全隱蔽了設(shè)備的工作細(xì)節(jié)二用戶通過(guò)一組標(biāo)準(zhǔn)化的調(diào)用來(lái)完成相關(guān)操作,這些標(biāo)準(zhǔn)化的調(diào)用和具體設(shè)備驅(qū)動(dòng)無(wú)關(guān),而驅(qū)動(dòng)程序的任務(wù)就是把這些調(diào)用映射到具體設(shè)備對(duì)于實(shí)際硬件的特定操作上團(tuán),其流程圖如圖4所示。
總線報(bào)文通過(guò)中斷進(jìn)行接收,此中斷在接收緩沖器滿時(shí)被觸發(fā)。報(bào)文傳送至某一接收緩沖器,與該接收緩沖器對(duì)應(yīng)的中斷標(biāo)志寄存器的RXNIF位將置1。一旦緩沖器中的報(bào)文處理完畢,MCU就必須將該位清除以接收下一條報(bào)文。該控制位提供的鎖定功能確保在MUC尚未處理完上一條報(bào)文前,MCP2515不會(huì)將新的報(bào)文載入接收緩沖器。在程序中通過(guò)使能CAN 1TTC寄存器中的RXXIE位,來(lái)使能接收中斷,提高了系統(tǒng)工作效率。
驅(qū)動(dòng)程序的接口主要分為三部分:
(1)與內(nèi)核通信的接口。
內(nèi)核通過(guò)主設(shè)備號(hào)將設(shè)備驅(qū)動(dòng)程序和設(shè)備文件相連,而構(gòu)成驅(qū)動(dòng)的一個(gè)重要數(shù)據(jù)結(jié)構(gòu)就是Cle_operaLions內(nèi)核就是通過(guò)這個(gè)結(jié)構(gòu)來(lái)訪問(wèn)驅(qū)動(dòng)程序的。它包含指向驅(qū)動(dòng)程序內(nèi)部大多數(shù)函數(shù)指針,它的每一個(gè)成員名稱對(duì)應(yīng)著一個(gè)系統(tǒng)調(diào)用。程序如下:
(2)與系統(tǒng)啟動(dòng)代碼的接口,完感沙寸設(shè)備的初始化。
在Linux初始化或驅(qū)動(dòng)動(dòng)態(tài)加載的時(shí)候要調(diào)用初始化函數(shù),它包括以下內(nèi)容:
①初始化設(shè)備相關(guān)的參數(shù):
?、谧?cè)設(shè)備;
③中斷注冊(cè)。
(3)與設(shè)備的接口,完成對(duì)設(shè)備的讀寫等操作。
外部數(shù)據(jù)和命令通過(guò)5I}}腳傳送到器件中,且數(shù)據(jù)在SCK時(shí)鐘信號(hào)的上升沿傳送進(jìn)去。MCP257 5在SCK的下降沿通過(guò)510引腳將數(shù)據(jù)傳送出去。
4 結(jié)語(yǔ)
本項(xiàng)目實(shí)現(xiàn)了上位機(jī)將鍵盤、觸摸屏等設(shè)備的輸入數(shù)據(jù)利用CAN總線有選擇性的對(duì)下位機(jī)進(jìn)行傳輸,系統(tǒng)中各MCU間及MCU與PLC間可相互通訊。實(shí)際運(yùn)行證明了該系統(tǒng)能夠較好完成六軸聯(lián)動(dòng)通信系統(tǒng)的要求。由于選擇了總線控制,系統(tǒng)得以數(shù)字化,使系統(tǒng)可靠性得到大大提高,同時(shí)簡(jiǎn)化方案節(jié)約了成本。由于CAN總線具有高傳輸速率及高可靠性,在數(shù)控機(jī)床上必將有著廣闊的前景。
評(píng)論