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