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