基于ARM的IC卡讀寫模塊設(shè)計(jì)_第1頁(yè)
基于ARM的IC卡讀寫模塊設(shè)計(jì)_第2頁(yè)
基于ARM的IC卡讀寫模塊設(shè)計(jì)_第3頁(yè)
基于ARM的IC卡讀寫模塊設(shè)計(jì)_第4頁(yè)
基于ARM的IC卡讀寫模塊設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于ARM的IC卡讀寫模塊設(shè)計(jì)(本實(shí)驗(yàn)取材于我正做的項(xiàng)目“電動(dòng)汽車智能交流充電 樁”中我負(fù)責(zé)的部分)實(shí)驗(yàn)名稱基于ARM的IC卡讀寫模塊設(shè)計(jì)姓名葉冠南班課程嵌入式系統(tǒng)級(jí)控制工程1202學(xué)號(hào)2111203199實(shí)驗(yàn)?zāi)康氖褂肁RM內(nèi)核的MCU實(shí)驗(yàn)原理使用基于ARM內(nèi)核的MCU芯片以及RFID卡完成非接觸 性IC卡讀寫模塊的設(shè)計(jì)。使用時(shí)序模擬的SPI通信。實(shí)驗(yàn)環(huán)境和器件編程語(yǔ)言環(huán)境:keil MDK 卩 Visio n V4.21.0.0MCU芯片:基于ARM內(nèi)核的STM32F103VET6芯片(Heartl 03V開發(fā)板)RFID 卡:RFID-MFRC522 模塊調(diào)試工具:JTAG仿真器實(shí)驗(yàn)內(nèi)容1

2、. RFID- MFRC52 模塊1.1結(jié)構(gòu)非接觸式TC卡芯片一覆蓋薄膜非接觸式IC卡的薄膜結(jié)構(gòu)RF Interface射席電路卡內(nèi)部結(jié)構(gòu)M1FARE 1卡片內(nèi)部結(jié)構(gòu)Digital Section 至攵宇電路臣曹汲形轉(zhuǎn)換 CLOCK7正弦滾一方渡DATA-*-aModu DeMod i 調(diào)制/笹調(diào)POR電壓調(diào)卜電復(fù)節(jié)一位一ATRAntiCollisia 1Control&A: iijini .UnitRAMSelectApplicationAurhemicatitAccess Contr ROME- E- p* R o M 存儲(chǔ)區(qū) 存儲(chǔ)區(qū)樣口Crypto Un t功能框圖讀卡器通過天線發(fā)射激勵(lì)

3、信號(hào)(一組固定頻率的電磁波),ic卡進(jìn)入讀寫器工 作區(qū)內(nèi),被 讀寫器信號(hào)激勵(lì)。在電磁波的激勵(lì)下,卡內(nèi)的LC串聯(lián)諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電 荷,在這個(gè)電容的另一端,接有一個(gè)單向?qū)ǖ碾娮?泵,將電容內(nèi)的電荷送到另一個(gè)電容內(nèi)儲(chǔ) 存,當(dāng)所積累的電荷達(dá)到2V時(shí),此電容可以作為電源為其他電路提供工作電壓,供卡內(nèi)集成電 路工作所需。(1) ATR 模塊:Answer To Request (請(qǐng)求之應(yīng)答”當(dāng)一張MIFARE 1卡處在讀寫器的天線工作范圍之內(nèi)時(shí),程序員控制讀寫器向卡發(fā)出Request all (或Request std)命令后,卡的ATR將啟動(dòng),將卡片塊0中2個(gè)字節(jié)的 卡類型號(hào)(Ta

4、gType)傳送給讀寫器,建立卡與讀寫器的第一步通信聯(lián)絡(luò)。如果不進(jìn)行第一步的ATRI作,讀寫器對(duì)卡的其他操作(讀/寫操作等)將不會(huì)進(jìn)行。(2) AntiCollision模塊:防(卡片)沖突功能如果有多張MIFARE 1卡處在讀寫器的天線工作范圍之內(nèi),則AntiCollision模塊的防沖突 功能將被啟動(dòng)工作。讀寫器將會(huì)首先與每一張卡進(jìn)行通信,讀取每一張卡的序列號(hào)(Serial Number)。由于每一張MIFARE 1卡都具有惟一的序列號(hào),決不會(huì)相同,因此程序員將啟動(dòng) 讀寫器中的AntiCollision防重疊功能配合卡上的防重疊功能模塊,根據(jù)卡序列號(hào)來選定其中一 張卡。被選中的卡將被激活,

5、可以與讀寫器進(jìn)行數(shù)據(jù)交換;而未被選中的卡處于等待狀態(tài),隨 時(shí)準(zhǔn)備與讀寫器進(jìn)行通信。AntiCollision模塊(防重疊功能)啟動(dòng)工作時(shí),讀寫器將得到卡片的序列號(hào)(SerialNumber)。序列號(hào)存儲(chǔ)在卡的Block 0中,共有5個(gè)字節(jié),實(shí)際有用的為4個(gè)字節(jié),另一個(gè) 字節(jié)為序列號(hào)的校驗(yàn)字節(jié)。(3) Select Application模塊:卡片的選擇當(dāng)卡與讀寫器完成了上述兩個(gè)步驟,讀寫器要想對(duì)卡進(jìn)行讀 須對(duì)卡進(jìn)行“Select ”操作,以使卡真正地被選中。被選中的卡將卡片上存儲(chǔ)在Block 0中的卡容量Size”字節(jié)傳送給讀寫器。當(dāng)讀寫器收到 這一字節(jié)后,方可對(duì)卡進(jìn)行進(jìn)一步的操作,如密碼驗(yàn)證

6、等。(4) Authent i cat i on & Access Control模塊:認(rèn)證及存取控制模塊 完成上述的三個(gè)步驟后,讀寫器對(duì)卡進(jìn)行讀/寫操作之前,必須對(duì)卡上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證,如果匹配,則允許進(jìn)一步的讀/寫操作。MIFARE 1卡上有16個(gè)扇區(qū),每個(gè)扇區(qū)都可分別設(shè)置各自的密碼,互不干涉,必須分別 加以認(rèn)證,才能對(duì)該扇區(qū)進(jìn)行下一步的操作。因此每個(gè)扇區(qū)可獨(dú)立地應(yīng)用于一個(gè)應(yīng)用場(chǎng)合,整 個(gè)卡可以設(shè)計(jì)成一卡多用(一卡通)的形式來應(yīng)用。密碼的認(rèn)證采用了三次相互認(rèn)證的方法, 具有很高的安全性。如果事先不知卡上的密碼,則因密碼的變化可以極其復(fù)雜,試圖靠猜測(cè)密 碼而打開卡上一個(gè)扇區(qū)的可能性幾乎

7、為零。(5) Control & Arithmetic Unit :控制及算術(shù)運(yùn)算單元這一單元是整個(gè)卡的控制中心,是卡的“頭腦”。它主要對(duì)卡的各個(gè)單元進(jìn)行操作控制,協(xié)調(diào)卡的各個(gè)步驟;同時(shí)它還對(duì)各種收/發(fā)的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算處理、遞增/遞減處理 和CRC運(yùn)算處理等,是卡中內(nèi)建的中央微處理器(MCU)單元。(6 ) RAM/ROM 單元RAM主要配合控制及算術(shù)運(yùn)算單元,將運(yùn)算的結(jié)果進(jìn)行暫時(shí)存儲(chǔ),例如將需存儲(chǔ)的數(shù)據(jù)由 控制及算術(shù)運(yùn)算單元取出送到EEPROM存儲(chǔ)器中;將需要傳送給讀寫器的數(shù)據(jù)由控制及算術(shù) 運(yùn)算單元取出,經(jīng)過RF射頻接口電路的處理,通過卡片上的天線傳送給讀寫器。RAM中的 數(shù)據(jù)在卡失掉電源

8、后(卡片離開讀寫器天線的有效工作范圍)將會(huì)丟失。同時(shí),ROM中則固化了卡運(yùn)行所需要的必要的程序指令,由控制及算術(shù)運(yùn)算單元取出,對(duì)每個(gè)單元進(jìn)行指令控制,使卡能有條不紊地與讀寫器進(jìn)行數(shù)據(jù)通信。(7) Crypto Unit :數(shù)據(jù)加密單元該單元完成對(duì)數(shù)據(jù)的加密處理及密碼保護(hù)。加密的算法可以為DES標(biāo)準(zhǔn)算法或其他。(8 ) EEPROM 存儲(chǔ)器及其接 口電路:EEPROM INTERFACE/EEPROMMEMORY該單元主要用于存儲(chǔ)用戶數(shù)據(jù),在卡失掉電源后(卡片離開讀寫器天線的有效工作范 圍)數(shù)據(jù)仍將被保持。1.3數(shù)據(jù)讀寫方式由于項(xiàng)目?jī)?nèi)板上SPI接口已被其他外設(shè)占用,故本實(shí)驗(yàn)中的RFID卡與板上數(shù)

9、據(jù)之間讀寫 通過普通IO 口時(shí)序模擬得到。1.4 引腳分配J8M-MFSDAM-MFSCKM-MFMOSIM-MFNnSOM-MFRSTam-gxdM+3.3VCON8104MGND如上圖所示,RFID卡模塊共有8個(gè)引腳,其中5腳空置。另外的1、2、3、4、7 口作為通信線分別在板上為其分配普通IO 口 PD8、PD9、PD10、PD11和PD12。6腳和8腳則分別和板上的地線以及3.3V電源口。1.5 Mifare 1 S50 卡存儲(chǔ) EEPROM區(qū)1Ui n. 4B苗vh:tanrvM網(wǎng)存 win me wti)密 IMI miltd a*Jft理1呂0卄時(shí)節(jié)門甘節(jié)M if are 1卡內(nèi)

10、部有1的EEPROM,分成015共16個(gè)扇區(qū),每個(gè)扇區(qū)分成03共4塊,每塊16字節(jié)。1、扇區(qū)0的塊0是廠商標(biāo)志字節(jié),保存著只讀的卡信息及廠商信息,比如:AF A73E 00 360804 0099 44 30 43 31 34 36 16。前面四個(gè)字節(jié)AF A7 3E 00 36是卡序列號(hào),08是卡容量,04 00是卡類型,后面是廠商自 定義的一些信息。2、每個(gè)扇區(qū)的塊0保存著該塊的密鑰A密鑰B及該塊的訪問條件,第個(gè)扇區(qū)都有自己的一套密鑰及訪問條件,其中,4個(gè)字節(jié)的訪問條件是對(duì)每個(gè)扇區(qū)4個(gè)塊的讀寫定義,格式如下:bit7654210字節(jié)EC23_bC22_bC21_bC13jbC12_bCI

11、LbCIO字節(jié)7C13C12CllCIOC33_bC32C31,bC30_b字節(jié)3C33C32C31C30C23C22C21C20字節(jié)P0110101字節(jié)9備用默認(rèn)值為0x69,_b是取反。分成C10C13 C20C23,C30C33對(duì)塊0、塊1、塊2存取控制X (02):C1XC2XC3XReadTriteIncrementPecreenti transfer, restore000Ke/AHKeyA IBKeyA BKeyAB00KeyABMe verNeverNever100KeyABKeyBNeverNeverIoKeyAlBKeyBKgySKeyAB00KeyA BSeverNg v

12、erKeyA K01IKeyBKeyBNeverNever10KeyBMei erNeicrNever11 INoverNeverNeverMe ver對(duì)塊3存取控制:密碼A存取控制密碼BC13C23、ReadWriteReadWriteRAadWrit0005 everKeyAlBKeyA BNeverKeyA BKeyA B00NeverNeverKeyAHKeyA Bevpr10NeverKeyhKey ABNever.SeverKeyH10Never、丄 壯wrKey A BNeverNeverever001XeverKeyAlBKeyA BKey A BKeyA BKeyA B0Ne

13、verKeyBKeyA BKeyBNeverKeyB1NeverNeverKeyA BKeyBNever111everKoyABNeverNeverXever比如塊3的16字節(jié)如下:00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF前面6個(gè)字節(jié)是密鑰A,因?yàn)镽ead永遠(yuǎn)為Never,所以讀到的都是0x00,最后 的6字節(jié) 是密鑰B,其值一為OxFF OxFF OxFF OxFF OxFF OxFF,中間的4個(gè)字節(jié)是訪問條件,有:C1X0.2C2X0.,2C3X0.2000C1X3C2X3C3X3001對(duì)應(yīng)上表,可得出對(duì)該扇區(qū)塊的存取控制條件2讀寫的實(shí)

14、現(xiàn)利用RFID卡廠家編制好的頭文件添加到工程中。對(duì)于IC卡的讀寫需要經(jīng)歷:判斷是否有卡進(jìn)入;多卡進(jìn)入時(shí)的防沖撞處理;對(duì)卡操作前的密鑰驗(yàn)證操作,以及后續(xù)的不同類型的操作(注冊(cè),讀卡,消費(fèi),充值,注銷等)。取塊2來進(jìn)行數(shù)據(jù)存儲(chǔ)o扇區(qū)塊描述1563第15扇區(qū)尾塊62數(shù)據(jù)塊61數(shù)據(jù)塊60數(shù)據(jù)塊1459第14扇區(qū)尾塊58數(shù)據(jù)塊57數(shù)據(jù)塊56數(shù)據(jù)塊17第1扇區(qū)尾塊6數(shù)據(jù)塊5數(shù)據(jù)塊4數(shù)據(jù)塊03第0扇區(qū)尾塊2數(shù)據(jù)塊1數(shù)據(jù)塊0廠商標(biāo)志塊RC522卡存儲(chǔ)區(qū)的組織示意圖扇區(qū)111密鑰A權(quán)限代碼密鑰B64610交易額1交易額2交易額3序列號(hào)1序列號(hào)2序列號(hào)32222229交易時(shí)間1交易時(shí)間2交易時(shí)間3狀態(tài)交易次數(shù)44

15、4228用戶余額用戶姓名(區(qū)位碼儲(chǔ)存)用戶卡號(hào)484在本程序中初步設(shè)計(jì)卡內(nèi)存儲(chǔ)的用戶信息為用戶姓名四個(gè)漢字以內(nèi),以區(qū)位碼形式存儲(chǔ),以便下一步與觸摸屏模塊連接時(shí)通過字庫(kù)的支持來實(shí)現(xiàn)顯示。用戶賬戶余 額信息設(shè)計(jì)為以4個(gè)字節(jié)存儲(chǔ)。而每張IC卡賦予其一個(gè)編號(hào),使用4個(gè)字節(jié)8位數(shù)字及字 母組合表示。至此需要的存儲(chǔ)空間為姓名部分(一個(gè)漢字的區(qū)位碼為兩個(gè)字節(jié))共需八個(gè)字 節(jié),余額部分4個(gè)字節(jié),編號(hào)部分4個(gè)字節(jié),總共16個(gè)字節(jié),對(duì)于一個(gè)數(shù)據(jù)塊而言恰好完 全利用。由于扇區(qū)0中儲(chǔ)存著大量的廠商信息,故選用扇區(qū)1的塊4進(jìn)行用戶信息數(shù)據(jù)的存儲(chǔ)。對(duì)卡不同類型的操作是通過對(duì)卡的狀態(tài)變量OprationCard進(jìn)行賦值完成

16、。附自定義狀態(tài)字表:0x11有卡進(jìn)入0x22防沖撞處理完成0x33選卡選畢0x44密鑰驗(yàn)證通過#defi neREGCARD0xa1/注冊(cè)狀態(tài)#defi neCONSUME0xa2/消費(fèi)狀態(tài)#defi neREADCARD0xa3/讀卡狀態(tài)#defi neADDMONEY0xa4/充值狀態(tài)#defineLOGOFFCARD0xa5/注銷狀態(tài)void On_NormalCall()/ if(MainStage = 1) /ShowStartPage();/MainStage = 2;/ /MainStage = 1;signed char StatusJ;signed long money_va

17、lue;/,money_value2;float f_mon ey_value;/,f_ mon ey_value2;Status = PcdRequest(PICC_REQIDL, &RevBufferO);/尋天線區(qū)內(nèi)未進(jìn)入休眠狀態(tài)的卡,返回卡片類型2字節(jié)if(Status!=MI_OK) return;Status = PcdAnticoll(&RevBuffer2);/ 防沖撞,返回卡的序列號(hào) 4 字節(jié) if(Status!=MI_OK) return;GPIO_ResetBits(GPIO_BEEPER, BEEPER_PIN);廣開啟蜂口鳥器 */Delay(0x2FFFFF);G

18、PIO_SetBits(GPIO_BEEPER, BEEPER_PIN);/* 矢閉蜂鳴器 7/Delay(0x2FFFFF);memcpy(MLastSelectedSnr,&RevBuffer2,4);/ 拷貝 &RevBuffer2起始地址的 4 字節(jié)至MLastSelectedSnr起始地址的區(qū)域Status = PcdSelect(MLastSelectedSnr);/ 選卡 if(Status!=MI_OK) return;if(OprationCard=REGCARD)/ 注冊(cè) 0Status=PcdAuthState(PICC_AUTHENT1 A,11 ,NewKeyA,ML

19、astSelectedSnr);/ 地 址 11 是如何確尋天線區(qū)內(nèi)未進(jìn)入休眠Status = PcdRequest(PICC_REQIDL, &RevBufferO);/定的?(;第2扇區(qū)尾塊序號(hào))if(Status!=MI_OK)Error(Error_RC522);return;Status=PcdWrite(11,&NewKeyO);if(Status!=MI_OK)Error(Error_RC522);return;/?for(i=0;i16;i+)Write_First_Datai=Oxaa;Write_Firstmemset( Write_First_Data, 0, sizeof(Write_First_Data);將Data起始地址的sizeof(Write_First_Data)個(gè)字節(jié)替換為0y/ f. f. 冃-地址4是如money value = 8000;何確定的?memcpy( Write_First_Data, ( u8 * )&money_value, 4 ); Status=PcdWrite(8,&Write_First_Data0);(第1扇區(qū)數(shù)據(jù)塊1塊序號(hào))return;if(Status!=MI_OK)Error(Error_RC522);return;/通過注冊(cè)/

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論