基于ARM嵌入式系統的RFID驅動程序設計
RFID的讀操作將判斷緩沖區是否為空,如果不為空,就把緩沖區中的數據拷貝至數據結構中,并拷至用戶空間中;如果為空,進程就會進入休眠,等待緩沖區接收到數據后,進入中斷喚醒進程。在進入ShockBurst RX模式后,本地nRF905會自動監測空中的信息,在nRF905發現和接收頻率相同的載波時,載波檢測信號CD被置高,觸發中斷,在中斷例程中只是延時一段時間,等待nRF905接收到有效的目的地址時,地址匹配信號置高。當nRF905接收到有效的數據包后,數據準備就緒信號DR會觸發中斷,進入中斷例程,進入Standby模式,把接收到的數據通過SPI接口讀入緩沖區內,而后喚醒進程,把緩沖區中的數據拷貝至用戶空間中。當所有的數據被讀出后,nRF905的AM和DR信號線會被置低。nRF905切換到下一狀態。RFID驅動接收流程如圖3所示。
3 功能測試
測試主要分為兩部分,首先對底層SPI接口部分做調試,然后在此基礎上,對RFID驅動進行功能測試。
硬件方面,利用S3C2440開發板的擴展口與nRF905模塊連接,擴展口中用到的GPIO資源在驅動程序中設置。另外,用RS-232串口將開發板與PC機相連,利用內核的Debug功能[6],通過PC機對開發板進行控制,完成驅動加載和應用程序的運行。
軟件方面,基于S3C2440的嵌入式平臺需要完整的嵌入式操作系統資源,包括bootloader、kernel、文件系統。在對內核進行剪裁后,將bootloader、kernel、文件系統通過JTAG燒入NAND Flash中。操作系統要保證內核、文件系統以及硬件設備正常運行。
3.1 SPI驅動功能測試
SPI驅動測試主要測試驅動程序的功能,測試驅動程序是否能夠控制SPI主從設備正確傳輸數據。資源包括S3C2440開發平臺、Linux2.6.12內核源碼包、示波器。系統運行后,加載SPI驅動,運行編寫的上層應用程序進行數據收發,并用示波器觀察波形。
3.2 RFID驅動程序測試
在測試SPI驅動成功后,重新啟動系統,待系統成功運行后,加載RFID驅動程序,運行為其編寫的測試程序,測試兩nRF905無線模塊間的通信。S3C2440的GPIO資源與nRF905信號線對應關系如下:
Power down模式: PWR GPJ12
載波檢測輸出: CD GPG6
地址匹配輸出: AM GPB9
數據就緒輸出: DR GPG1
SPI主入從出: MISO GPE11
SPI主出從入: MOSI GPE12
SPI時鐘: SCK GPE13
SPI使能: CSN GPB10
發送/接收使能: TRX_CE GPG8
發送/接收模式: TX_EN GPG0
兩個平臺分別為:ARM9嵌入式平臺和MSP430單片機平臺。在ARM平臺運行發送測試程序,而單片機平臺運行接收測試程序,之后交換。接收端將接收到發送端發送的數據,并將數據在PC機終端顯示。
當ARM發送端的應用程序中發送字符串“aaaaaaaa”時,單片機端的nRF905模塊接收寄存器中收到轉換后的ASCII碼“97”;當ARM端作為接收端而單片機作為發送端時,ARM端運行接收程序后,在用戶空間即顯示終端上顯示了接收到的數據“abcd…”。表明此RFID驅動程序成功實現了控制nRF905無線收發器進行數據接收傳輸的功能。
本文介紹了一種基于ARM9 S3C2440嵌入式平臺擴展RFID驅動的設計方案,設計了硬件擴展電路和相應的驅動程序,通過了并測試。實現了嵌入式平臺間的RFID短距離即時通信功能。嵌入式RFID驅動將推動RFID技術在應用領域中的發展,將會支持更多的射頻硬件,根據此驅動可以開發更多的應用程序,滿足多種需求。
參考文獻
[1] 董麗華.RFID技術與應用[M].北京:電子工業出版社,2008.
[2] SAMSUNG.S3C2440A user’s manual reltminary[OL]. Revision0,2004.
[3] NORDIC Semiconductor.nRF905_rev1_1[OL].2004:1-36.
[4] 劉淼.嵌入式系統接口設計與Linux驅動程序開發[M]. 北京:北京航空航天大學出版社,2006.
[5] Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman. Linux device drivers[M].Sebastopol:O’Reilly Media,2005.
[6] BOVERT D P,MARCO C著.深入理解Linux內核(第三版)[M].陳莉君,張瓊聲,張宏偉,譯.北京:中國電力出版社,2007.
評論