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