Android系統下CAN總線驅動程序的設計與實現
摘要 嵌入式操作系統Android下CAN驅動程序的實現,不但需要在Linux內核中添加CAN驅動設備,還要實現Android HAL層的調用。以S5PV 210微處理器與CAN總線控制器MCP2515為例,分析了Android設備驅動原理,以及Android下CAN設備驅動程序的開發流程和方法,設計了相關的重要數據結構和代碼,實現了CAN總線的驅動程序開發。
關鍵詞 CAN總線;Android;Android HAL
Android是指“機器人”,由Google公司于2007年11月5日發布的基于Linux平臺的開源手機操作系統,是首個為移動終端打造的真正開放和完整的移動軟件。Android是一個開放平臺,在嵌入式移動設備領域里具有良好的應用前景,但在不同的設備上往往有不同的硬件支持,要在Android中添加這些硬件應用,不是單純地在Linux內核中添加驅動模塊,還必須在用戶空間和應用框架中添加對應的支持。
控制器局域網絡(Control Area Network,CAN),屬于現場總線的范疇,是德國Bosch公司在20世紀80年代初,為解決現代汽車中眾多的控制與測試儀器之間的數據交換而開發的一種串行數據通信總線。由于CAN總線的數據通信具有良好的可靠性、實時性和靈活性,CAN已經在汽車工業、航空工業、工業控制等領域中得到了廣泛應用。文中以S5PV210微處理器為硬件平臺,通過擴展其SPI接口,實現了CAN控制器MCP 2515在Android操作系統下的驅動程序開發。
1 系統硬件結構
系統數據的收發都要通過CAN總線模塊,CAN總線模塊設計框圖如圖1所示,S5PV210通過SPI接口實現與MCP2515的連接,MCP2515的CAN輸入輸出引腳和CAN總線收發器MCP2551接在一起,構成一個完整的CAN總線收發模塊。
1.1 S5PV210的SPI接口
接口協議(Setial Peripheral Interface,SPI)是Motorola公司推出的一種使用時鐘線和2根數據線傳輸數據的同步串行協議,即串行外設接口。S5PV210提供的SPI接口主要用于S5PV210與外圍低速器件之間進行同步串行數據傳輸,可以實現全雙工通信,傳輸速度最高可達5 Mbit·s-1。SPI總線接口主要用于主從分布式的通信網絡,由4根線即可完成主從之間的數據通信,這4根線分別為:時鐘線(SCLK)、數據輸入線(SI)、數據輸出線(SO)和片選線(CS),其中CS的有效與否完全由主控制器決定,時鐘信號也由主控制器發出。
1.2 CAN控制器MCP2515
MCP2515是Microchip生產的一款獨立CAN協議控制器。MCP2515支持CAN1.2、CAN2.0A、主動和被動CAN2.0B等版本的協議,能夠發送和接收標準和擴展報文,它還同時具備驗收過濾以及報文管理功能。圖2為MCP2515的結構框圖。該器件主要由3個部分組成:(1)CAN協議引擎。(2)為器件及其運行進行配置的控制邏輯和SRAM寄存器。(3)SPI協議模塊。
1.3 CAN收發器MCP2551
MCP2551是一個可容錯的高速CAN器件,可作為CAN協議控制器和物理總線接口。MCP2551可為CAN協議控制器提供差分收發能力,它完全符合ISO—11898標準,且滿足24 V電壓要求。它的工作速率達1 Mbit·s-1。
評論