0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCM200读写器模块的主要特性、引脚功能及应用实例分析

电子设计 来源:电子设计工程 作者:高玉芹 2021-03-29 09:04 次阅读

介绍了Philips公司的Mifare 1非接触IC卡读写器芯片MCM200的主要特性、引脚功能、内部的物理功能寄存器和基本指令集。重点介绍了Mifare 1非接触IC卡和MCM200数据通信的一些重要模块的编程思路和编程方法,给出了两个编程实例。

Mifare 1 IC智能(射频)卡的核心是Philips 公司的Mifare 1 IC S50(-01,-02,-03,-04)系列微模块(微晶片)。其相应的读写器模块为Philips公司的MCM200和MCM500。其中,MCM200模块主要应用于操作距离在 25mm的卡片读写器中;MCM500模块主要应用于操作距离在100mm的卡片读写器中。

1 MCM200模块的主要特性

MCM200读写器模块的主要特性如下:

●采用标准的双列直插式32引脚封装;

●工作频率为13.56MHz,采用标准的+5V电源供电,典型电流消耗为40mA;

●读写卡片距离可达25mm以上;

●与卡片的通信速率可达106kbps;

●每个扇区均包含有3套密码,同时包含有认证密码用的存储器;

●有防卡片重叠功能;

MCM200读写器模块的主要特性、引脚功能及应用实例分析

●带有16字节的FIFO(先进先出)队列接收/发送缓冲寄存器;

●在模块与卡片通信时可自动侦查错误,对数据流可自动分析;

●可对RF(射频)通道进行自动监控;

●有内建8位/16位CRC协处理器,可提供CRC、ARITY等数据校验;

●支持多种方式的活动天线,并且不需天线调节系统即可对天线进行补偿调节;

●带有标准的Mifare 并行接口?可直接由标准的MCU接口信号控制。

2 MCM200模块的引脚说明

MCM200的引脚排列如图1所示。各引脚的功能如下:

D0~D7:8位双向数据总线;

A0~A3:4位地址线;

BP:后备电池输入端,用于保护MCM内部密码RAM;

NPAUSE1:串行数据输出,用于驱动RF单元,该引脚必须连到RF单元的TP端。

NWR:写信号使能端;

NRD:读信号使能端;

NCS:该脚为低电平时选中MCM;

KOMP1:RF的比较器输入端,使用时必须连到RF单元的RX端;

NIRQ:MCU数据处理控制端。当该端为低时,MCU将用MCM状态寄存器中的内容来对MCM中的数据进行处理;

ALE:地址锁存使能端;

USEALE:选择从内部地址锁存器或A0~A3引脚取地址;

DGND:数字电路接地端;

DVDD:+5V电源端。

MODE:并行协议模式选择引脚,可用高电平驱动。

AVDD:+5V模拟电源输入引脚,用于RF射频单元;

AGND:RF射频单元(模拟电路)接地端;

NANT、ANT:天线连接端。

3 MCM200内部特殊功能寄存器

MCM200器件内部共有16个特殊功能寄存器,表1所列是这16种特殊功能寄存器的地址和读写情况。实际上,MCU主要通过对MCM寄存器的读写来控制MCM的工作。MCM是MCU与非接触式IC卡之间进行信息交换的接口,系统对卡片上的数据进行任何读写均须通过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) 相关的出错标志 接收卡片上数据

Answer to Request(Request的应答) 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 MCM200的指令和软件设计

MCU通过特殊指令来启动MCM200并运行,同时将这些指令传输到Mifare 1卡片上。MCM200的基本指令集如表2所列。Mifare 1 IC卡与MCM200之间的通信使用握手式半双工通信协议,卡片带有高速CRC协处理器,符合CCITT标准。卡片的ROM中固化了其运行所需的必要程序指令,它能使卡片有条不紊地与卡片读写器进行数据通信。但MCU对MCM200的指令操作通常不是简单的一条指令,而是用一个程序序列来完成,其中包括对MCM200硬件内核寄存器的设置。MCM对IC卡的操作流程如图2所示。现将其中各主要子程序模块的编程方法作以说明。

4.1 Request操作子程序

Request 指令用于通知MCM200在天线有效的工作距离内寻找Mifare 1卡片。如果 Mifare 1卡片存在,就和Mifare 1通信,并读取卡片类型号TAGTYPE(2个字节),然后由MCU根据TAGTYPE区别不同类型的卡片。Request 指令分为Request std指令和Re-quest all指令。Request std指令是连续性的读卡指令。Request all指令是非连续性的读卡指令,只读一次。Request all指令在成功地读取一张卡片之后,会一直等待使用者拿走这一张卡片,直到有新一张卡片进入MCM的天线有效工作范围之内。Request操作的汇编语言程序如下:

Request: MOV A,#0CH ?;设置MCM中的STACON 寄存器为0CH

MOV R0,#01H

MOVX @R0,A

MOV A,#0EH ?;设置MCM中的BAU-DRATE寄存器为0EH

MOV R0,#05H

MOVX @R0,A

MOV A,#0C0H ;设置MCM中的ENABLE寄存器为0C0H

MOV R0,#02H

MOVX @R0,A

MOV A,#0C6H ?;设置MCM中的MODE寄存器为0C6H

MOV R0?#07H

MOVX @R0?A

MOV A?#02H ;设置MCM中的RCODE

寄存器为02H

MOV R0?#0EH

MOVX @R0?A

MOV A?#07H ;设置MCM中的BCNT

S

寄存器为07H

MOV R0?#03H

MOVX @R0?A

MOV A?#10H ;设置MCM中的BCNTR

寄存器为?10H

MOV R0?#04H

MOVX @R0?A

JB F0, RSTD ;根据F0标志判断是执

行Request std操作还是

Request all操作

REQALL? MOV A?#52H ;Request all指令代码→A

AJMP RQTMCM

RSTD: MOV A?#26H ;Request std 指令代码→A

RQTMCM?MOV R0?#00H

MOVX @R0?A ;Request all指令或Request

std 指令写入DATA

MOV A? #0AH ?TOC = 0AH

MOV R0?#06H

MOVX @R0?A

MOV R0?#01H ;读STACON状态

MOVX A?@R0

JNB ACC.7?RD STACON ? TAGTYPE没

有到FIFO(DV=0)?重新读STACON状态

MOV R7,A ? stacon值暂存在R7中

MOV A, #00H ?TOC=00H

MOV R0,#06H

MOVX @R0,A

MOV A,R7 ;取暂存在R7中stacon值到A

JB ACC.6?TE_ERR ?; 定时计数器溢出错转TE_ERR

JB ACC.3,BE_ERR ?; 位计数器错转BE_ERR

MOV R0,#00H ;读卡片的卡片类型号TAGTYPE 0存入45H单元

MOVX A,@R0

MOV 45H?A

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卡片处在卡片读写器的天线工作范围之内,AntiCollision指令将启动AntiColli-sion模块的防重叠功能,同时MCM200将有序地读所有处在其天线有效工作距离内的Mifare 1卡片的40bit长的序列号SN。MCU接收到这5个字节的SN后,会进行校验。其校验、计算卡片序列号的方法是:采用相邻两个字节相互异或得出的结果与下一个字节再异或,前四个字节异或的结果与第5个字节应该相同,否则认为MCU读到的卡片的序列号有错,因此卡片的序列号的前四个字节是有意义的,第5个字节仅仅用于校验之用。这五个字节被存储在IC卡片的第0扇区的第0块中,它由卡片的生产商制定并固化,不得更改,所以在市面上流通的Mifare 1 S50系列的非接触式IC射频卡中,每一张卡片的序列号都是唯一的。“AntiCollision”?防卡片重叠 操作子程序清单如下:

anti? NOP

MOV A? #10H ?BCNTS = 10H,控制

MCU向DATA寄存器

发送 2个字节数据

MOV R0?#03H

MOVX @R0?A

MOV A? #0CH ;设置MCM中的

STACON寄存器

SETB ACC.0 ?AC =“1”,启动防重

叠状态机

MOV R0?#01H

MOVX @R0?A

ACALL D1000US ?DELAY 1000US

MOV A? #93H ;AntiCollision?防卡片

重叠 指令码写入DATA

MOV R0?#00H

MOVX @R0?A

MOV A? #20H

MOV R0?#00H

MOVX @R0?A

MOV A? #28H

MOV R0?#04H

MOVX @R0?A ?BCNTR = 28H ,接

收5个字节的数据

MOV A? #0AH

MOV R0?#06H

MOVX @R0?A ?TOC = 0AH

MOV R0?#01H

AGAIN: MOVX A?@R0 ? 读STACON状态

JNB ACC.7? AGAIN ?如果 DV=“0”重

读STACON

MOV R7,A

MOV A? #00H

MOV R0?#06H

MOVX @R0?A ?TOC = 00H

MOV A,R7

JB ACC.6? TE ERR ? 定时计数器溢出

错转TE ERR

JB ACC.3? BE ERR ?位计数器错转

BE ERR

MOV R7?#04H ?读4个字节的SN值

存入40H~43H单元,

前四个字节进行异或

MOV B?#00H

MOV R1?#40H

MOV R0?#00H

LOOP? MOVX A?@R0

MOV @R1?A ?存SN的前四个字节在

单片机内部RAM的

40H?41H?42H?43H单元

XRL B?A ?相邻字节相互异或

INC R1

DJNZ R7? LOOP

MOVX A?@R0 ?前四个字节异或的结

果和接收的第5个字

节进行比较,若不等则

XRL A?B 转错误处理

JNZ ANTIERR

RET

TE ERR?

RET

BE ERR?

RET

ANTIERR:

RET

4.3 “Select”?选卡片 操作子程序

该程序用于MCM200与卡片的真正联络。选择一张卡片通常由MCU向MCM200发送“SELECT”命令来完成。MCU发送“SELECT”命令后,会同时在“AntiCollision” 操作中得到Mifare 1卡片的40bit长的序列号的前四个字节以及前四个字节的异或结果,同时再重新发送给Mifare 1卡,只有本身的序列号和接收的序列号相同的卡片才被真正地选中。Select指令成功执行后,MCU将得到MCM DATA寄存器传来的一个字节长的卡片容量信息(SIZE字节)。SIZE字节被存储在Mifare 1卡片上的第00H扇区中的第00h 块中。

4.4 “Authentication”认证操作子程序

Mifare 1卡的每个扇区的块3包含该扇区的密码A?6个字节 、存取控制?4个字节 、密码B?6个字节 ,它是一个特殊的块。在确认了上述三个步骤后,就表示已经选择了一张卡片,在对卡片进行读写操作之前,还必须对卡片上已经设置的密码进行认证,如果匹配,则允许进一步的Read/Write操作。也可以通过选择存储在MCM的RAM密码集中的一组密码来进行认证操作。MCM能够存储3个密码集KEYSET0、KEYSET1和KEYSET2。每一个KEYSET又包含了KEYA及KEYB 等。在"Authentication"指令发出之前,必须设置密码控制寄存器KEYSTACON,使AL=1,然后设置KS0和KS1以指定一套密码集。同时,还必须设置密码地址寄存器KEYADDR,当AB为“1”时,选择KEYA,AB为“0”时选择KEYB,A5~A0用于选择MCM-RAM中存放密码的扇区地址(0~63), KEYADDR寄存器中的“AB”设置必须匹配"Authentication"命令,因为在"Authentication"命令中,60h代码用于认证KEYA;61h代码用于认证KEYB。正确地设置KEYSTACON 和KEYADDR寄存器之后,通过写"Authentication" 认证命令代码和写“地址”(Mifare

卡要认证的扇区地址是0~15)到DATA寄存器?认证密码操作的模块便开始启动执行。如果三遍认证的每一个环都为“真”,且都能正确通过验证,则整个认证成功。这时读写器即可对刚刚认证通过的卡片上的这个扇区进行下一步READ/WRITE 等操作。

4.5 “Read"或“Write"操作子程序

Read指令允许MCU通过MCM来读取Mifare 1卡片上完整的16个Bytes的数据块。Read指令操作只能一个块(Block)一个块地读,即一次只能读取16个字节。如果只要求读取某Block中的几个字节的数据,也只能一个整块16个字节一起读取,再由程序员选取指定的字节。从卡片上读到的数据必须由MCU进行校验,以确保数据的有效。

“Write” 写指令允许用户写数据到MIFARE卡片上(完整的16 个BYTEs的数据块)。只有在“Authentication” 认证指令完成后,才允许对数据扇区或数据块进行“Write”写指令操作。写入的数据块的数据结构如下:

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

通过一个写操作可将存储的数据在每一个block块中写3次并反写1次,从而完成数据块的初始化。块的地址必须写4次,其中2次为反向写入。正/负数据值将以标准的二进制补码格式来表示。

4.6 “Increment”或 “Decrement”增值或减值子程序

通过Mifare 1内部电路能够执行“Increment” &“Decrement”增值/减值操作,在根据KEY A 和KEY B 进行“Increment”&“Decrement”增值/减值操作时; “Increment”增值表示将指定的值加到卡片的存储器中;“Decrement”减值则表示从卡片的存储器中减去指定的值。每一个“Increment”& “Decrement”增值/减值操作都必须跟随一条“Transfer” 传送指令,这样才能真正地将数据结果传送到卡片上。如果没有传送指令,数据结果仍将保持在数据缓冲寄存器中。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 射频
    +关注

    关注

    101

    文章

    5345

    浏览量

    165804
  • 寄存器
    +关注

    关注

    30

    文章

    5020

    浏览量

    117630
  • 读写器
    +关注

    关注

    3

    文章

    604

    浏览量

    38391
收藏 人收藏

    评论

    相关推荐

    [1.3.1]--读写器的基本结构

    读写器标签
    学习电子知识
    发布于 :2022年11月30日 23:23:03

    基于μC/OS-Ⅱ和GPRS的无线RFID 读写器的研究与开发

    和C13组成,电容的值由天线本身和环境因素来决定,本系统C11、C13均取47 pF。该部分电路主要是为了实现滤波和天线之间的阻抗匹配,以使天线的性能达到最佳。2.5 读写器无线传输模块系统的无线
    发表于 08-03 10:39

    基于SPCE061A的射频读写器信号分析系统

    ,重新校正产品的信号输出。为解决这一问题,采用具有语音处理功能的SPCE061A单片机作为控制,对射频读写器常见的输出信号进行分析和处理。
    发表于 07-26 07:42

    射频读写器需要实现哪些功能

    射频识别技术RFID是一种非接触的自动识别技术,其基本原理是利用射频信号和空间耦合(电感和电磁耦合)传输特性,实现对被识别物体的自动识别,射频识别系统一般由两部分组成,射频标签(Tag)和射频读写器
    发表于 07-31 06:38

    RFID读写器操作距离怎么变长?

    无线射频识别(RFID)读写器读写距离取决于诸多因素,如RFID读写器的传输功率、读写器的天线增益、读写器IC的灵敏度、
    发表于 08-05 07:05

    超高频RFID读写器读写性能该怎么测试?

    电磁耦合)传输特性,实现对被识别物体的自动识别。RFID系统一般由读写器和电子标签组成,读写器通过无线通信方式获得标签信息,从而识别携带该标签的对象。因此,读写器性能对RFID系统
    发表于 09-03 06:45

    MG42630芯片具有哪些引脚功能及特性

    MG42630芯片具有哪些引脚功能及特性
    发表于 10-28 07:08

    基于ARM和Linux的超高频读写器设计

    了一种基于ARM和Linux的超高频读写器设计思路,指出了选题研究的目的和意义。 (2)阐述了超高频读写器的原理及其应用,分析读写器和标签之间进行数据传输时所用到的相关技术;在
    发表于 08-30 10:39 6次下载
    基于ARM和Linux的超高频<b class='flag-5'>读写器</b>设计

    rfid读写器的组成部分包括什么_rfid读写器主要功能

    本文首先介绍了RFID读写器的概念,其次阐述了rfid读写器的组成部分,最后介绍了rfid读写器主要功能
    发表于 04-10 09:14 1.9w次阅读

    rfid读写器有哪些技术指标_rfid读写器的发展趋势

    本文主要阐述了rfid读写器的技术指标,另外还分析了rfid读写器往后的发展趋势。
    发表于 04-10 09:23 3862次阅读

    rfid读写器的作用_rfid读写器怎么使用

    本文首先阐述了rfid读写器的作用,其次介绍了RFID读写器频率,最后介绍了rfid读写器的使用方法。
    发表于 04-10 09:36 5828次阅读

    工业RFID读写器各行业应用实例分析

    工业RFID读写器是基于无线射频识别技术识别目标对象并获取相关的数据信息,工业RFID读写器在工业上的使用,极大地解决了用工荒的难题,且RFID读写器的使用,还能提升工作效率、产品生产的质量与数量。
    的头像 发表于 03-15 11:00 510次阅读
    工业RFID<b class='flag-5'>读写器</b>各行业应用<b class='flag-5'>实例</b><b class='flag-5'>分析</b>

    RFID读写器的种类和应用

    RFID读写器可分为固定式读写器和手持读写器,各种各样的读写器扩大了RFID的应用范围。如何选择RFID读写器设备?怎样进行挑选更适合的RF
    的头像 发表于 01-04 20:59 1138次阅读
    RFID<b class='flag-5'>读写器</b>的种类和应用

    常见工业RFID读写器对比,不同工业读写器的特点和功能有哪些?

    工业RFID读写器根据其使用用途可以分为几种,分别是一体式读写器、分体式读写器、平板式读写器以及工业手持终端等。本文将从这几种产品的特点和功能
    的头像 发表于 07-31 14:52 945次阅读

    ANDEAWELL工业读写器在产线上的应用实例

    在不同产线上的应用实例,给大家做一个参考。 工业RFID读写器在不同产线上的应用实例 1、服装生产线的应用 将AR2301系列高频中功率壁挂读头安装在服装生产线工位上,RFID标签安装在服装托盘,当托盘经过时RFID
    的头像 发表于 07-31 14:55 260次阅读