版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 射頻卡公交收費(fèi)機(jī)設(shè)計(jì)(三)MIFARE 1卡讀寫軟件設(shè)計(jì)課 程 目 標(biāo) 非接觸式IC卡讀寫控制 MIFARE 1卡讀寫控制功能的實(shí)現(xiàn)項(xiàng)目開發(fā)射頻卡公交收費(fèi)系統(tǒng)系統(tǒng)需求分析:具備小額電子錢包功能,定額方式收費(fèi)操作方便快捷工作距離50cm具備顯示余額、異常報(bào)警(非法卡或余額不足)可將當(dāng)班收款額上傳總站數(shù)據(jù)庫公交公司可調(diào)整定額額度卡遺失可掛失抗干擾能力強(qiáng)項(xiàng)目設(shè)計(jì)之三軟件設(shè)計(jì)讀寫器與 M1卡交換數(shù)據(jù)的過程:1.讀寫器MCU(微控制器)發(fā)送指令給MIFARE讀寫模塊;2. MIFARE讀寫模塊執(zhí)行指令并將其轉(zhuǎn)換為射頻信號(hào)發(fā)送給卡;3. 卡接收到來自MIFARE讀寫模塊的指令后,按指令完成其內(nèi)部的各種處
2、理,并回送應(yīng)答信號(hào)/數(shù)據(jù)給MIFARE讀寫模塊;4. MIFARE讀寫模塊接收卡回送的射頻信號(hào)并將其轉(zhuǎn)換為數(shù)字信號(hào)輸出給MCU,MCU接收來自MIFARE讀寫模塊的卡應(yīng)答。MIFARE卡的讀寫操作步驟 激活MCMMCM軟復(fù)位向MCM下載密碼(LOAD KEY),校驗(yàn)傳輸密碼正確后可向MCM的KEY-RAM寫入用戶自己設(shè)定的密碼,以上操作與卡無關(guān)。請求應(yīng)答(ANSWER TO REQUEST):尋卡 防沖突(ANTICOLLISION):選擇唯一一張卡 選擇標(biāo)記(SELECT):激活所選擇的卡 認(rèn)證 (AUTHENTICATION):安全性讀寫操作(讀、寫、加值、減值):交換數(shù)據(jù) (READ/W
3、RITE/INCREAMENT/DECREMENT)停止(HALT):置卡為停止模式,防止重復(fù)操作。 每一個(gè)指令的執(zhí)行包含以下獨(dú)立的步驟,必須由程序員按時(shí)序編程來執(zhí)行這些步驟才能完成相應(yīng)的指令功能:初始化,設(shè)置各寄存器。送指令碼到FIFOData,由MCM發(fā)送指令。檢查是否接收完來自卡的應(yīng)答,否則返回?zé)o卡(應(yīng)答)錯(cuò)誤標(biāo)志;是則進(jìn)入下一步讀入錯(cuò)誤標(biāo)志(寄存器0X0A),若有標(biāo)志被設(shè)置,則返回出錯(cuò)標(biāo)志;若沒有標(biāo)志被設(shè)置,表示接收正確,將進(jìn)行下一步操作讀入FIFOData字節(jié)數(shù)(寄存器0X04),出錯(cuò)則返回字節(jié)數(shù)錯(cuò)誤標(biāo)志;否則進(jìn)入下一步操作MCU從FIFOData 讀出MCM接收到的應(yīng)答或數(shù)據(jù),返回
4、操作正確標(biāo)志。實(shí)訓(xùn) 非接觸式IC卡讀寫控制程序設(shè)計(jì)與調(diào)試 第一階段:實(shí)現(xiàn)1張卡的公交收費(fèi)扣款。用WRITE函數(shù)編寫扣款程序,調(diào)試程序,查看操作流程中各操作步驟的卡應(yīng)答。第二階段:實(shí)現(xiàn)2張及以上卡同時(shí)扣費(fèi)。防沖突與防止重復(fù)扣款的編程實(shí)現(xiàn)與調(diào)試。第三階段:用INCREMENT/DECREMENT函數(shù)編寫充值/扣款程序。調(diào)試程序,查看操作流程中各操作步驟的卡應(yīng)答。 void main (void) uchar Status; uchar xdata tmp16; SYSCLK_Init (); / Initialize Oscillator PORT_Init(); / Initialize Por
5、t I/O UART0_Init();/UART init SPI0_Init();/SPI init Init_RC632();/MCM initMIFARE卡讀寫范例程序 while(1) tmpMODE=RF_CMD_REQUEST_STD; /設(shè)置防沖突命令碼 Status = Request(tmpMODE);/ Request standard請求應(yīng)答,尋卡/14443 A卡返回 tagtype2=0 x04,0 x00 if(Status=MI_OK) Status = AntiColl(); / Anticollision防沖突,在多張卡中選擇一張/卡返回UID5 if(Sta
6、tus=RC632_OK) Status=Select_Card(); /Select application選擇應(yīng)用,激活選中的卡/卡返回SIZE字節(jié)cardtype=0 x08/0 x88/0 x18/0 x04/0 x28/0 x53 Answer to Request (請求應(yīng)答)操作 Request 指令功能:通知讀寫模塊在天線有效的工作范圍(距離)內(nèi)尋找MIFARE 1卡。函數(shù):uchar Request(uchar mode)/ request code(命令碼):RF_CMD_REQUEST_ALL = 0 x52 RF_CMD_REQUEST_STD= 0 x26 / ans
7、wer to request:卡類型號(hào)tagtype(2個(gè)字節(jié))14443 A卡的tagtype2=0 x04,0 x00/返回值:正常則返回0(MI_OK),否則返回錯(cuò)誤代碼編程調(diào)用: tmpMODE=RF_CMD_REQUEST_STD; Status = Request(tmpMODE);初始化與防沖突 (AntiCollion)如果有2張或2張以上的IC卡進(jìn)入讀寫器的工作范圍,稱之為沖突(或碰撞Collion),此時(shí)就需要解決如何對多張IC卡逐一處理的問題防沖突 AntiCollion。防沖突方案: 位幀防沖突(Bit AntiCollision) 動(dòng)態(tài)時(shí)隙-ALOHA法(Slotte
8、d-ALOHA法) Mifare防沖突方案: 利用每張卡全球唯一的SN實(shí)現(xiàn)二進(jìn)制樹狀搜索防沖突算法AntiCollision 防沖突如果有多于一張的Mifare 1卡處在MCM天線的有效工作范圍(距離)內(nèi),則發(fā)生了沖突。AntiCollision操作使MCM能在多張Mifare 1卡中選擇某一張卡。 AntiCollision操作由一個(gè)AntiCollision Loop(防沖突循環(huán),內(nèi)部處理)來實(shí)現(xiàn)。MCM發(fā)送AntiCollision命令(93H+20H),每張?zhí)炀€范圍內(nèi)的MIFARE 1卡接收AntiCollision命令后,都將回送自己的SN作為應(yīng)答。由于每張卡的SN各不相同,MCM接
9、收到的信息(即SN)至少有1位即是0又是1(即該位的前、后半部都有負(fù)載波調(diào)制),防沖突循環(huán)找到第1個(gè)沖突位將其置1(排除該位為0的卡),然后查第2個(gè),依次排除,最后不再有沖突的SN即為最后讀取的SN。 防沖突(AntiCollision)操作Anticollision命令功能:啟動(dòng)防沖突循環(huán),卡收到命令后回送SN作為應(yīng)答,防沖突循環(huán)將在收到的所有SN中選擇某一個(gè)SN作為應(yīng)答。函數(shù):uchar AntiColl(void);返回狀態(tài)編程if(Status=MI_OK) Status = AntiColl(); / Anticollision 選擇應(yīng)用(Select)操作Select命令功能:將選
10、中的SN發(fā)送給卡,與之相同SN的卡被選擇,進(jìn)入ACTIVE狀態(tài),而其他卡留在IDLE狀態(tài)。函數(shù) uchar Select_Card(void) 返回狀態(tài)編程 if(Status=MI_OK) Status = uchar Select_Card() ; if(Status=RC632_OK) Buffer4=1; /Buffer4為要認(rèn)證的扇區(qū)號(hào)015,扇區(qū)1Buffer3=0; /Buffer3為要認(rèn)證的密碼類型,0-密碼A,非0-密碼B Status = Authentication1(UID,Buffer4,Buffer3); /密碼認(rèn)證 blkaddr=4; /塊地址063,扇區(qū)1塊0
11、if(Status=RC632_OK) Status=MIF_Read(&blockdata,blkaddr); /讀塊數(shù)據(jù)blockdata0=blockdata0-3;/在塊的第0個(gè)字節(jié)修改數(shù)據(jù)if(Status = RC632_OK) Status=MIF_Write(&blockdata,blkaddr); /寫入修改后的塊數(shù)據(jù) if(Status=RC632_OK) Status = MIF_Halt(); /暫停 認(rèn)證(Authentication )操作 Authentication功能:MIFARE讀寫模塊中設(shè)有專用的密碼存儲(chǔ)器,用于存儲(chǔ)3個(gè)密碼集KEYSET0,KEYSET1
12、,KEYSET2,每一個(gè)KEYSET又包含了各個(gè)扇區(qū)的KEY A 及KEY B。 Authentication操作就是將密碼存儲(chǔ)器中的密碼與卡中對應(yīng)的密碼進(jìn)行三次相互認(rèn)證。函數(shù)uchar Authentication1(uchar *UID,uchar SecNR,uchar mode) /返回值:卡應(yīng)答以AE位給出;AE=1/0,密碼出錯(cuò)/正確,未能通過/通過認(rèn)證;STATUS=1/0編程:if(Status=RC6322_OK) Buffer4=1; /Buffer4為要認(rèn)證的扇區(qū)號(hào)015,扇區(qū)1 Buffer3=0; /Buffer3為要認(rèn)證的密碼類型,0-密碼A,非0-密碼B Stat
13、us = Authentication1(UID,Buffer4,Buffer3); /密碼認(rèn)證 READ/WRITE操作READ/WRITE均需整塊操作。READ: uchar MIF_Read(uchar xdata *buff, uchar Block_Adr)WRITE: uchar MIF_Write(uchar xdata *buff, uchar Block_Adr)/ xdata *buff: 塊數(shù)據(jù)/ Block_Adr :塊地址063調(diào)用: blkaddr=4; /塊地址063,扇區(qū)1塊0if(Status=RC632_OK)Status=MIF_Read(&blockda
14、ta,blkaddr); /讀塊數(shù)據(jù)blockdata0=blockdata0-3;/在塊的第0個(gè)字節(jié)修改數(shù)據(jù)if(Status = RC632_OK)Status=MIF_Write(&blockdata,blkaddr/寫入修改后的塊數(shù)據(jù) HALT操作set card into “HALT-mode”, to prevent the MCM from selecting one card several times.函數(shù) uchar MIF_Halt(void)第一階段實(shí)訓(xùn)步驟打開并運(yùn)行RF TYPEA工程,用RF應(yīng)用軟件讀出并記錄2張MIFARE1卡的TAGTYPE、SN、SIZE,在卡
15、中某數(shù)據(jù)塊(如扇區(qū)1塊0)分別寫入公交卡金額(模擬充值)。建立公交收費(fèi)工程并編譯運(yùn)行,設(shè)置斷點(diǎn)及觀察窗,分別對1#、2#卡進(jìn)行讀寫操作,查看并記錄卡應(yīng)答TAGTYPE、SN、SIZE、blockdata 。 故障現(xiàn)象:不能扣款,原因?1.查看authentication應(yīng)答,若非MI_OK則密碼認(rèn)證未通過。原因:密碼錯(cuò)誤,密碼塊地址設(shè)置錯(cuò)誤,該塊被設(shè)置為不可寫,該扇區(qū)被損壞2.能讀不能寫:該塊被設(shè)置為不可寫,寫塊地址設(shè)置錯(cuò)誤(設(shè)置到另一扇區(qū)中)第二階段實(shí)訓(xùn)步驟將2張卡同時(shí)置入天線工作范圍內(nèi),運(yùn)行程序進(jìn)行讀寫操作,查看應(yīng)答 ,判斷是否能完成逐一對2張卡扣費(fèi)一次。故障現(xiàn)象:重復(fù)對其中一張卡扣費(fèi),而
16、另一張未扣費(fèi),原因? With a “request std” instruction only cards which are not set into a “HALT-mode” will respond to this request,or it may be expanded to all cards in the field with a “request all” option.The first option is needed to prevent the MCM from selecting one card several times.Difference between
17、“request std” & “request all” 第二階段實(shí)訓(xùn)步驟故障現(xiàn)象:重復(fù)對其中一張卡扣費(fèi),而另一張未扣費(fèi),原因?1. 未正確使用request std與halt函數(shù)對2. 循環(huán)時(shí)重復(fù)復(fù)位MIFARE讀寫模塊導(dǎo)致halt狀態(tài)失效 第三階段實(shí)訓(xùn)步驟打開并運(yùn)行RF TYPEA工程,用RF應(yīng)用軟件對卡中某數(shù)據(jù)塊(如扇區(qū)1塊0)初始化為值塊(模擬充值)。修改程序,用INCREMENT/DECREMENT實(shí)現(xiàn)充值/扣款在調(diào)試芯片中下載自行編寫的上述程序,運(yùn)行并查看并記錄卡應(yīng)答TAGTYPE、SN、SIZE、blockdata 。 Value Operate 值操作MIFARE卡專門為公交
18、/地鐵等行業(yè)的定額收費(fèi)系統(tǒng)設(shè)有值操作命令,包括INCREAMENT/DECREAMENT/ TRANSFER/RESTORE對某塊進(jìn)行值操作的前提是該塊已被初始化為“值塊”(Value Block)并且Access Bits允許值操作。初始化“值塊”的方法是用WRITE操作按規(guī)定的“值塊”格式寫入初始數(shù)據(jù)。Increment/Decrement/TransferIncrement: adds the specified value to the memory valueDecrement: subtracts the specified value from the memory valueTransfer: Each Increment or Decrement instruction manipulating a standard value block has to be followed by a Transfer intruction which actually stores the calculated result in the card memory. Until then, the result is kept in an internal value buffer resgister.Increment/Decrement/Transfer函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課件模板購買教學(xué)課件
- 3.3.1鹽類的水解 課件 高二上學(xué)期化學(xué)人教版(2019)選擇性必修1
- 踩高蹺教案及反思
- 保護(hù)我們的皮膚教案反思
- 漢語拼音說課稿
- 公共服務(wù)外協(xié)產(chǎn)品管理辦法
- 汽車學(xué)業(yè)規(guī)劃教育
- 健身中心翰林府建設(shè)合同
- 社會(huì)福利院聘用合同種類及規(guī)范
- 礦業(yè)農(nóng)民工工資保障金管理辦法
- 綠色鋼鐵產(chǎn)業(yè)鏈構(gòu)建
- 2024年企業(yè)股東退股補(bǔ)償協(xié)議版
- 2022年R2移動(dòng)式壓力容器充裝特種作業(yè)證考試題庫及答案
- 河南省商丘市2023-2024學(xué)年高一上學(xué)期期中考試化學(xué)試題(含答案)
- V帶傳動(dòng)設(shè)計(jì)說明書
- 2024年山東省東營市中考?xì)v史試題卷(含答案及解析)
- 墓地長期租用合同模板
- 兒童社區(qū)獲得性肺炎管理指南(2024修訂)解讀
- 2024年1月浙江省高考英語真題試卷含答案
- 培訓(xùn)員工的課件
- 2025年九省聯(lián)考新高考 數(shù)學(xué)試卷(含答案解析)
評論
0/150
提交評論