Mifare 1非接觸式IC卡讀寫模塊MCM200
出處:維庫電子市場網(wǎng) 發(fā)布于:2023-07-21 14:52:03
摘要:介紹了Philips公司的Mifare 1非接觸IC卡讀寫器芯片MCM200的主要特性、引腳功能、內(nèi)部的物理功能寄存器和基本指令集。重點介紹了Mifare 1非接觸IC卡和MCM200數(shù)據(jù)通信的一些重要模塊的編程思路和編程方法,給出了兩個編程實例。
關(guān)鍵詞:非接觸IC卡 MCM200 讀寫器
Mifare 1 IC智能(射頻)卡的是Philips 公司的Mifare 1 IC S50(-01,-02,-03,-04)系列微模塊(微晶片)。其相應(yīng)的讀寫器模塊為Philips公司的MCM200和MCM500。其中,MCM200模塊主要應(yīng)用于操作距離在 25mm的卡片讀寫器中;MCM500模塊主要應(yīng)用于操作距離在100mm的卡片讀寫器中。1?。停茫停玻埃澳K的主要特性
MCM200讀寫器模塊的主要特性如下:
●采用標準的雙列直插式32引腳封裝;
●工作頻率為13.56MHz,采用標準的+5V電源供電,典型電流消耗為40mA;
●讀寫卡片距離可達25mm以上;
●與卡片的通信速率可達106kbps;
●每個扇區(qū)均包含有3套密碼,同時包含有密碼用的存儲器;
●有防卡片重疊功能;
●帶有16字節(jié)的FIFO(先進先出)隊列接收/發(fā)送緩沖寄存器;
●在模塊與卡片通信時可自動偵查錯誤,對數(shù)據(jù)流可自動分析;
●可對RF(射頻)通道進行自動監(jiān)控;
●有內(nèi)建8位/16位CRC協(xié)處理器,可提供CRC、PARITY等數(shù)據(jù)校驗;
●支持多種方式的活動天線,并且不需天線調(diào)節(jié)系統(tǒng)即可對天線進行補償調(diào)節(jié);
●帶有標準的Mifare 并行接口可直接由標準的MCU接口信號控制。
2?。停茫停玻埃澳K的引腳說明
MCM200的引腳排列。各引腳的功能如下:
D0~D7:8位雙向數(shù)據(jù)總線;
A0~A3:4位地址線;
BP:后備電池輸入端,用于保護MCM內(nèi)部密碼RAM;
NPAUSE1:串行數(shù)據(jù)輸出,用于驅(qū)動RF單元,該引腳必須連到RF單元的TP端。
NWR:寫信號使能端;
NRD:讀信號使能端;
NCS:該腳為低電平時選中MCM;
KOMP1:RF的比較器輸入端,使用時必須連到RF單元的RX端;
NIRQ:MCU數(shù)據(jù)處理控制端。當該端為低時,MCU將用MCM狀態(tài)寄存器中的內(nèi)容來對MCM中的數(shù)據(jù)進行處理;
ALE:地址鎖存使能端;
USEALE:選擇從內(nèi)部地址鎖存器或A0~A3引腳取地址;
DGND:數(shù)字電路接地端;
DVDD:+5V電源端。
MODE:并行協(xié)議模式選擇引腳,可用高電平驅(qū)動。
AVDD:+5V模擬電源輸入引腳,用于RF射頻單元;
AGND:RF射頻單元(模擬電路)接地端;
NANT、ANT:天線連接端。
3 MCM200內(nèi)部特殊功能寄存器
MCM200器件內(nèi)部共有16個特殊功能寄存器,表1所列是這16種特殊功能寄存器的地址和讀寫情況。實際上,MCU主要通過對MCM寄存器的讀寫來控制MCM的工作。MCM是MCU與非接觸式IC卡之間進行信息交換的接口,系統(tǒng)對卡片上的數(shù)據(jù)進行任何讀寫均須通過MCM 來傳遞。
表1 MCU200中的物理功能寄存器
| 寄存器名 | 地 址 | 讀(READ) | 寫(WRITE) |
| DATA | 00H | READ-BYTE | WRITE-BYTE |
| STACON | 01H | DV TE PE CE BE AE - - - - | SOR RFS - - - - 1 1 NRF AC |
| ENABLE | 02H | N/A | 1 PR CE CR - - - - - - - - |
| BCNTS | 03H | N/A | BIT-COUNT-SEND |
| BCNTR | 04H | N/A | BIT-COUNT-RECEIVE |
| BAUDRATE | 05H | N/A | - - - - - - - - 1 1 1 BR |
| TOC | 06H | N/A | TIMEOUT-COUNTER |
| MODE | 07H | N/A | 1 1 0 0 0 P2 P1 P0 P0 |
| CRCDATA | 08H | CRC-BYTE-READ | CRC-BYTE-WRITE |
| CRCSTACON | 09H | CV - - - - - - - - - - - - CZ | C8 - - - - - - - - - - - - CR |
| KEYDATA | 0AH | N/A | KEY-BYTE-WRITE |
| KEYSTACON | 0BH | - - - - - - - - - - - - - - - - | AL 0 - - - - - - - - KS1 KS0 |
| KEYADDR | 0CH | N/A | AL AB A5 A4 A3 A2 A1 A0 |
| 0DH | |||
| RCODE | 0EH | N/A | - - - - - - - - 0 0 RC1 RC0 |
表2 MCM2000的基本指令集
| 指 令 | 指令代碼(hex) | 相關(guān)的出錯標志 | 接收卡片上數(shù)據(jù) |
| Answer to Request(Request的應(yīng)答) | TE,BE | Tagtype | |
| Request std | 26 | ||
| Request all | 52 | ||
| AntiCollision(防重疊) | 93 | TE,BE | Serial Number |
| Select Tag(選卡片) | 93 | TE,BE,PE,CE | Size |
| Authentication() | TE,BE,PE,CE | / | |
| Auth-1a | 60 | ||
| Auth-1b | 61 | ||
| Load KEY(存取密碼) | / | AE | |
| Read(讀) | 30 | TE,BE,PE,CE | Data |
| Write(寫) | A0 | TE,BE | / |
| Increment(增值) | C1 | TE,BE | / |
| Decrement(減值) | C0 | TE,BE | / |
| Restore(重儲) | C2 | TE,BE | / |
| Transfer(傳送) | B0 | TE,BE | / |
| Halt(停機) | 50 | TE,BE | / |
4?。停茫停玻埃暗闹噶詈蛙浖O(shè)計
MCU通過特殊指令來啟動MCM200并運行,同時將這些指令傳輸?shù)剑停椋妫幔颍?1卡片上。MCM200的基本指令集如表2所列。Mifare 1 IC卡與MCM200之間的通信使用握手式半雙工通信協(xié)議,卡片帶有高速CRC協(xié)處理器,符合CCITT標準??ㄆ模遥希椭泄袒似溥\行所需的必要程序指令,它能使卡片有條不紊地與卡片讀寫器進行數(shù)據(jù)通信。但MCU對MCM200的指令操作通常不是簡單的一條指令,而是用一個程序序列來完成,其中包括對MCM200硬件內(nèi)核寄存器的設(shè)置。MCM對IC卡的操作流程如?,F(xiàn)將其中各主要子程序模塊的編程方法作以說明。
4.1 Request操作子程序
Request 指令用于通知MCM200在天線有效的工作距離內(nèi)尋找Mifare 1卡片。如果 Mifare 1卡片存在,就和Mifare 1通信,并讀取卡片類型號TAGTYPE(2個字節(jié)),然后由MCU根據(jù)TAGTYPE區(qū)別不同類型的卡片。Request 指令分為Request std指令和Re-quest all指令。Request std指令是連續(xù)性的讀卡指令。Request all指令是非連續(xù)性的讀卡指令,只讀。Request all指令在成功地讀取一張卡片之后,會一直等待使用者拿走這一張卡片,直到有新一張卡片進入MCM的天線有效工作范圍之內(nèi)。Request操作的匯編語言程序如下:
Request: MOV A,#0CH ;設(shè)置MCM中的STACON 寄存器為0CH
MOV R0,#01H
MOVX @R0,A
MOV A,#0EH ;設(shè)置MCM中的BAU-DRATE寄存器為0EH
MOV R0,#05H
MOVX @R0,A
MOV A,#0C0H ;設(shè)置MCM中的ENABLE寄存器為0C0H
MOV R0,#02H
MOVX @R0,A
MOV A,#0C6H ;設(shè)置MCM中的MODE寄存器為0C6H
MOV R0#07H
MOVX @R0A
MOV A#02H ;設(shè)置MCM中的RCODE
寄存器為02H
MOV R0#0EH
MOVX @R0A
MOV A#07H ;設(shè)置MCM中的BCNTS
寄存器為07H
MOV R0#03H
MOVX @R0A
MOV A#10H ;設(shè)置MCM中的BCNTR
寄存器為10H
MOV R0#04H
MOVX @R0A
JB F0, RSTD ;根據(jù)F0標志判斷是執(zhí)
行Request std操作還是
Request all操作
REQALL MOV A#52H ;Request all指令代碼→A
AJMP RQTMCM
RSTD: MOV A#26H ;Request std 指令代碼→A
RQTMCMMOV R0#00H
MOVX @R0A ;Request all指令或Request
std 指令寫入DATA
MOV A #0AH TOC = 0AH
MOV R0#06H
MOVX @R0A
MOV R0#01H ;讀STACON狀態(tài)
MOVX A@R0
JNB ACC.7RD STACON TAGTYPE沒
有到FIFO(DV=0)重新讀STACON狀態(tài)
MOV R7,A stacon值暫存在R7中
MOV A, #00H TOC=00H
MOV R0,#06H
MOVX @R0,A
MOV A,R7 ; 取暫存在R7中stacon值到A
JB ACC.6TE_ERR ; 定時計數(shù)器溢出錯轉(zhuǎn)TE_ERR
JB ACC.3,BE_ERR ; 位計數(shù)器錯轉(zhuǎn)BE_ERR
MOV R0,#00H ;讀卡片的卡片類型號TAGTYPE 0存入45H單元
MOVX A,@R0
MOV 45HA
MOV R0,#00H
MOVX A,@R0 ;讀卡片上的卡片類型號TAGTYPE1存入46H單元
MOV 46H,A
RET ; RET
TE_ERR: ;“TE” 錯誤處理
RET
BE_ERR: ; “BE”錯誤處理
RET
4.2 “AntiCollision”防卡片重疊 操作子程序
如果有多張Mifare 1卡片處在卡片讀寫器的天線工作范圍之內(nèi),AntiCollision指令將啟動AntiColli-sion模塊的防重疊功能,同時MCM200將有序地讀所有處在其天線有效工作距離內(nèi)的Mifare 1卡片的40bit長的序列號SN。MCU接收到這5個字節(jié)的SN后,會進行校驗。其校驗、計算卡片序列號的方法是:采用相鄰兩個字節(jié)相互異或得出的結(jié)果與下一個字節(jié)再異或,前四個字節(jié)異或的結(jié)果與第5個字節(jié)應(yīng)該相同,否則認為MCU讀到的卡片的序列號有錯,因此卡片的序列號的前四個字節(jié)是有意義的,第5個字節(jié)僅僅用于校驗之用。這五個字節(jié)被存儲在IC卡片的第0扇區(qū)的第0塊中,它由卡片的生產(chǎn)商制定并固化,不得更改,所以在市面上流通的Mifare 1 S50系列的非接觸式IC射頻卡中,每一張卡片的序列號都是的?!埃粒睿簦椋茫铮欤欤椋螅椋铮睢保煼揽ㄆ丿B 操作子程序清單如下:
anti NOP
MOV A #10H BCNTS = 10H,控制
MCU向DATA寄存器
發(fā)送 2個字節(jié)數(shù)據(jù)
MOV R0#03H
MOVX @R0A
MOV A #0CH ;設(shè)置MCM中的
STACON寄存器
SETB ACC.0 AC =“1”,啟動防重
疊狀態(tài)機
MOV R0#01H
MOVX @R0A
ACALL D1000US DELAY 1000US
MOV A #93H ;AntiCollision防卡片
重疊指令碼寫入DATA
MOV R0#00H
MOVX @R0A
MOV A #20H
MOV R0#00H
MOVX @R0A
MOV A #28H
MOV R0#04H
MOVX @R0A BCNTR = 28H ,接
收5個字節(jié)的數(shù)據(jù)
MOV A #0AH
MOV R0#06H
MOVX @R0A TOC = 0AH
MOV R0#01H
AGAIN: MOVX A@R0 讀STACON狀態(tài)
JNB ACC.7 AGAIN 如果 DV=“0”重
讀STACON
MOV R7,A
MOV A #00H
MOV R0#06H
MOVX @R0A TOC = 00H
MOV A,R7
JB ACC.6 TE ERR 定時計數(shù)器溢出
錯轉(zhuǎn)TE ERR
JB ACC.3 BE ERR 位計數(shù)器錯轉(zhuǎn)
BE ERR
MOV R7#04H 讀4個字節(jié)的SN值
存入40H~43H單元,
前四個字節(jié)進行異或
MOV B#00H
MOV R1#40H
MOV R0#00H
LOOP MOVX A@R0
MOV @R1A 存SN的前四個字節(jié)在
單片機內(nèi)部RAM的
40H41H42H43H單元
XRL BA 相鄰字節(jié)相互異或
INC R1
DJNZ R7 LOOP
MOVX A@R0 前四個字節(jié)異或的結(jié)
果和接收的第5個字
節(jié)進行比較,若不等則
XRL AB 轉(zhuǎn)錯誤處理
JNZ ANTIERR
RET
TE ERR
RET
BE ERR
RET
ANTIERR:
RET
4.3 “Select”選卡片 操作子程序
該程序用于MCM200與卡片的真正聯(lián)絡(luò)。選擇一張卡片通常由MCU向MCM200發(fā)送“SELECT”命令來完成。MCU發(fā)送“SELECT”命令后,會同時在“AntiCollision” 操作中得到Mifare 1卡片的40bit長的序列號的前四個字節(jié)以及前四個字節(jié)的異或結(jié)果,同時再重新發(fā)送給Mifare 1卡,只有本身的序列號和接收的序列號相同的卡片才被真正地選中。Select指令成功執(zhí)行后,MCU將得到MCM DATA寄存器傳來的一個字節(jié)長的卡片容量信息(SIZE字節(jié))。SIZE字節(jié)被存儲在Mifare 1卡片上的第00H扇區(qū)中的第00h 塊中。
4.4 “Authentication”操作子程序
Mifare 1卡的每個扇區(qū)的塊3包含該扇區(qū)的密碼A6個字節(jié)、存取控制4個字節(jié)、密碼B6個字節(jié),它是一個特殊的塊。在確認了上述三個步驟后,就表示已經(jīng)選擇了一張卡片,在對卡片進行讀寫操作之前,還必須對卡片上已經(jīng)設(shè)置的密碼進行,如果匹配,則允許進一步的Read/Write操作。也可以通過選擇存儲在MCM的RAM密碼集中的一組密碼來進行操作。MCM能夠存儲3個密碼集KEYSET0、KEYSET1和KEYSET2。每一個KEYSET又包含了KEYA及KEYB 等。在"Authentication"指令發(fā)出之前,必須設(shè)置密碼控制寄存器KEYSTACON,使AL=1,然后設(shè)置KS0和KS1以指定一套密碼集。同時,還必須設(shè)置密碼地址寄存器KEYADDR,當AB為“1”時,選擇KEYA,AB為“0”時選擇KEYB,A5~A0用于選擇MCM-RAM中存放密碼的扇區(qū)地址(0~63), KEYADDR寄存器中的“AB”設(shè)置必須匹配"Authentication"命令,因為在"Authentication"命令中,60h代碼用于KEYA;61h代碼用于KEYB。正確地設(shè)置KEYSTACON 和KEYADDR寄存器之后,通過寫"Authentication" 命令代碼和寫“地址”(Mifare 1卡要的扇區(qū)地址是0~15)到DATA寄存器密碼操作的模塊便開始啟動執(zhí)行。如果三遍的每一個環(huán)都為“真”,且都能正確通過驗證,則整個成功。這時讀寫器即可對剛剛通過的卡片上的這個扇區(qū)進行下一步READ/WRITE 等操作。
4.5 “Read"或“Write"操作子程序
Read指令允許MCU通過MCM來讀取Mifare 1卡片上完整的16個Bytes的數(shù)據(jù)塊。Read指令操作只能一個塊(Block)一個塊地讀,即只能讀?。保秱€字節(jié)。如果只要求讀取某Block中的幾個字節(jié)的數(shù)據(jù),也只能一個整塊16個字節(jié)一起讀取,再由程序員選取指定的字節(jié)。從卡片上讀到的數(shù)據(jù)必須由MCU進行校驗,以確保數(shù)據(jù)的有效。
“Write” 寫指令允許用戶寫數(shù)據(jù)到MIFARE卡片上(完整的16 個BYTEs的數(shù)據(jù)塊)。只有在“Authentication” 指令完成后,才允許對數(shù)據(jù)扇區(qū)或數(shù)據(jù)塊進行“Write”寫指令操作。寫入的數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)如下:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| address | address | address | address | V | A | L | UE |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| V | A | L | UE | V | A | L | UE |
通過一個寫操作可將存儲的數(shù)據(jù)在每一個block塊中寫3次并反寫1次,從而完成數(shù)據(jù)塊的初始化。塊的地址必須寫4次,其中2次為反向?qū)懭?。正/負?shù)據(jù)值將以標準的二進制補碼格式來表示。
4.6 “Increment”或 “Decrement”增值或減值子程序
通過Mifare 1內(nèi)部電路能夠執(zhí)行“Increment” &“Decrement”增值/減值操作,在根據(jù)KEY A 和KEY B 進行“Increment”&“Decrement”增值/減值操作時; “Increment”增值表示將指定的值加到卡片的存儲器中;“Decrement”減值則表示從卡片的存儲器中減去指定的值。每一個“Increment”& “Decrement”增值/減值操作都必須跟隨一條“Transfer” 傳送指令,這樣才能真正地將數(shù)據(jù)結(jié)果傳送到卡片上。如果沒有傳送指令,數(shù)據(jù)結(jié)果仍將保持在數(shù)據(jù)緩沖寄存器中。
版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 物聯(lián)網(wǎng)邊緣計算網(wǎng)關(guān)技術(shù)特性與部署運維指南2026/1/6 10:44:20
- 物聯(lián)網(wǎng)云平臺技術(shù)架構(gòu)與選型運維指南2025/12/30 10:05:07
- 工業(yè)級物聯(lián)網(wǎng)網(wǎng)關(guān)技術(shù)參數(shù)與選型及運維指南2025/12/23 9:51:05
- 什么是IIoT,IIoT的知識介紹2025/6/3 17:22:31
- 物聯(lián)網(wǎng)領(lǐng)域:新興薄膜技術(shù)的潛力與挑戰(zhàn)2025/5/12 15:18:17
- 高速PCB信號完整性(SI)設(shè)計核心實操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護設(shè)計
- 連接器耐腐蝕性能測試方法
- PCB電磁兼容(EMC)設(shè)計與干擾抑制核心實操規(guī)范
- 用于相位噪聲測量的低通濾波器設(shè)計與本振凈化技術(shù)
- MOSFET在高頻開關(guān)中的EMI問題
- 電源IC在便攜式設(shè)備中的設(shè)計要點
- 連接器結(jié)構(gòu)設(shè)計常見問題分析









