基于MF RC632的專用讀卡器軟件系統設計
文章出處:http://5052h112.com 作者:于興晗 李正熙 李君 沈保鎖 人氣: 發表時間:2011年10月23日
引 言
隨著北京市政交通一卡通工程和門禁系統的普及,射頻技術在消費電子、通信設備、工業控制等領域也取得了飛速的發展。因此在硬件設備大部分相同的情況下,軟件系統就成了該設備性能好壞的關鍵。本文主要介紹一款專用射頻讀卡器的軟件系統的設計及實現。
1 系統概述
本系統主要作為一種專用的訓練器材。除具備通用的Mifare卡的讀寫器功能外,還可作為一種專用的訓練評估工具。例如將該設備安裝在跑道的周圍,并將MifareOne卡安裝在測試者的鞋上,每個訓練者都有自己的ID號。當他從起跑線起跑時,安裝在起跑線的專用讀卡器就會將自己的設備ID號和當時的時間寫入測試者的MifareOne卡中;當經過下一個基站時讀卡器會將自己的設備ID和當時的時間寫入測試者的Mirare One卡中,同時會將測試者的ID號、姓名等個人信息(包括經過上個測試基站時間)都讀進設備中保存。由于Mifare One卡共有16個扇區,每個扇區又分為4塊、每塊又有16個字節。除了系統使用的外,用戶還可以使用的有48×16字節。而通過Mifare One卡存儲的數據均不大,只占用一塊存儲區。換句話說,Mifare One卡的數據存儲區可以存儲48次,當超過48次時就從前面覆蓋數據。所以,在Mifare one卡中存儲的永遠是最近48個基站的信息。訓練結束后,就可以通過主站將各個基站的數據收集起來以評估測試者的信息。而主站和基站之間通信可以采用的方式也是多樣的。當主站和基站的距離比較近時,可以采用RS232、RS485,為提高通信質量也可以采用工業總線的方式,如CAN總線、I2C總線或One Wire總線等。當距離比較遠時,也可采用無線通信的方式,如GSM等。除此之外,各個基站還可以通過打印機將數據輸出。
2 系統硬件框圖及工作原理
系統硬件框圖如圖1所示。主板上電后,讀取存儲器中的系統設置,然后根據其中的設置初始化整個系統,包括本設備的ID號、主站、從站、開機時間、關機時間、數據的存儲方式等。
3 系統的軟件結構及特點
整個系統的軟件結構框圖如圖2所示。
整個系統主要是由核心控制單元P89LPC932、與Mifare One卡通信的MFRC632、與PC機通信的RS232、提供時間基準的實時時鐘芯片PCF8563和存儲系統設置數據的存儲器AT45DB021等。因此針對本系統整個軟件系統的開發也主要分為系統啟動、硬件驅動、任務調度等。
4 系統軟件設計及實現
4.1 啟動代碼
在本系統中,主要指在系統剛一上電后先將所有的外圍電路和CPU本身初始化成靜止狀態,然后根據系統的要求將所有的外圍電路和CPU本身進行初始化設置。設置完畢后再將CPU的中斷源打開。在本系統中,系統一上電首先執行Init_System()函數。部分代碼如下:
程序執行完Init_System()函數后執行RcChipReady函數。此函數的功能是初始化MF RC630芯片。
4.2 硬件驅動
4.2.1 PCF8563驅動
由于本芯片是一款標準的I2C總線設備,所以硬件驅動實際上就是標準的I2C總線控制。由于篇幅有限,這里就不介紹了。
4.2.2 MF RC632驅動
MF RC632是MF RC500芯片的升級產品,所以MFRC630的大部分寄存器與MF、RC500均相同,它們對Mifare One卡的操作流程也基本相同。下面介紹對Mifare One卡的操作流程。
(1)Mifare One卡的操作流程
整個系統的工作由對Mifare卡操作和系統后臺處理兩大部分組成。由于篇幅有限,本文只對Mifare卡的操作流程進行簡單介紹。Mifare One卡的操作可以分為以下幾項:
①復位請求。當一張Mifare卡片處在卡片讀寫器天線的工作范圍之內時,程序員控制讀寫器便向卡片發出REQUEST all(或REQUEST std)命令。卡片的ATR將啟動,將卡片Block 0中的卡片類型(TagType)號共2個字節傳送給讀寫器,建立卡片與讀寫器的第一步通信聯絡。如果不進行“得位請求”操作,讀寫器對卡片的其他操作將不會進行。
②反碰撞操作。如果有多張Mifare卡片處在卡片讀寫器天線的工作范圍之內,PCD將首先與每一張卡片進行通信,取得每一張卡片的序列號。由于每一張Mifare卡片都具有其唯一的序列號,決不會相同,因此PCD根據卡片的序列號來保證一次只對一張卡操作。該操作PCD得到PICC的返回值為卡的序列號。
③卡選擇操作。完成了上述2個步驟之后,PCD必須對卡片進行選擇操作。執行操作后,返回卡上的SIZE字節。
④認證操作。經過上述3個步驟,在確認已經選擇了一張卡片時,PCD在對卡進行讀/寫操作之前,必須對卡片上已經設置的密碼進行認證。如果匹配,才允許進一步的讀/寫操作。
⑤讀/寫操作。對卡的最后操作是讀、寫、增值、減值、存儲和傳送等操作。
(2)MF RC500軟件開發包移植
在本系統中,主要是將標準的MF RC500軟件開發包進行移植來完成MF RC632驅動的編寫。在本系統中使用的是SPI總線,所以只要將MF RC500標準軟件開發包中對寄存器讀/寫的函數改成SPI總線的讀/寫函數即可。在本系統中主要是增加了SpiSendByte()和SpiReByte()函數,同時修改了 ReadRawRc(uchar Address)和WriteR-awRc(uchar Address,uchar value)函數。部分代碼如下:
4.2.3存儲器驅動
在本系統中主要是指AT45DB021的驅動。因為AT45DB021也是標準的I2C總線設備,所以硬件驅動實際上就足標準的I2C總線控制。由于篇幅有限,這里就不介紹了。
4.2.4其他電路驅動
其他電路驅動在本系統中主要是指一些硬件電路電源的控制,為降低功耗所有的外圍電路都通過一個三級管來控制。所有三級管的基極均與CPU的I/O口相連,這樣通過CPU的I/O口即可控制所有外圍電路的電源。
4.3 任務調度
為提高CPU的工作效率和系統任務的處理速度,本系統使用分時處理流程。代碼如下:
4.4 可靠性對策
由于本系統是一臺標準的射頻讀卡器設備,所以在系統軟件開發上為降低二次開發的難度,增強任務處理能力。在系統的任務調度上采用了比較流行的分時處理流程,這樣只要所加的任務處理時間小于任務輪詢的時間均可采用此種方式。同時為增加Mare I卡的使用壽命,在對Mare I卡的內存進行讀寫時采用平均讀寫的方式,即從長時間讀寫來看,Mare I卡的每塊存儲區所得到的讀寫次數相同,避免了由于單塊存儲區讀寫次數太多而損壞。
5 結 論
經過調試,由本系統軟件所開發出的讀寫器具有 高性能、高穩定性和強兼容性。典型的讀寫距離為11 cm,在有效讀寫區域內無死區,讀寫操作可靠。在桌面工作環境中,卡片在有效感應區域內連續讀寫出錯率低于0.01%。其兼容性表現在不僅能夠讀取標準的卡片,對于偏離標準很多的卡片也能夠進行讀取。