摘 要:針對民用航空領域的應用需求,設計了一款基于S3C6410微處理器的RFID讀卡器,給出了具體的硬件設計方案,詳細介紹了LINUX下應用程序與底層驅動的工作流程,最后印證了系統運作的可靠性。該讀卡器支持多種協議,支持LINUX操作系統,支持3.5寸觸摸屏,可通過串口或者GPRS與上位機的SQL數據庫通信,與其他采用單片機或者低主頻ARM 微處理器的讀卡器相比具有方便、快捷、用戶體驗良好等特性。
0 引 言
隨著國民經濟的發展,航空日益成為民眾所依賴的出行方式。航空貨運物流系統中食品與商品種類多,安全要求高,交接手續繁雜,急需引入信息化管理,RFID技術的出現對于改善民航的物流管理有著積極的意義。航空物流RFID系統主要由電子鉛封、讀卡器和數據庫管理系統等組成,現有的讀卡器一般采用單片機系統(如STC89C54或MC9S12X128)或者STM32系列,它們的普遍缺點是:主頻偏低,不支持操作系統且用戶體驗不佳,滿足不了航空貨運物流系統日益增長的應用需求。在航空食品和免稅商品物流系統中,地勤與空乘人員急需操作簡潔,反應快速,可隨時通過無線網絡上傳數據的手持讀卡器,從而加快物流速度,提高機場工作人員的工作效率。基于上述情況,提出了基于S3C6410的高主頻的射頻識別讀卡器,它支持linux操作系統,支持多線程操作,操作人員可在多個讀卡界面之間切換并且能隨時隨地通過GPRS上傳數據到SQL數據庫,不但大大降低機場工作人員的工作量,而且提高了航空物流的速度與安全性。
1 硬件設計方案
系統結構如圖1所示,系統采用了S3C6410微處理器,其穩定主頻667MHz,最高主頻可達800MHz.S3C6410集成了許多外設接口,如Camera接口、TFT-24bit真彩色LCD控制器、電源系統管理、4通道UART、32通道DMA、4通道定時器、通用I/O 端口、IIS、IIC 總線接口、USBHost、USB OTG(480Mbps)、3通道SD/MMC Host控制器及時鐘生成PLL等。此外采用90nm COMS工藝,低功耗、簡潔、精美且全靜態設計使得S3C6410非常適合對成本、功耗敏感的應用。
系統的顯示屏采用3.5寸24位的真彩觸摸TFT-LCD,分辨率最大可支持到1 024×1 024,本讀卡器的分辨率為480×272.存儲外設為Nand flash、24C64 和SD 卡。
LINUX的Uboot、內核、開機圖片和文件系統都燒寫到nand flash中,24C64用于保存觸摸屏校正參數和從電子標簽中讀取的數據。系統啟動時S3C6410自動從24C64中讀取校正參數,避免每次開機需校正屏幕。SD卡用于儲存從電子鉛封中讀取的數據,此外漢字庫與圖標等文件也存放在SD卡中。
圖1 系統結構
S3C6410通過串口1驅動GPRS模塊(SIM300)與上位機SQL數據庫進行無線通信。SIM300是一款3頻段GSM/GPRS模塊,可在全球范圍內的EGSM 900 MHz、DCS 1 800MHz、PCS 1 900MHz 3種頻率下工作,能夠提供GPRS多信道類型多達10個,并且支持CS-1、CS-2、CS-3和CS-4 4種GPRS編碼方案。
射頻芯片采用NXP公司的CLRC632,它是一款針對13.56MHz的高集成無線射頻IC,其管腳與MF RC500,MF RC530,MF RC531和SL RC 400均可兼容,可讀寫符合ISO14443協議的Type A 卡和Type B 卡,以及支持ISO15693協議的電子標簽。RC632提供了2種通信接口,第一種是8位并口,可直接與各種8位微處理器相連接;第二種是SPI接口,本系統即采用了此通信接口,微處理器通過設置RC632的寄存器,便可實現射頻操作(見圖2)。
圖2 CL RC632原理
SPI總線是一種高速全雙工同步的通信總線,它使用4條線:MISO 、MOSI、SCLK 、CS.其主要特點有:同時發出和接收串行數據;可當主機或從機工作;提供頻率可編程時鐘;發送結束中斷標志;寫沖突保護;總線競爭保護等。
RC632總共有32個管腳,其中管腳22、23、24是寄存器的地址線,管腳13到管腳20是8位并口。當采用SPI方式通信時,管腳13即數據位D0為MISO,管腳22即地址線A0為MOSI,管腳24即地址線A2為CLK,D1到D7則不需要連接。此外,必須把A1與NCS置底電平,NRD與NWR置高電平。
RC632與天線之間通過3個管腳DTX1、DTX2與DRX進行通信,它會把調制好的13.56MHz的能量載波通過管腳DTX1、DTX2傳輸到天線,而天線則通過管腳DRX把13.56MHz的能量載波傳輸回RC632.一般采用2種方法將天線連接到RC632:直接匹配天線和50Ω匹配天線,本系統采用直接匹配的方式將RC632與天線連接,其包括了EMC低通濾波器、天線匹配電路與接收電路。
系統采用PCB環形天線,它的EMC低通濾波器用于濾除高頻電磁波,天線匹配電路與天線進行阻抗匹配,以獲得最大的功率傳輸,增大讀卡距離,同時避免阻抗失配可能對電路造成的損害。經實測,天線的可操作距離為5~10cm.
2 讀卡器的軟件設計
讀卡器的操作系統采用較穩定的Linux-2.6.30內核,文件系統為yaffs文件系統。軟件分為2大部分:第一部分為QT程序,主要的功能是接受用戶指令與顯示圖形界面;第二部分為射頻驅動程序,它負責對RC632的寄存器進行操作,實現具體的射頻功能。在編寫射頻讀卡的QT應用程序之后,需把它整合到yaffs文件系統中。此外,還需裁剪linux內核,把驅動配置到內核配置單中。
13.56MHz的RFID的典型協議有ISO-14443協議和ISO-15693協議。其中ISO-14443協議是非接觸式IC卡標準協議,應用較ISO-15693更為廣泛。下面將主要分析ISO-14443協議,ISO-14443由4個部分組成:第一部分,物理特性;第二部分,頻譜功率和信號接口;第三部分,初始化和防碰撞算法;第四部分,通訊協議。
ISO-14443通信協議的報文可分成6個部分,如表1所示:
表1 ISO-14443通信協議的報文數據格式
報頭2字節固定為AABB,報文長度代表從節點到校驗的字節之和,命令代碼指明了報文的功能。常用的命令代碼有0201(尋卡)、0202(防沖突)、0203(選卡)、0206(密碼認證)、0208(讀卡)、0209(寫卡)等。
QT程序在啟動后,會在TFT-LCD上顯示一系列的圖標,分別為:尋卡、讀卡、寫卡、選擇扇區等,在尋卡中包含了防沖突檢測,它是讀卡過程中非常重要的一個步驟[10-11]。其流程如下,當用戶點擊TFT-LCD的尋卡圖標時,觸摸屏上會產生觸摸點的位置信號,系統根據觸摸點坐標判斷其所在的區域,依據觸摸的區域,系統做出相應的處理。QT程序把ISO-14443協議中的尋卡(0201),防沖突(0202),選卡(0203),密碼認證(0206)都整合到1個子函數中。尋卡過程分為4個過程:
1)搜索標簽-即S3C6410通過串口1發送指令給RC632操作其中的相關寄存器進行天線操作。無論是否有卡在天線感應區域范圍之內,RC632都會S3C6410回傳相關數據,S3C6410收到數據后,進行判斷是否有電子標簽存在。
2)防沖突-如果在天線感應區域范圍之內有一張以上的電子標簽,那么讀卡器就需要進行選擇。RC632在防沖突后,將給微處理器傳回4個字節的電子標簽卡號。
3)選擇標簽-如果要對相應卡號的電子標簽進行操作,則微處理器就會發送命令給RC632,使其選中這張電子標簽,以便進行下一步的讀寫操作。
4)密碼認證-只有擁有正確密碼的讀卡器才能讀寫相應的電子標簽。
選擇扇區后,如進行讀卡操作,則直接點擊讀卡圖標,如進行寫卡操作的話,則還需用輸入數據。如圖3所示。
圖3 QT應用程序流程。
射頻驅動程序在收到應用程序發來的報文后,除去報頭與校驗位,通過case語句判斷命令代碼,然后跳轉到相應的子程序,子函數通過驅動程序對RC632的寄存器進行設置,實現射頻操作。讀取RC632數據時,MOSI線的第一個字節設置模式與地址:具體來說,第0位設置為1,第1位到第6位為地址,第7位設置為0,MOSI線的其他字節均按此設置。MISO線的第一個字節保留,從第二個字節開始為從RC632返回的數據。對RC632寫入數據時,MOSI線的第一字節代表地址,從第二個字節開始為寫入RC632的數據,此時MISO線沒有啟用。
驅動RC632時,首先設置信道校驗寄存器,把第0,2比特置1(啟用奇偶校驗與CRC校驗),然后把控制寄存器第3比特清零(不啟用數據加密),接著把0x07寫入比特結構控制器,最后一步是設置發射控制寄存器為0x03(在管腳TX2發送未經調制的13.56MHz連續載波)。設置完寄存器狀態后,RC632便可與電子鉛封進行通信。通信過程中的寄存器操作包含以下幾個步驟:
1)置中斷使能與中斷請求2個寄存器為0x07,設置命令寄存器,取消當前命令;2)清除FIFO BUF讀寫指針(即FIFO[6:0]清零),設置中斷使能寄存器,提示標志位已經設置;3)依次把數據寫入到FIFO BUF,把數據從天線發送出去;4)設置命令寄存器,激活要執行的命令,讀取錯誤標志寄存器,判斷是否出錯;5)等待規定的時間,然后讀FIFO BUF,把天線接收的數據讀取到RC632中;6)置中斷時能與中斷請求2個寄存器為0x07,設置控制寄存器,停止定時器,設置命令寄存器,取消當前命令。
3 現場實測和上位機SQL數據庫通信實例
在現場測試過程中,分別對電子鉛封的扇區4,扇區16,扇區33各進行了20次操作,其中只有對扇區16的一個寫過程中出現了數據丟失情況,這顯示出了穩定的操作性能。表2是讀卡器對貨物的電子鉛封進行數據寫入與讀出的實例:先寫入內容11220003,然后再把寫入的內容讀出,其操作的扇區為04號,設置密碼為FFFFFFFFFF.
讀出的數據傳輸到上位機SQL 數據庫后的界面如圖4所示。
表2 現場實測電子鉛封讀寫數據。
圖4 數據傳輸到數據庫的界面
4 結 論
提出了基于S3C6410微處理器的高主頻射頻識別讀卡器,實現了讀卡、寫卡與上傳數據到數據庫的功能。實驗表明該讀卡器具有良好的穩定性與實用性,適合于民用航空領域的應用。該讀卡器系統對于民航物流的發展提高具有一定的參考價值和應用前景。
評論
查看更多