0 引 言
M CF52233是飛思卡爾公司推出一款主要用于工業(yè)控制的32位芯片[ 1] , 具有穩(wěn)定性好、可靠性高、接口豐富、存儲(chǔ)空間大等優(yōu)點(diǎn), 并且集成了網(wǎng)絡(luò)模塊, 已經(jīng)廣泛應(yīng)用于工業(yè)控制領(lǐng)域。射頻識(shí)別是一種非接觸式的自動(dòng)識(shí)別技術(shù), 目前已廣泛應(yīng)用于物流、制造、公共信息服務(wù)等行業(yè)[ 2]。
本系統(tǒng)通過(guò)射頻模塊讀取二代身份證的序列號(hào), 然后對(duì)該序列號(hào)作如下處理: 第一, 使用快速查詢方法, 查詢MCF52233的Flash中已存儲(chǔ)的序列號(hào)。若查詢成功, 電子門自動(dòng)打開(kāi), 授權(quán)刷卡人員進(jìn)入, 具有門禁的功能。第二, 若門禁控制器處于脫機(jī)工作狀態(tài), 則ID序列號(hào)暫存于Flash 中, 等聯(lián)機(jī)后再把ID序列號(hào)和刷卡時(shí)間上傳到服務(wù)器; 若門禁控制器處于聯(lián)機(jī)工作狀態(tài), 則把ID 序列號(hào)和刷卡時(shí)間直接通過(guò)網(wǎng)絡(luò)或USB 接口上傳到服務(wù)器。
1 系統(tǒng)總體架構(gòu)
基于二代身份證的RFID門禁考勤系統(tǒng)(以下簡(jiǎn)稱門禁考勤系統(tǒng))由二代身份證ID采集器、門禁控制器、服務(wù)器管理軟件和可控電子門組成, 使用二代居民身份證作為電子標(biāo)簽, 無(wú)須購(gòu)買專門的射頻卡, 為用戶節(jié)省成本, 使用方便。
由于門禁控制器脫機(jī)工作時(shí), 能夠獨(dú)立識(shí)別ID 序列號(hào),因此要預(yù)先把ID序列號(hào)下載到門禁控制器的F lash 中, 此時(shí)需要使用ID采集器預(yù)先進(jìn)行ID序列號(hào)的采集。門禁控制器具有以太網(wǎng)和USB接口, 同時(shí)支持Type A標(biāo)準(zhǔn)(M ifire 1卡)和Type B 標(biāo)準(zhǔn)(二代身份證) 射頻卡, 能根據(jù)射頻卡上的信息自動(dòng)識(shí)別持卡人是否被授權(quán)進(jìn)入, 從而控制電子門的開(kāi)和閉; 另外, 它還能記錄持卡人進(jìn)出時(shí)間, 具備考勤的功能。圖1所示為門禁考勤系統(tǒng)的執(zhí)行過(guò)程。
.jpg)
圖1 門禁考勤系統(tǒng)總體框圖
2 系統(tǒng)硬件組成
本系統(tǒng)選擇80引腳的M CF52233作為主控芯片, 主要是由于該芯片引腳功能比較豐富, 同時(shí)包含網(wǎng)絡(luò)模塊、IIC 模塊( 用于對(duì)時(shí)鐘芯片PCF8563進(jìn)行數(shù)據(jù)傳輸)和QSPI模塊(用于對(duì)液晶進(jìn)行控制)。該芯片雖不包含USB模塊, 但可使用飛思卡爾生產(chǎn)的M 68HC908JB8的USB 接口。本系統(tǒng)需實(shí)現(xiàn)的功能模塊包括: GPIO、UART、QSPI、IIC、PIT、Flash及USB模塊[ 1] 。圖2 為系統(tǒng)硬件組成框圖。
.jpg)
圖2 系統(tǒng)硬件組成框圖
刷卡記錄包括刷卡時(shí)間和卡號(hào), 因此使用PCF8563時(shí)鐘芯片保存系統(tǒng)時(shí)間, 同時(shí)使用MCF52233內(nèi)部的定時(shí)器( PIT) 模塊計(jì)時(shí), 以延長(zhǎng)PCF8563使用的紐扣電池的壽命。
3 系統(tǒng)軟件設(shè)計(jì)
3. 1 MCU方軟件設(shè)計(jì)
M CU 方軟件主要分為兩大部分: 身份證信息采集軟件和門禁控制器軟件。
身份證信息采集軟件的主要功能: 對(duì)ID序列號(hào)進(jìn)行采集,并上傳到服務(wù)器方的數(shù)據(jù)庫(kù)中。
門禁控制器軟件的主要功能: ID 索引表和序列號(hào)的寫入功能、配置參數(shù)信息的寫入功能、刷卡識(shí)別并開(kāi)門功能和刷卡信息上傳功能。
為了能夠在主控芯片的F lash 中快速查詢到ID序列號(hào), 本系統(tǒng)對(duì)Flash區(qū)域進(jìn)行了重新劃分(下文介紹), 其中兩區(qū)域分別用于存儲(chǔ)ID索引表和ID序列號(hào)。身份證信息的寫入程序主要是將ID索引表和ID 序列號(hào)兩部分信息寫入到門禁控制器中。該信息的寫入都要通過(guò)握手信號(hào), 以確保正確的信息寫入到MCF52233的Flash中。下面主要介紹ID 序列號(hào)寫入F lash的過(guò)程。圖3所示為ID序列號(hào)寫入F lash的執(zhí)行過(guò)程。
.jpg)
圖3 ID序列號(hào)的寫入流程圖
配置參數(shù)信息的寫入流程與ID序列號(hào)的寫入流程一致, 這里不再描述。
刷卡識(shí)別并開(kāi)門程序主要實(shí)現(xiàn)以下功能: 將當(dāng)前刷卡的ID序列號(hào)讀出; 檢查該ID 序列號(hào)的有效性; 若ID序列號(hào)有效, 則開(kāi)電子門并將該刷卡記錄存入到Flash中。檢查身份證ID有效性的程序主要包括三部分函數(shù): 總的查詢函數(shù)、根據(jù)特征值(由ID序列號(hào)累加求和取模得到) 到ID 索引表中取得分組首末地址函數(shù)和在分組中查詢ID序列號(hào)函數(shù)。圖4所示為查詢ID 序列號(hào)的總流程圖。
.jpg)
圖4 查詢ID 序列號(hào)的總流程圖
刷卡信息上傳程序主要是將刷卡的信息上傳到服務(wù)器方入庫(kù), 以備查詢使用。上傳的信息主要包含刷卡時(shí)間和ID 序列號(hào)。如果每刷一條信息就寫入F lash, 則必定對(duì)F lash要進(jìn)行頻繁的擦寫, 這樣會(huì)降低系統(tǒng)的效率。為了提高系統(tǒng)效率, 采用臨時(shí)緩沖區(qū)的方法, 只有當(dāng)刷卡記錄滿一頁(yè), 才寫入到Flash中。圖5所示為刷卡信息上傳流程圖。
.jpg)
圖5 刷卡信息上傳流程圖
3. 2 服務(wù)器方軟件設(shè)計(jì)
服務(wù)器方軟件主要實(shí)現(xiàn)以下的功能: ID序列號(hào)采集功能,對(duì)門禁控制器的操作, 人員信息和刷卡信息的數(shù)據(jù)庫(kù)操作功能。
ID序列號(hào)采集功能是采集ID序列號(hào)并保存到服務(wù)器的數(shù)據(jù)庫(kù)上。
門禁控制器的操作主要有以下幾個(gè)方面: 門禁控制器系統(tǒng)時(shí)間的設(shè)置、人員信息的下載、配置參數(shù)的下載和刷卡記錄的上傳等。
人員信息的數(shù)據(jù)庫(kù)操作主要包括: 人員信息的添加、修改、查詢和刪除操作。
刷卡信息的數(shù)據(jù)庫(kù)操作主要包括:刷卡記錄的查詢和刪除操作。
3. 3 服務(wù)器方數(shù)據(jù)庫(kù)設(shè)計(jì)
本系統(tǒng)的服務(wù)器方數(shù)據(jù)庫(kù)主要包含以下兩個(gè)表: 人員信息表和刷卡信息表。
人員信息表用于保存人員的基本信息, 必需包含字段: 人員編號(hào)、姓名、性別、ID序列號(hào), 其中人員編號(hào)是主鍵, 用于唯一標(biāo)識(shí)每條記錄。各字段的長(zhǎng)度如下: 人員編號(hào)10字節(jié), 姓名10 字節(jié), 性別1字節(jié), ID序列號(hào)16字節(jié)。
刷卡信息表用于保存刷卡信息。刷卡記錄通過(guò)以下方式獲得: 服務(wù)器讀取門禁控制器中的刷卡信息(僅包含ID序列號(hào)和刷卡時(shí)間), 根據(jù)ID序列號(hào)查詢?nèi)藛T信息表, 獲得人員編號(hào)和姓名,然后同刷卡時(shí)間一并存入到刷卡信息表中。刷卡信息表包含以下字段: 人員編號(hào)10字節(jié), 姓名10字節(jié), 刷卡時(shí)間(日期型)。
4 設(shè)計(jì)要點(diǎn)的討論
4. 1 F lash分配設(shè)計(jì)
M CF52233是Co ldFire 的一款芯片, 其可尋址4GB 的地址空間, 地址范圍為0x00000000 ~ 0xFFFFFFFF。該芯片具有256KB的F lash和32KB的SRAM, 其Flash存儲(chǔ)器的地址范圍是0x00000000~ 0x0003FFFF[3] 。本系統(tǒng)的Flash 存儲(chǔ)器劃分為5大部分: 程序區(qū)域、門禁控制器配置區(qū)域、ID索引表區(qū)域、ID 序列號(hào)區(qū)域和刷卡記錄信息區(qū)域, 具體的劃分如表1所示。
表1 Flash區(qū)域劃分
.jpg)
ID 索引表每項(xiàng)為8字節(jié), 分別存放每組的起始地址和結(jié)束地址; 每個(gè)ID序列號(hào)為16個(gè)字節(jié), 存放8字節(jié)的ID 號(hào)和預(yù)留8字節(jié); 每條刷卡記錄信息為16個(gè)字節(jié), 存放8 字節(jié)的刷卡時(shí)間和8字節(jié)的ID序列號(hào)。
4. 2 ID序列號(hào)查詢過(guò)程
為了能夠在MCF52233的Flash中快速查找到匹配的ID序列號(hào), 作者對(duì)幾種常用的查詢方法進(jìn)行比較, 發(fā)現(xiàn)異或和累加和取模的查詢效率比較高。通過(guò)高端軟件模擬大量數(shù)據(jù), 計(jì)算標(biāo)準(zhǔn)差偏移程度, 最終得到累加和取模的效率更高。因此, 本系統(tǒng)采用累加和取模的方法得到該ID序列號(hào)的特征值, 在Flash中把ID序列號(hào)分為兩部分存儲(chǔ): ID索引表和ID序列號(hào)表。ID索引表中存儲(chǔ)的是模相同的ID 序列號(hào)在Flash中的起始地址和結(jié)束地址。圖6所示為查詢ID序列號(hào)的詳細(xì)執(zhí)行過(guò)程。
.jpg)
圖6 ID序列號(hào)的查詢流程圖
ID序列號(hào)查詢過(guò)程調(diào)用以下函數(shù):
u int8 SelectID( u int8 personID[ ], u int8 n leng th)
其功能為: 根據(jù)給定的ID 序列號(hào), 查詢Flash的ID序列號(hào)表中是否存在該ID序列號(hào)。參數(shù)personID為要查詢的ID序列號(hào)數(shù)組; n length為ID序列號(hào)的字節(jié)數(shù)。
SelectID內(nèi)部又調(diào)用以下兩個(gè)函數(shù):
( 1) u int8 FetchIDGroupAddressFrom IDIndex ( uint8 nIndexVa lue, uint32* pH eadAddr, u int32* pEndAddr)。
其功能為: 根據(jù)ID序列號(hào)的特征值取得該ID序列號(hào)所在分組的首末地址。參數(shù)nIndexValue 為ID 序列號(hào)的特征值;pH eadAddr為ID 序列號(hào)所在分組的首地址; pEndAddr為ID 序列號(hào)所在分組的末地址。
( 2) uin t8 Se lec tIDFrom IDGroup( uin t8* pH eadlAddr, u int8* pEndAddr, u int8 pe rsonID[ ], u int8 nLeng th)。
其功能為在ID序列號(hào)分組中查詢是否存在指定的ID序列號(hào)。參數(shù)pH ead lAddr為ID分組的首地址; pEndAddr為ID分組的末地址; personID為要查詢的ID 序列號(hào)的數(shù)組; leng th 為ID序列號(hào)的字節(jié)數(shù)。
5 結(jié)束語(yǔ)
本系統(tǒng)采用全國(guó)統(tǒng)一發(fā)行的第二代身份證作為RFID識(shí)別的電子標(biāo)簽, 集成了以太網(wǎng)和USB 接口, 具有“脫機(jī)”和“聯(lián)機(jī)”兩種工作狀態(tài), 同時(shí)具有門禁和考勤的功能。本系統(tǒng)經(jīng)半年的實(shí)際使用表明能夠在現(xiàn)場(chǎng)高效、穩(wěn)定地運(yùn)行。本文對(duì)局域網(wǎng)內(nèi)的嵌入式系統(tǒng)應(yīng)用、現(xiàn)有只讀卡系統(tǒng)的升級(jí)換代以及二代身份證的應(yīng)用擴(kuò)展具有參考價(jià)值。