試驗16—RFID自動讀卡_第1頁
試驗16—RFID自動讀卡_第2頁
試驗16—RFID自動讀卡_第3頁
試驗16—RFID自動讀卡_第4頁
試驗16—RFID自動讀卡_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗題目:實驗16RFID自動讀實驗時間:2016.1.4實驗?zāi)康模毫私釸FID相關(guān)知識。掌握RFID模塊自動識別IC卡工作原理。實驗原理及程序分析:1、STM8處理器概述本實驗所使用RFID模塊由STM處理器和MFRC531高集成非接觸讀寫芯片)兩片 芯片搭建而成的。STM先基于8位框架結(jié)構(gòu)的微控制器,其 CPU內(nèi)核有6個內(nèi)部寄存器,通過這 些寄存器可高效地進行數(shù)據(jù)處理。STM8勺指令集支持80條基本語句及20種尋址模式,而且CPU6個內(nèi)部寄存器都擁有可尋址的地址。STM8內(nèi)部的FLASIW序存儲器和數(shù)據(jù) EEPROM一組通用寄存器來控制。用戶可 以使用這些寄存器來編程或擦除存儲器的內(nèi)容、設(shè)

2、置寫保護、或者配置特定的低功 耗模式。用戶也可以對器件的選項字節(jié)(Option byte)進行編程。FLASHSTM8S EEPROMb為兩個存儲器陣列: 最多至128K字節(jié)的FLASHY序存儲器,不同的器件容量有所不同。 最多至2K字節(jié)的數(shù)據(jù)EEPROM(括option byte 選擇字節(jié)),不同的器件容 量有所不同。編程模式字節(jié)編程和自動快速字節(jié)編程 (沒有擦除操作)一字編程塊編程和快速塊編程(沒有擦除操作)在編程/擦除操作結(jié)束時和發(fā)生非法編程操作時產(chǎn)生中斷讀同時寫(RWW助能。該特性并不是所有 STM8器件都擁有。在應(yīng)用編程(IAP)和在線編程(ICP)能力。保護特性存儲器讀保護(ROP

3、)基于存儲器存取安全系統(tǒng)(MASS密鑰)的程序存儲器寫保護基于存儲器存取安全系統(tǒng)(MASS密鑰)的數(shù)據(jù)存儲器寫保護可編程的用戶啟動代碼區(qū)域 (UBC)寫保護在待機(Halt) 模式和活躍待機(Active-halt)模式下,存儲器可配置為運行狀態(tài)和掉電狀態(tài)。數(shù)據(jù)EEPROM(DATA區(qū)域可用于存儲用戶具體項目所需的數(shù)據(jù)。默認情況 下,DATA區(qū)域是寫保護的,這樣可以在主程序工作在IAP模式時防止DATA區(qū)域被無意地修改。只有使用特定的MASS密鑰才能對DATA區(qū)域的寫保護解鎖。2、MFR531 概述MF RC531是應(yīng)用于13.56MHz非接觸式通信中高集成讀寫卡芯片系列中的一員。該讀寫卡芯片

4、系列利用了先進的調(diào)制和解調(diào)概念,完全集成了在13.56MHz下所有類型的被動非接觸式通信方式和協(xié)議。芯片管腳兼容 MFRC50O MFRC530 和 SL RC400OMFRC53伎持ISO/IEC14443A/B 的所有層和 MIFAR歌典協(xié)議,以及與該標(biāo)準(zhǔn)兼容的標(biāo)準(zhǔn)。支持?高速MIFAREIE接觸式通信波特率。內(nèi)部的發(fā)送器部分不需要增加有源電路就能夠直接驅(qū)動近操作距離 ?的天線(可達 100mm。接收器部分提供一個堅固而有效的解調(diào)和解碼電路,用于ISO14443A兼容的應(yīng)答器信號。數(shù)字部分處理ISO14443A幀和錯誤檢測(奇偶& CRC。此外,它還支持快速 CRYPTO1加密算法,用于驗

5、證 MIFARE系列產(chǎn)品。與主機通信模式有 8位并行和 SPI模式,用戶可根據(jù)不同的需求選擇不同的模式,這樣給讀卡器/終端的設(shè)計提供了極大的靈活性。圖 1.1 MFRC531特性高集成度的調(diào)制解調(diào)電路;采用少量外部器件,即可輸出驅(qū)動級接至天線;最大工作距離100mm支持 ISO/IEC14443 A/B 和 MIFARES典協(xié)議;支持非接觸式高速通信模式,波特率可達424kb/s ;采用Crypto1加密算法并含有安全的非易失性內(nèi)部密匙存儲器;管腳兼容 MF RC500 MF RC530 SL RC400;與主機通信的2種接口:并行接口和 SPI ,可滿足不同用戶的需求;自動檢測微處理器并行接

6、口類型;靈活的中斷處理;64字節(jié)發(fā)送和接收 FIFO緩沖區(qū);帶低功耗的硬件復(fù)位;可編程定時器;唯一的序列號;用戶可編程初始化配置;面向位和字節(jié)的幀結(jié)構(gòu);數(shù)字、模擬和發(fā)送器部分經(jīng)獨立的引腳分別供電;內(nèi)部振蕩器緩存器連接13.56MHz石英晶體;數(shù)字部分白電源(DVDD)可選擇3.3V或5V;在短距離應(yīng)用中,發(fā)送器(天線驅(qū)動)可以用 3.3V供電。MF RC531適用于各種基于ISO/IEC 14443標(biāo)準(zhǔn),并且要求低成本、小尺寸、高 性能以及單電源的非接觸式通信的應(yīng)用場合。公共交通終端;手持終端;板上單元;非接觸式p(M端;計量;非接觸式公用電話。桿制殘)c物掘工Classic并行微控制器接口自

7、動檢測連接的8位并行接口的類型。它包含一個的雙向FIFO緩沖區(qū)和一個可配置的中斷輸出。這樣就為連接各種MCU提供了很大的靈活性。即使使用非常低成本的器件也能滿足高速非接觸式通信的要求。帶FIFO的SPI從機接口,其串行時鐘SCK由主機提供。數(shù)據(jù)處理部分執(zhí)行數(shù)據(jù)的并行-串行轉(zhuǎn)換。它支持的幀包括CRG口奇偶校驗。它以完全透明的模式進行操作,因而支持ISO14443A的所有層。狀態(tài)和控制部分允許對器件進行配置以適應(yīng)環(huán)境的影響并使性能調(diào)節(jié)到最佳狀態(tài)。當(dāng)與MIFAREStandard和MIFARE產(chǎn)品通信時,使用高速 CRYPTO流密碼單元和一個可靠的非易失性密匙存儲器。模擬電路包含了一個具有非常低阻抗

8、橋驅(qū)動器輸出的發(fā)送部分。這使得最大操作距 離可達100mm接收器可以檢測到并解碼非常弱的應(yīng)答信號。由于采用了非常先進的技術(shù),接收器已不再是限制操作距離的因素了。該器彳為32腳SO封裝。器彳使用了 3個獨立的電源以實現(xiàn)在 EMC1性和信號解耦方 面達到最佳性能。MFRC53俱有出色的RF性能并且模擬和數(shù)字部分可適應(yīng)不同的操作電 壓。1N | |3TTIOSCOUTF MiireMl IN |T2111 tHIlilMUX 1 4,h,n-nn rR JUrX佗田加 I M UUMF RC53I包a doNrs$032掃I A2NiWrnr23 J MlNRIO | TTH |陽DV 5S JTT

9、T ALTi叫HITd i nrD2 rrri丁口$di piFIU國1.3跨邸圖非接觸式天線使用以下4個管腳:類型功TX1.TX2輸出線沖天線驅(qū)動器WMID模擬參若電壓RX輸入模擬天線輸入信號表1尺紋管腳描述為了驅(qū)動天線,MF RC531!過TX1和TX2提供13.56MHz的能量載波。根據(jù)寄存 器的設(shè)定對發(fā)送數(shù)據(jù)進行調(diào)制得到發(fā)送的信號。卡采用R四的負載調(diào)制進行響應(yīng)。天線拾取的信號經(jīng)過天線匹配電路送到 RX腳。MF RC531內(nèi)部接收器對信號進行檢測和 解調(diào)并根據(jù)寄存器的設(shè)定進行處理。然后數(shù)據(jù)發(fā)送到并行接口由微控制器進行讀取。MFRC531支持MIFAREW源天線的概念。它可以處理管腳腥 F

10、IN和MFOUT的MIFARE 核心?模塊的基帶信號 NPAUSE口 KOMP。名稱類型|功能MHN帶牖甯特觸發(fā)器的輸入MIFARE接口愉入M1OUT愉山MIFARL接11愉出我12MIFARE接口管腳描述MIFAR破口可采用下列方式與腥 F RC531的模擬或數(shù)字部分單獨通信:模擬電路可通過 MIFARE接口獨立使用。這種情況下,MFIN連接到外部產(chǎn)生的NPAUSE 信號。MFOU能供KOMP言號。數(shù)字電路可通過MIFAR報口驅(qū)動外部信號電路。這種情況下,腥FOUTI供內(nèi)部產(chǎn)生的NPAUSE言號而MFIN連接到外部輸入的KOMP信號。4線SPI接口:名稱類型功能AO帶施密特觸發(fā)器而LQMOS

11、1A2帶施密特觸發(fā)器的I/OSCKDO帶施密特觸發(fā)器的I/OM1SOALE帶施帝特觸發(fā)器的1NSS表13 SPI接口背腳描述代碼實現(xiàn)如下/功能:尋卡/參數(shù)說明:req_codeIN:尋卡方式/ 0 x52 =尋感應(yīng)區(qū)內(nèi)所有符合 14443A標(biāo)準(zhǔn)的卡/ 0 x26 =尋未進入休眠狀態(tài)的卡/ pTagTypeOUT:卡片類型代碼/ 0 x4400 = Mifare_UltraLight/ 0 x0400 = Mifare_One(S50)/ 0 x0200 = Mifare_One(S70)/ 0 x0800 = Mifare_Pro/ 0 x0403 = Mifare_ProX/ 0 x4403

12、 = Mifare_DESFire返回:成功返回MI_OK/signed char PcdRequest(unsigned char req_code,unsigned char *pTagType) signed char status;struct TransceiveBuffer MfComData;struct TransceiveBuffer *pi;pi = &MfComData;MFRC531_WriteReg(RegChannelRedundancy,0 x03);MFRC531_ClearBitMask(RegControl,0 x08);MFRC531_WriteReg(R

13、egBitFraming,0 x07);MFRC531_SetBitMask(RegTxControl,0 x03);MFRC531_SetTimer(4);MfComData.MfCommand = PCD_TRANSCEIVE;MfComData.MfLength = 1;MfComData.MfData0 = req_code;status = MFRC531_ISO14443_Transceive(pi);if (!status)if (MfComData.MfLength != 0 x10) status = MI BITCOUNTERR; )*pTagType = MfComDat

14、a.MfData0;*(pTagType+1) = MfComData.MfData1;return status;)/將存在RC531EEPROM的密鑰匙調(diào)入RC531白FIFO/input: startaddr=EEPROM 地址/char PcdLoadKeyE2(unsigned int startaddr) char status;struct TransceiveBuffer MfComData;struct TransceiveBuffer *pi;pi = &MfComData;MfComData.MfCommand = PCD_LOADKEYE2;MfComData.MfLe

15、ngth = 2;MfComData.MfData0 = startaddr & 0 xFF;MfComData.MfData1 = (startaddr 8) & 0 xFF;status = MFRC531_ISO14443_Transceive(pi);return status;)/功能:將已轉(zhuǎn)換格式后的密鑰送到RC531FIFO中input:keys=密鑰/signed char PcdAuthKey(unsigned char *pKeys) signed char status;struct TransceiveBuffer MfComData;struct Transceive

16、Buffer *pi;pi = &MfComData;MFRC531_SetTimer(4);MfComData.MfCommand = PCD_LOADKEY;MfComData.MfLength = 12;memcpy(&MfComData.MfData0, pKeys, 12);status = MFRC531_ISO14443_Transceive(pi);return status;)/功能:用存放RC531FIFO中的密鑰和卡上的密鑰進行驗證/input:auth_mode= 驗證方式,0 x60:驗證砒鑰,0 x61:驗證B密鑰 / block= 要驗證的絕對塊號/ g_cSNR

17、=序列號首地址/signed char PcdAuthState(unsigned char auth_mode,unsigned char block,unsigned char *pSnr)(signed char status;struct TransceiveBuffer MfComData;struct TransceiveBuffer *pi;pi = &MfComData;MFRC531_WriteReg(RegChannelRedundancy,0 x0F);MFRC531_SetTimer(4);MfComData.MfCommand = PCD_AUTHENT1;MfCom

18、Data.MfLength = 6;MfComData.MfData0 = auth_mode;MfComData.MfData1 = block;memcpy(&MfComData.MfData2, pSnr, 4);status = MFRC531_ISO14443_Transceive(pi);if (status = MI_OK)(if (MFRC531_ReadReg(RegSecondaryStatus) & 0 x07) status = MI_BITCOUNTERR; elseMfComData.MfCommand = PCD_AUTHENT2;MfComData.MfLeng

19、th = 0;status = MFRC531_ISO14443_Transceive(pi);if (status = MI_OK)if (MFRC531_ReadReg(RegControl) & 0 x08) status = MI_OK; else status = MI_AUTHERR; return status;/讀mifare_one卡上一塊(block)數(shù)據(jù)(16字節(jié))/input: addr = 要讀的絕對塊號output:readdata = 讀出的數(shù)據(jù)/signed char PcdRead(unsigned char addr,unsigned char *pRead

20、data) signed char status;struct TransceiveBuffer MfComData;struct TransceiveBuffer *pi;pi= &MfComData;MFRC531_SetTimer(4);MFRC531_WriteReg(RegChannelRedundancy,0 x0F);MfComData.MfCommand = PCD_TRANSCEIVE;MfComData.MfLength = 2;MfComData.MfData0 = PICC_READ;MfComData.MfData1 = addr;status = MFRC531_I

21、SO14443_Transceive(pi); if (status = MI_OK) if (MfComData.MfLength != 0 x80) status = MI_BITCOUNTERR; else memcpy(pReaddata, &MfComData.MfData0, 16); return status;/寫數(shù)據(jù)到卡上的一塊signed char status;struct TransceiveBuffer MfComData;struct TransceiveBuffer *pi;pi = &MfComData;MFRC531_SetTimer(5);MFRC531_W

22、riteReg(RegChannelRedundancy,0 x07);MfComData.MfCommand = PCD_TRANSCEIVE;MfComData.MfLength = 2;MfComData.MfData0 = PICC_WRITE;MfComData.MfData1 = addr;status = MFRC531_ISO14443_Transceive(pi); if (status != MI_NOTAGERR)if(MfComData.MfLength != 4) status=MI_BITCOUNTERR; else MfComData.MfData0 &= 0 x

23、0F;switch (MfComData.MfData0) case 0 x00:status = MI_NOTAUTHERR;/input:adde= 要寫的絕對塊號 / writedata= 寫入數(shù)據(jù)/signed char PcdWrite(unsigned char addr,unsigned char*pWritedata)(signed char status;struct TransceiveBuffer MfComData;struct TransceiveBuffer *pi;pi = &MfComData;MFRC531_SetTimer(5);MFRC531_WriteR

24、eg(RegChannelRedundancy,0 x07);MfComData.MfCommand = PCD_TRANSCEIVE;MfComData.MfLength = 2;MfComData.MfData0 = PICC_WRITE;MfComData.MfData1 = addr;status = MFRC531_ISO14443_Transceive(pi);if (status != MI_NOTAGERR)(if(MfComData.MfLength != 4) status=MI_BITCOUNTERR; elseMfComData.MfData0 &= 0 x0F;swi

25、tch (MfComData.MfData0)case 0 x00:status = MI_NOTAUTHERR;break;case 0 x0A:status = MI_OK;break;default:status = MI_CODEERR;break;if (status = MI_OK)MFRC531_SetTimer(5);MfComData.MfCommand = PCD_TRANSCEIVE;MfComData.MfLength = 16;memcpy(&MfComData.MfData0, pWritedata, 16);status = MFRC531_ISO14443_Tr

26、ansceive(pi);if (status != MI_NOTAGERR)MfComData.MfData0 &= 0 x0F;switch(MfComData.MfData0)(case 0 x00:status = MI_WRITEERR;break;case 0 x0A:status = MI_OK;break;default:status = MI_CODEERR;break; MFRC531_SetTimer(4);return status;/命令卡進入休眠狀態(tài)/signed char PcdHalt() (signed char status = MI_OK;struct T

27、ransceiveBuffer MfComData;struct TransceiveBuffer *pi;pi = &MfComData;MfComData.MfCommand = PCD_TRANSCEIVE;MfComData.MfLength = 2;MfComData.MfData0 = PICC_HALT;MfComData.MfData1 = 0;status = MFRC531_ISO14443_Transceive(pi);if (status) (if (status=MI_NOTAGERR | status=MI_ACCESSTIMEOUT) status = MI_OK

28、;MFRC531_WriteReg(RegCommand,PCD_IDLE);return status;/硬件版本號const unsigned char hardmodel12 = SL601F-0512;unsigned char g_bReceOk; /正確接收到上位機指令標(biāo)志unsigned char g_bReceAA; /接收到上位機發(fā)送的 AA字節(jié)標(biāo)志unsigned char g_bRc531Ok; /RC531 復(fù)位正常標(biāo)志unsigned int g_cReceNum; / 接收到上位機的字節(jié)數(shù)unsigned int g cCommand; 接收到的命令碼10unsig

29、ned char g_cSNR4; /M1卡序列號unsigned char g_cIcdevH; /設(shè)備標(biāo)記unsigned char g_cIcdevL; /設(shè)備標(biāo)記unsigned char g_cFWI; /unsigned char g_cCidNad; /unsigned char g_cReceBuf64; /和上位機通訊時的緩沖區(qū)UART2_Cmd(ENABLE);/響應(yīng)上位機發(fā)送的讀取硬件版本號命令/void ComGetHardModel(void)memcpy(&g_cReceBuf0, &hardmodel0, sizeof(hardmodel);AnswerOk(&g

30、_cReceBuf0, sizeof(hardmodel);/響應(yīng)上位機發(fā)送的設(shè)置RC53協(xié)議命令,ISO14443A/B/void ComPcdConfigISOType(void)if (MI_OK = MFRC531_CfgISOType(g_cReceBuf6) AnswerCommandOk(); else AnswerErr(-1);/響應(yīng)上位機發(fā)送的天線命令/void ComPcdAntenna(void)char status;if (!g_cReceBuf6) status = MFRC531_CloseAnt(); elsedelay_ms(10);status = MFR

31、C531_OpenAnt();delay_ms(10);if (status = MI_OK) AnswerCommandOk(); else AnswerErr(FAULT10); 11)/響應(yīng)上位機發(fā)送的A 卡休眠命令/void ComHlta(void) (if (MI_OK = PcdHalt() AnswerCommandOk(); else AnswerErr(FAULT10); /正確執(zhí)行完上位機指令,應(yīng)答(有返回數(shù)據(jù))/input : answerdata =應(yīng)答數(shù)據(jù)/ answernum =數(shù)據(jù)長度/void AnswerOk(unsigned char *answerdat

32、a, unsigned int answernum) unsigned char chkdata;unsigned int i;disableInterrupts();UART2_SendByte(0 xAA); / 發(fā)送命令頭UART2_ SendByte(0 xBB);chkdata = (unsigned char)(answernum + 6) & 0 xFF); /長度字,包括狀態(tài)字和效驗字UART2_SendByte(chkdata);chkdata = (unsigned char)(answernum + 6)8) & 0 xFF);UART2_SendByte(chkdata

33、);UART2_SendByte(g_cIcdevH);/發(fā)送設(shè)備標(biāo)識if (g_cIcdevH = 0 xAA)UART2_SendByte(0);UART2_SendByte(g_cIcdevL);if (g_cIcdevL = 0 xAA)UART2_SendByte(0);i = (unsigned char)(g_cCommand & 0 xFF); /發(fā)送命令碼UART2_SendByte(i);chkdata A= i;i = (unsigned char)(g_cCommand 8) & 0 xFF);UART2_SendByte(i);chkdata a= i;UART2 S

34、endByte(0); / 發(fā)送狀態(tài)字12chkdata A= g_cIcdevH A g_cIcdevL;for (i=0; i ;LK_H5IPrescalerConfigCLI.KlcckSecuritySyateffZrLJIIH4_Ccnfig(voidJlE4_3eInit);LH4_TiireBafleInit (TIM4_PMIM4_ITConfig(IIM4_IT_UPDJENABLE ;Total number of errors: 0Tot&l number of warnings: 05)編譯完后我們要把程序燒到模塊里, Debu嘴錄成功會聽到蜂鳴器響一聲。“中間的 D

35、ownload and點擊“用串口測試一下,把我們的傳感器模塊連接到我們的串口轉(zhuǎn) PCM的us端口,然后打開串口工具,配置好串口,波特率 一個停止位,無校驗位,串口開始工作,無卡時串口返回:6)USB模塊上再連接到115200, 8個數(shù)據(jù)位,EE CCFE NO01 00 0000 00 00 00 00 00 FF ,當(dāng)有卡時串 口返回 EE CC FE NO 01 01 00 7B DA 08 E4 00 00 FF。14產(chǎn)聿 口獵人 t Serial Hu nter ) V31-gSSii高去發(fā)嗎一COM4已趨開言摹啟起立瓢瓊主售止憶=1姑200, n 8 I瑪去提示饗意資料版權(quán)信息EE CC FE 010100 00 00 00 00 00 00 00 FF EE CC FE 010100 DO GO 00 00 00 00 FF EECC FE 01010000 M 0C t)01)0 DO 00FFEE CC FE (JIOfl00 OD 00 00 00 00 00 00 FF EE CC FE 010100 00 00 DO 00 00 00 00 FF EECC FE )1010000 00 00 DO QG

溫馨提示

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

評論

0/150

提交評論