MF_RC500中文数据手册
MFRC500功能及引脚描述
MFRC500功能及引脚描述MF RC500资料一 MF RC500功能、引脚及特性描述MF RC500 功能、引脚及特性描述一、MF RC500功能特性描述MF RC500是应用于13.56MHz非接触式通信中高集成读卡集成电路中的一员。
该系列集成电路采用了先进的调制和解调技术,集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。
MF RC500支持ISO14443A的所有层。
内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线,最远操作距离可达100毫米。
接收器部分提供了一个坚固而有效的解调和解码电路,用语ISO1443A兼容的应答器信号。
数字部分处理ISO14443A侦和奇偶与循环冗余(CRC)错误检测。
此外,该电路还支持快速CRYPTO1加密算法用于验证MIFARE系列产品。
方便的并行接口可直接连接到任何8位的微处理器,给用户设计读卡器和终端提供了极大的方便,该电路所具备的详细功能特性如下:1、成度的模拟电路用于卡应答的解调和解码。
2、带缓冲的输出驱动器能够使用最少数量的外部元件与天线连接。
3、适用于近操作距离,最远达100毫米。
4、支持ISO14443A 1-4部分标准。
5、支持MIFARE标准各类射频卡,包括双界面卡。
6、带有加密并保护的内部非易失性存储器。
7、带有内部地址锁存器和IRQ中断引脚的并行微处理器接口。
8、具有灵活的中断处理功能。
9、能够自动检测并行微处理器接口类型。
10、方便的64字节发送和接收先进先出(FIFO)缓冲区。
11、具备硬件复位的低功耗功能12、可编程的定时器。
13、唯一的产品序列号。
14、用户可编程的启动配置功能。
15、具有位和字节定位侦。
16、具有数字、模拟和发送器各自独立的电源输入引脚。
17、内部振荡器缓冲连接13.56MHz晶体振荡器,低相位漂移。
18、具有时钟频率滤波功能。
在短距离应用中天线驱动器为3.3V操作电压。
19、产品采用SO32封状形式。
MFRC500中文资料
MFRC500中⽂资料MF RC500-⾼集成ISO14443A读卡芯⽚1 通⽤信息1.1 范围该⽂档讲述了MF RC500的功能包括功能及电⽓规格并给出了如何从系统和硬件的⾓度使⽤该芯⽚进⾏设计的细节1.2 概述MF RC500是应⽤于13.56MHz⾮接触式通信中⾼集成读卡IC系列中的⼀员该读卡IC系列利⽤了先进的调制和解调概念完全集成了在13.56MHz下所有类型的被动⾮接触式通信⽅式和协议MF RC500⽀持ISO14443A所有的层内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线可达100mm接收器部分提供⼀个坚固⽽有效的解调和解码电路⽤于ISO14443A兼容的应答器信号数字部分处理ISO14443A帧和错误检测奇偶CRC此外它还⽀持快速CRYPTO1加密算法⽤于验证MIFARE系列产品⽅便的并⾏接⼝可直接连接到任何8位微处理器这样给读卡器/终端的设计提供了极⼤的灵活性1.3 特性y ⾼集成度模拟电路⽤于卡应答的解调和解码y 缓冲输出驱动器使⽤最少数⽬的外部元件连接到天线y 近距离操作(可达100mm)y ⽀持MIFARE双接⼝卡IC和ISO14443A14部分y 加密并保护内部⾮易失性密匙存储器y 并⾏微处理器接⼝带有内部地址锁存和IRQ线y 灵活的中断处理y ⾃动检测微处理器并⾏接⼝类型y ⽅便的64字节发送和接收FIFO缓冲区y 带低功耗的硬件复位y 软件实现掉电模式y 可编程定时器y 唯⼀的序列号y ⽤户可编程的启动配置y 位和字节定位帧y 数字模拟和发送器部分各⾃独⽴的电源输⼊脚y 内部振荡器缓冲连接13.56MHz⽯英晶体低相位抖动y 时钟频率滤波y 短距离应⽤中发送器天线驱动器为3.3V操作2 ⽅框图图2-1 MF RC500⽅框图3 管脚信息3.1 管脚配置下图所⽰⽤⿊体字母标注的管脚由A VDD和A VSS供电⿊线所标的管脚由TVSS和TVDD供电其它管脚由DVDD和DVSS供电I输出PWR符号类型描述振荡器反相放⼤器输⼊输出中断事件请求信号接⼝输⼊发送经过调制的发送器电源发送经过调制的发送器地提供选择和激活NWR I写MF RC500寄存器写⼊数据D0~D7 R/NW I //写选择所要执⾏的是读还是写nWrite I 写选择所要执⾏的是读还是写NRD I读寄存器读出数据D0~D7 NDS I数据选通读和写周期的选通读和写周期的选通为⾼时将为低时选通信号将地址选通为低时选通信号将寄存器地址位信号为低可以开始⼀个存取周期地址线1寄存器地址位寄存器地址位数字电源该脚输出模拟测试信号接收器输⼊卡应答输⼊脚该应答为经过天线电路耦合的调制内部参考电压该脚输出内部参考电压复位和掉电当为⾼时内部灌电流关闭振荡器停⽌输⼊端与外部断开该管脚的下降沿启动内部复位振荡器反向放⼤器输出表3-1 MF RC500管脚描述4 并⾏接⼝4.1 所⽀持的微处理器接⼝概述 MF RC500⽀持与不同的微处理器直接接⼝可与个⼈电脑的增强型并⼝EPP直接相连下表所⽰为MF RC500所⽀持的并⼝信号总线控制信号总线独⽴的地址和数据总线复⽤的地址和数据总线控制 NRD NWR NCS NRD NWR NCSALE地址 A0,A1,A2 AD0,AD1,AD2,AD3,AD4,AD5 独⽴的读和写选通信号数据D0 … D7AD0 … AD7控制 R/NW,NDS,NCSR/NW,NDS,NCS,AS地址 A0,A1,A2 AD0,AD1,AD2,AD3,AD4,AD5 共⽤的读和写选通信号数据D0 … D7AD0 … AD7控制 nWrite,nDStrb,nAStrb,nWait地址 AD0,AD1,AD2,AD3,AD4,AD5 带握⼿的共⽤读和写选通信号EPP数据AD0 … AD7表4-1 所⽀持的并⼝信号4.2 微处理器接⼝类型⾃动检测在每次上电或硬复位后 MF RC500也复位其并⾏微处理器接⼝模式并检测当前微处理器接⼝的类型MF RC500在复位阶段后根据控制脚的逻辑电平识别微处理器接⼝这是由固定管脚连接的组合见下表和⼀个专门的初始化程序实现的见11.44.3 与不同微处理器类型的连接如下表所⽰并⾏接⼝类型独⽴读/写选通共⽤读/写选通MF RC500专⽤地址总线复⽤地址总线专⽤地址总线复⽤地址总线带握⼿的复⽤地址总线ALE HIGH ALEHIGHASnAStrb A2 A2 LOW A2 LOW HIGH A1 A1 HIGH A1 HIGH HIGH A0 A0 HIGH A0 LOW nWait NRD NRD NRD NDS NDS NDStrb NWR NWR NWR R/NW R/NWNWRite NCS NCS NCS NCS NCSLOW D7 … D0D7 … D0AD7 … AD0D7 … D0AD7 … AD0AD7 … AD0表4-24.3.1 独⽴的读/写选通信号图4-1 独⽴的读时序规格参见20.5.2.1章节4.3.2 共⽤的读/写选通信号图4-2 共⽤的读/写选通连接到微处理器时序规格参见20.5.2.2章节4.3.3 带握⼿机制的共⽤读/写选通信号EPP图4-3 带共⽤读/写选通和握⼿机制连接到微处理器时序规格参见20.5.2.3章节EPP备注尽管在EPP的标准中⽆⽚选信号的定义MF RC500的N_CS允许禁⽌nDStrb信号如果不⽤应将其接到DVSS在每次上电或硬复位后nWait信号由A0脚发出为⾼阻态nWait将在复位后nAStrb上的第⼀个下降沿时定义MF RC500不⽀持读地址周期5 MF RC500寄存器集合5.1 MF RC500寄存器概述和停⽌字节缓冲区输⼊和输出接收器和发送器以及例如定时器显⽰上次命令执⾏错误状态的错误标志MF RC500寄存器集(续)接收器启动前的时间间隔信道上数据完整性检测的类型和模式表5-1 MF RC500寄存器汇总5.1.1 寄存器位状态不同的寄存器的位和标志的状态是不同的这取决于它们的功能原则上具有相同状态的位都归类到共⽤的寄存器中状态这些位可通过微处理器读和写因此它们的内容不会例如TimerReload寄存器可通过微处理器读写还会被内部状态机读取但不会改变它们这些位可通过微处理器读和写例如寄存器在执⾏完实际的命令后⾃动改变它的值这些寄存器保存标志其值仅由内部状态决定ErrorFlag状态但不能通过外部写⼊这些寄存器仅⽤于控制⽅式它们可通过微处理器写⼊但不能读出读这些寄存器会返回不确定的值TestAnaSelect脚的信号是不可能读出它的内容表5-2 寄存器位的状态和设计5.2 寄存器描述5.2.1 页0命令和状态5.2.1.1 Page寄存器选择寄存器页名称Page 地址0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38 复位值1000000,0x807 6 5 4 3 2 1 0R/W R/W R/W R/W R/W R/W R/W R/W 位描述PageSelect低位由地址脚或内部地址锁存单独定义内部地址所处的整个内容定义寄存器地址4-2此情况下它指定寄存器页5.2.1.2 Command寄存器启动和停⽌命令的执⾏名称Command 地址0x01 复位值x00000000xx07 6 5 4 3 2 1 0 IFDetect Busy 0 Commandr r dy dy dy dy dy dy位描述显⽰接⼝检测逻辑的状态接⼝检测正在进⾏读该寄存器显⽰实际执⾏的命令5.2.1.3 FIFOData寄存器64字节FIFO缓冲区输⼊和输出名称FIFOData 地址0x02 复位值xxxxxxxx0xxx7 6 5 4 3 2 1 0FIFODatady dy dy dy dy dy dy dy位描述并出的作⽤5.2.1.4 PrimaryStatus寄存器接收器发送器和FIFO缓冲区状态标志名称PrimaryStatus 地址0x03 复位值000001010x05 7 6 5 4 3 2 1 0HiAlertLoAlertErr0 ModemState IRqr r r r r r r r位描述因此它帧起始模式FIFO缓冲区发送数据或冗余检测位当接收器启动时当接收器停⽌时RxWait计数器激活缓冲区内的字节数满⾜下⾯的等式HiAlert=FIFOLength WaterLevel时1FIFOLength=WaterLevel=4 HiAlert=FIFOLength=59中的字节数满⾜下⾯的等式HiAlert=64WaterLevel时1例如 FIFOLength=WaterLevel= 15.2.1.5 FIFOLengthFIFO中的缓冲字节数名称FIFOLength 地址0x04 复位值000000000x007 6 5 4 3 2 1 00 FIFOLengthr r r r r r r r 位描述位符号功能7 0保留将来之⽤6~0 FIFOLengh 指⽰保存在FIFO缓冲区的字节数写⼊FIFOData寄存器增加读减少FIFOLength5.2.1.6 SecondaryStatus寄存器不同的状态标志名称SecondaryStatus 地址0x05 复位值011000000x607 6 5 4 3 2 1 0 TRunning E2Ready CRCReady 0 0 RxLastBits r r r r r r r r 位描述位符号功能7 TRunning 如果为1MF RC500的定时器单元正在运⾏例如计数器会在下个定时器时钟将TimerValue寄存器值减⼀6 E2Ready 如果为1MF RC500已经完成对E2PROM的编程5 CRCReady 如果为1MF RC500已经完成CRC的计算4~3 00 该值不会被改变2~0 RxLastBits 显⽰最后接收字节的有效位个数如果为0整个字节有效5.2.1.7 InterruptEn寄存器使能和禁⽌中断请求通过的控制位名称InterruptEn 地址0x06 复位值000000000x007 6 5 4 3 2 1 0LoAlertIEn SetIEn 0 TimerEn TxIEn RxIEn IdleIEn HiAlertIEnw r/w r/w r/w r/w r/w r/w r/w位描述该位清零将清除标记的位允许将定时器中断请求由传递给脚IRQ除了通过外该位不能直接置位或清零允许将发送器中断请求由TxIRq传递给脚IRQ外该位不能直接置位或清零允许将接收器中断请求由RxIRq指⽰传递给脚除了通过外该位不能直接置位或清零允许将中断请求由IdleIRq传递给脚IRQ除了通过外该位不能直接置位或清零中断请求由HiAlertIRq指⽰传递给脚IRQ除了通过外该位不能直接置位或清零允许将中断请求LoAlertIRq指⽰传递给脚IRQ除了通过外该位不能直接置位或清零5.2.1.8 InterruptRq寄存器中断请求标志名称InterruptRq 地址0x07 复位值000000000x007 6 5 4 3 2 1 0LoAlertIRqHiAlertIRqIdleIRqSetIRq 0 TimerIRqTxIRq RxIRqw r/w dy dy dy dy dy dy位描述设置为1定义在InterruptRq寄存器中置1的位设置为0清除InterruptIRq中标记的位6 0保留将来之⽤5 TimerIRq当定时器TimerValue寄存器值减为0时置位4 TxIRq当下列条件之⼀发⽣时置位Transceive命令所有数据都已发送Auth1和Auth2命令所有数据都已发送WriteE2命令所有数据都已编程CalcCRC命令所有数据都已处理3 RxIRq当接收终⽌时该位置位2 IdleIRq当命令由其⾃⾝终⽌时该位置位例如当命令寄存器的值从任何寄存器变为Idle寄存器的值时如果⼀个未知的命令启动IdleIRq置位由微处理器启动Idle命令不置位IdleIRq1 HiAlertIRq当HiAlert置位时该位置位与HiAlert相反HiAlertIRq保存该事件并只能通过SetIRq复位0 LoAlertIRq当LoAlert置位时该位置位LoAlertIRq保存该事件并只能通过SetIRq 复位5.2.2 页1控制和状态5.2.2.1 页寄存器选择寄存器页见5.2.1.15.2.2.2 控制寄存器不同的控制标志例如定时器节电名称Control 地址0x09 复位值000000000x00FlushFIFOTStopNowCrypto1On0 0 StandByPowerDownr/w dy dy dy w w w r/w位描述这表⽰内部电流消耗模块关闭晶振保持将该位置这表⽰内部电流消耗模块包括晶振在内关闭3 Crypto1On该位指⽰因此与卡的所有数据通信都被加密⽴即停⽌定时器读该位总是返回读该位总是返回FIFO写指针和5.2.2.3 ErrorFlag寄存器Error标志指⽰上⼀个执⾏命令的错误状态名称ErrorFlag 地址0x0A 复位值000000000x007 6 5 4 3 2 1 0FramingErrParityErrCollErrFIFOOvflCRCErr0 KeyErrAccessErrr r r r r r r r 位描述位符号功能7 0保留将来之⽤6 KeyErr如果LoadKeyE2或LoadKey命令识别出输⼊数据不是根据密匙格式定义编码则将该位置位启动LoadKeyE2或LoadKey命令时该位清零5 AccessErr如果对E2PROM的访问权限被禁⽌该位置位启动与E2PROM相关的命令时该位清零4 FIFOOvfl如果微处理器或MF RC500内部状态机例如接收器试图将数据写⼊FIFO缓冲区⽽FIFO缓冲区已满时该位置位3 CRCErr如果RxCRCEn置位且CRC失败该位置位该位在PrepareRx状态中接收器的启动阶段⾃动清零2 FramingErr如果SOF不正确该位置位该位在PrepareRx状态中接收器的启动阶段⾃动清零1 ParityErr如果奇偶校验失败该位置位该位在PrepareRx状态中接收器的启动阶段⾃动清零0 CollErr如果检测到⼀个位冲突该位置位该位在PrepareRx状态中接收器的启动阶段⾃动清零5.2.2.4 CollPos寄存器RF接⼝上检测到的第⼀个位冲突的位置名称CollPos 地址0x0B 复位值000100110x007 6 5 4 3 2 1 0CollPosr r r r r r r r 位描述位符号功能7~0 CollPos 该寄存器指⽰在接收到的帧中第⼀个检测到的冲突位的位置例0x00指⽰在起始位的位冲突0x01指⽰在第1位的位冲突0x08指⽰在第8位的位冲突5.2.2.5 TimerValue寄存器定时器的实际值名称TimerValue 地址0x0C 复位值XXXXXXXX0xXX7 6 5 4 3 2 1 0TimerValuer r r r r r r r位符号功能7~0 TimerValue 该寄存器显⽰定时器计数器的实际值5.2.2.6 CRCResultLSB寄存器CRC协处理器寄存器低字节名称CRCResultLSB 地址0x0D 复位值XXXXXXXX0xXX7 6 5 4 3 2 1 0CRCResultLSBr r r r r r r r 位描述位符号功能7~0 CRCResultLSB 该寄存器显⽰CRC寄存器低字节的实际值它只在CRCReady设为1时有效5.2.2.7 CRCResultMSB寄存器CRC协处理器寄存器⾼字节名称CRCResultMSB 地址0x0E 复位值XXXXXXXX0xXX7 6 5 4 3 2 1 0CRCResultMSBr r r r r r r r 位描述位符号功能7~0 CRCResultMSB 该寄存器显⽰CRC寄存器⾼字节的实际值它只在CRCReady设为1时有效对于8位CRC校验该寄存器值未定义5.2.2.8 BitFraming寄存器位⽅式帧的调节名称BitFraming 地址0x0F 复位值000000000x007 6 5 4 3 2 1 00 RxAlign 0 TxLastBitsr/w dy dy dy r/w dy dy dy⽤于位⽅式帧的接收更多的位存储到后⾯的位位置RxAlign例RxAlign0接收的第⼆个位存在位1RxAlign1接收的第⼆个位存在位2RxAlign3接收的第⼆个位存在位4RxAlign7注强烈建议不要使⽤7以防⽌数据丢失14223038检测到的位冲突不能通过解决需要软件来实现保留将来之⽤⽤于位⽅式帧的发送TxLastBits000指⽰最后字节的所有位都要发送在发送之后5.2.3 页2发送器和控制5.2.3.1 页寄存器选择寄存器页见5.2.1.15.2.3.2 TxControl寄存器控制天线脚TX1和TX2的逻辑状态名称TxControl 地址0x11 复位值010110000x587 6 5 4 3 2 1 0TX2RFEnTX1RFEnTX2Cw0 ModulatorSource 1 TX2Invr/w r/w r/w r/w r/w r/w r/w r/w位描述调制器的输⼊源低⾼内部编码器11管脚该值不会被改变管脚管脚管脚管脚5.2.3.3 CwConductance寄存器选择天线驱动脚TX1和TX2的电导率名称CwConductance 地址0x12 复位值001111110x3F 7 6 5 4 3 2 1 0 0 0 GsCfgCWr/w r/w r/w r/w r/w r/w r/w r/w 位描述001111117 6 5 4 3 2 1 0000110017 6 5 4 3 2 1 0 注:该寄存器值不会被改变!5.2.3.6 ModWidth寄存器选择调制脉冲的宽度名称ModeWidth 地址0x15 复位值000100110x137 6 5 4 3 2 1 0ModeWidthr/w r/w r/w r/w r/w r/w r/w r/w 位描述5.2.3.7 PreSet16寄存器000000007 6 5 4 3 2 1 0 注该寄存器值不会被改变5.2.3.8 PreSet17寄存器000000007 6 5 4 3 2 1 0 注:该寄存器值不会被改变!5.2.4 页3:接收器和解码器控制5.2.4.1 页寄存器选择寄存器页见5.2.1.15.2.4.2 RxControl1寄存器控制接收器状态名称RxControl1 地址0x19 复位值011100110x737 6 5 4 3 2 1 00 1 1 1 0 0 Gainr/w r/w r/w r/w r/w r/w r/w r/w 位描述5.2.4.3 DecodeControl寄存器名称RxControl1 地址0x1A 复位值000010000x087 6 5 4 3 2 1 00 1 0 0 00 0ZeroAferCollr/w r/w r/w r/w r/w r/w r/w r/w 位描述位符号功能7~6 00 该值不会被改变5 ZeroAferColl 如果设置为1在⼀个位冲突之后的任何位都屏蔽为0这就很容易由ISO14443A中定义的防冲突处理进⾏处理4~0 01000 该值不会被改变5.2.4.4 BitPhase寄存器选择发送器和接收器时钟之间的位相位名称RxControl1 地址0x1B 复位值101011010xAD7 6 5 4 3 2 1 0BitPhaser/w r/w r/w r/w r/w r/w r/w r/w位描述位符号功能7~0 BitPhase 定义发送器和接收器时钟之间的位相位注:该寄存器的正确值对正常操作是⾮常必要的.5.2.4.5 RxThreshold寄存器选择位解码器的阀值名称RxThreshold 地址0x1C 复位值111111110xFF7 6 5 4 3 2 1 0MinLevel CollLevel r/w r/w r/w r/w r/w r/w r/w r/w位描述如果信号⼩于该值将不进⾏计算该信号必须被位达到以产⽣相对于强半位幅度的位冲突5.2.4.6 PreSet1D寄存器000000000x007 6 5 4 3 2 1 05.2.4.7 RxControl2寄存器控制解码器的状态并定义接收器的输⼊源名称RxThreshold 地址0x1E 复位值010*******x417 6 5 4 3 2 1 0RcvClkSell RxAutoPD 0 0 0 0 DecoderSource r/w r/w r/w r/w r/w r/w r/w r/w 位描述1时钟⽤作接收器时钟I-90o相移1接收器电路在接收前⾃动打开并在完成后关闭这样可减少电流的消耗如果设置为0该值不会被改变00011011管脚5.2.4.8 ClockQControl 寄存器控制时钟产⽣⽤于90o相移的Q 信道时钟名称ClockQControl 地址0x1F 复位值000XXXXX0xXX7 6 5 4 3 2 1 0 ClkQ180Deg ClkQCalib 0ClkQDelayr r/w r/w dy dy dy dy dy位描述位符号功能7 ClkQ180Deg 如果Q-时钟与I-时钟的相移超过180o,该位置1,否则为06 ClkQCalib 如果该位为0Q-时钟在复位后和从卡接收数据后⾃动校准5 0 该值不会被改变4~0 ClkQDelay 该寄存器显⽰实际⽤于产⽣I-时钟的90o相移以获得Q-时钟的延迟元素的数⽬它可由微处理器直接写⼊或在校准周期⾃动写⼊5.2.5 页4RF 时序和信道冗余5.2.5.1 页寄存器选择寄存器页见5.2.1.1 5.2.5.2 RxWait 寄存器选择发送后接收器启动前的时间间隔名称ClockQControl 地址0x21 复位值000001010x067 6 5 4 3 2 1 0 RxWaitr/w r/w r/w r/w r/w r/w r/w r/w 位描述位符号功能7~0 RxWait在数据发送后接收器的启动由于RxWait 位时钟⽽延迟在这段帧保护时间内管脚Rx 上的任何信号都被忽略5.2.5.3 ChannelRedundancy 寄存器选择RF 信道上数据完整性检测的类型和模式名称ChannelRedundancy 地址0x22 复位值000000110x037 6 5 4 3 2 1 00 CRCMSB FirstCRC3309CRC8 RxCRCEn TxCRCEn ParityOdd ParityEn r/w r/w r/w r/w r/w r/w r/w r/w。
RC500书籍
射频识别卡读写模块的设计与应用摘要摘要随着电子信息技术的发展,智能卡(IC卡)已经在我们的生活中随处可见。
射频识别卡正逐渐取代传统的接触式IC卡,成为智能卡领域的新潮流。
研究、开发射频识别卡的读写技术与读写设备,对其推广有着重要的实际意义。
本文首先介绍了射频识别卡及射频识别系统的工作原理。
为了使应用系统的开发人员无需掌握复杂的射频识别技术就可快速开发射频识别卡应用产品,本文基于模块化的设计思想设计开发了射频识别卡Mifare1的读写模块。
该读写模块不仅能完成对射频识别卡的控制和读写操作,而且可供用户在其基础上进行二次开发。
文中详细讨论了读写模块的具体实现。
硬件部分介绍了系统的组成、MCU与读写芯片的接口设计与硬件电路的实现。
软件部分重点阐述如何实现射频识别通信的底层驱动,并在此基础上将卡片的操作用函数形式封装,以供用户调用。
函数的封装严格按照软件工程的要求,具有硬件无关性,方便用户二次开发。
然后,给出了读写模块的两个应用实例:RFID卡通用读写卡器及带网络接口的考勤机,简要的介绍了其设计方法和用途。
最后,对本文所做工作进行了总结,并给出今后研究工作的展望。
关键词:射频识别,IC卡,读写设备作者:徐丽华指导老师:王宜怀ABSTRACT The Design and Application of Read/Write Module of RFID CardABSTRACTWith the rapid development of electronic information technology,smart cards (IC card) are now very popular in our life. Radio Frequency Identification (RFID) card is becoming a new fashion in the application field of smart card, replacing the traditional contacting IC card. So it is of great practical significance to study the technology of RFID Card and develop the read/write device of RFID card for its generalization.The common concept of the RFID card and the basic working principle of RFID system are explained chiefly in the first part of this paper. Then, a read/write module of Mifare1 RFID card is developed, based on the modular designing mind. The users of application system may develop their practical products rapidly with our module without understanding the details of RFID technology. The read/write module can not only do the control and read/write operations of the RFID card, but also can be redeveloped. The way to implement the read/write module is discussed in detail, including two parts, the hardware and the software. The former part includes the constitutes of the system, the design of the interface between MCU and the chip of RFID module, and the realization of the hardware circuits. And the latter mainly introduces how to drive the RFID communication and encapsulate the operation of the card into functions which can be transferred by the customers conveniently. The functions are irralated with hardware by doing its encapsulation according to the rules of software engineering.Then, two application examples based on read/write module are given, one is a general read/write device and the other is a check-in machine with network interface.At last, all the work are summarized and a research prospect of the subject in future is promised .Keywords:Radio Frequency Identificatiion(RFID),IC card,read/write device,Author:Xu Lihua Supervisor:Wang Yi huai射频识别卡读写模块的设计与应用目录目录摘要 (I)ABSTRACT (II)第一章概述 (1)1.1射频识别卡 (1)1.1.1 关于射频识别技术 (1)1.1.2 智能卡(IC卡) (1)1.1.3 射频识别卡 (2)1.1.4 RFID卡的优点 (2)1.1.5 RFID卡的应用 (3)1.1.6 RFID卡读写设备 (3)1.2 关于本课题 (3)1.2.1 RFID卡读写模块构思 (4)1.2.2 读写模块设计思路 (5)1.3 本文工作与论文结构 (6)1.3.1 本文工作 (6)1.3.2 论文结构 (7)第二章相关理论与技术 (8)2.1 射频识别卡的基本原理与相关技术 (8)2.1.1 射频识别系统的基本原理 (8)2.1.2 射频识别系统的分类 (9)2.1.3 能量传送 (10)2.1.4 数据传送 (10)2.1.5 数据完整性 (12)2.1.6 数据安全性 (12)2.2 RFID卡的国际标准 (13)2.2.1 RFID卡的国际标准 (13)2.2.2 近耦合IC卡国际标准ISO/IEC 14443 (13)2.3 RFID卡-Mifare (14)2.3.1 Mifare 1卡的特性 (15)2.3.2 Mifare 1芯片的逻辑结构 (15)2.3.3 存储器组织结构 (16)2.3.4 对Mifare 1的读写控制 (16)第三章读写模块硬件设计 (19)3.1 硬件系统组成 (19)3.2 芯片选型 (20)3.2.1 嵌入式微控制器MCU (20)3.2.2 射频读写芯片 (21)3.3 微控制器 MC68HC908GP32 (22)3.3.1 GP32特性 (22)3.3.2 GP32主要功能模块 (23)3.4 射频读写芯片MF RC500 (23)目录射频识别卡读写模块的设计与应用3.4.1 MF RC500的功能结构 (23)3.4.2 MF RC500的引脚说明 (24)3.4.3 MF RC500的寄存器 (25)3.4.4 MF RC500的并行接口 (25)3.5 读写模块硬件说明 (26)3.5.1 GP32与MF RC500的连接 (27)3.5.2 天线及相关电路的设计 (28)3.6 硬件测试 (29)3.6.1 GP32微控制器系统的测试 (29)3.6.2 GP32对MF RC500的控制 (30)3.6.3 MF RC500的天线测试 (31)第四章读写模块软件设计 (32)4.1 软件设计概述 (32)4.1.1 软件功能概述 (32)4.1.2 软件开发环境 (33)4.2 读写模块中的在线编程技术 (33)4.3 软件设计中与主控芯片相关部分 (34)4.4 GP32对MF RC500的基本操作 (36)4.4.1 访问MF RC500寄存器 (36)4.4.2 MF RC500的FIFO缓冲区机制 (39)4.4.3 MF RC500的命令 (40)4.5 与Mifare 1的射频识别通信 (41)4.5.1 Mifare 1的状态及射频通信处理流程 (41)4.5.2 卡片识别及选中过程 (42)4.5.3 密码验证过程 (50)4.5.4 对MF1存储区的操作 (52)4.6 读写模块的接口函数 (54)4.6.1 读写模块的底层通信函数 (54)4.6.2 读写模块的高级接口函数 (55)第五章应用实例 (57)5.1 通用读写卡器 (57)5.1.1 通用读写卡器系统组成 (57)5.1.2 通用读写卡器硬件说明 (58)5.1.3 通用读写卡器MCU方程序 (59)5.1.4 通用读写卡器PC机方函数库 (61)5.1.5 通用读写卡器应用 (61)5.2 带有网络接口的考勤机 (62)5.2.1 嵌入式网络接口技术 (62)5.2.2 读写卡模块和嵌入式网络接口的结合 (62)5.2.3 关键技术说明 (63)5.2.4 服务器方测试软件 (65)第六章总结 (66)致谢 (67)射频识别卡读写模块的设计与应用目录参考文献 (68)附录1 MC68HC908GP32结构框图 (70)附录2 MF RC500的寄存器 (71)附录3 MF RC500的命令集 (72)附录4 读写模块函数说明 (74)攻读学位期间公开发表的论文 (77)射频识别卡读写模块的设计与应用第一章概述第一章概述射频识别卡技术是近几年发展起来的一项新技术,它成功地结合射频识别技术和IC卡技术解决了无源(卡中无电源)和免接触的难题,是电子信息技术领域的一大突破。
基于MF RC500射频读写器的设计与实现
相连进行数据传送 , 同时 由 A 8 S2中断 0 IT ) T 95 (N 0 引脚控制读写芯片 M C 0 FR 50的中断请求 IQ 即 R , A 8 S2利用 M C 0 T 95 FR 50提供中断信息对其进行控
h FD r d r mm nc i s s ee t T d r s e a e n a r ga i a m n ly teR I ae o u i t n rsne . era e i r i l a dh s t n tjm igait e c ao ip d h e lb so n - b i.
Ab t a t T s pa e ito u e a n n—o tc RF e d r a e o MF s r c : hi p r nr d c s o c n a t r a e b s d n RC5 0. Th s h mais o 0 e c e tc f
特 殊 内存 寄 存 器 的读 写 。读 写 芯 片 M C0 的 F R 50 D —7 数据 端 口) A 8S2数 据端 口 P 口直 接 oD ( 和 T 95 0
签 、 写 器 以及 数 据 交 换 管 理 系 统 ( 用 系 统 ) 读 应 组 成 。R I FD技术 具有 条形 码 所 不 具 备 的 防水 、 防磁 、
Iso e a o itn e c n r a h 7 m. t p r t n d s c a e c c i a
Ke y wor : RFI ds D;r a e ;MF RC5 0 ed r 0
0 引言
射 频识别 ( ai FeunyIet ctn R do r ec dni ao ,以下 q i f i 简称 R I 技术是 一种 非 接 触式 自动 识 别技 术 , FD) 它 利用射 频方式 自动识别 目标对 象 , 获取 相关 数据 。 并
MF-R500
门禁安全管理系统是一种新型智能化的安全管理系统,它集自动识别技术和现代安全管理措施为一体涉及电子、机械、光学、计算机技术和通讯技术等诸多方面。
它是解决重要部门出入口便捷控制和实现安全防范管理的有效措施。
门禁系统自产生以来,主要应用于公司和智能小区,其系统自身相对完善,为此,根据开放实验室建设、管理的理念,我们设计了一种基于 IC 卡的智能门禁管理系统来实现开放实验室的管理,这也是基于校园网的开放式实验室管理系统的一部分。
该实验室门禁管理系统的设计目的是实现人员出人控制,方便人员进出开锁与报到、考勤数据采集、数据统计和信息查询过程的自动化;方便管理人员统计、考核实验室人员出勤情况,方便教学人员查询、考核各班级出勤率。
系统采用模块化设计,可以稍加裁剪改造为适于智能小区、公园景点、多校区图书馆等多种不同场合的大范围分布式远程门禁考勤系统。
1 门禁管理系统硬件的设计1.1 系统设计本门禁系统采用了IC卡进行身份验证,系统硬件由非接触式IC卡读卡头、门禁控制器、时钟模块、RS485接口电路、电控锁、报警器组成,如图1所示。
图1 系统的硬件基本结构门禁控制器是本系统的核心,当有人刷卡时,系统首先判断此卡是否合法,如果合法,则给电控锁开门信号,如果不合法则报警,并且定时把刷卡人的相关信息、开门时间及状态通过RS485总线上报给上位机。
1.2 硬件电路1.2.1 IC卡读卡器电路读卡芯片选用Philips公司的MF RC500,MFRC500型读卡器是应用于13.56 MHz 非接触式通信的高集成读卡IC系列中的一员。
该读卡系列利用先进的调制和解调概念,完全集成了在13.56 MHz下所有类型的被动非接触式通信方式和协议。
图2中的天线通过EMC低通滤波器(L1、L2和ClO、C11)和匹配电路(C4、C5和C8、C9)接至天线驱动端TX1和TX2;天线来的接收信号则通过接收电路(R3、R4、C3、C18)耦合至天线信号输入端RX。
RC 500 中文数据手册
2 方框图
图 2-1 MF RC500 方框图
3 管脚信息
3.1 管脚配置 下图所示用黑体字母标注的管脚由 AVDD 和 AVSS 供电 黑线所标的管脚由 TVSS 和 TVDD 供电 其它管脚由 DVDD 和 DVSS 供电
2
V+ GND
V+ GND
图 3-1 MF RC500 SO32 封装管脚配置
13 PreSet13
该值不会改变
14 PreSet14
该值不会改变
15 ModWidth
选择调整脉冲的宽度
16 PreSet16
该值不会改变
17 PreSet17
该值不会改变
18 Page
选择寄存器页
19 RxControl1
控制接收器状态
1A DecodeControl
控制解码器状态
1B BitPhase
状态机读取 但不会改变它们
dy
动态
这些位可通过微处理器读和写 但是它们也可被内部状态机自动写入 例如
4.1 所支持的微处理器接口概述
MF RC500 支持与不同的微处理器直接接口 可与个人电脑的增强型并口 EPP 直接相连
下表所示为 MF RC500 所支持的并口信号
总线控制信号
总线 独立的地址和数据总线
复用的地址和数据总线
控制 NRD NWR NCS
NRD NWR NCS ALE
独立的读和写选通信号 地址 A0,A1,A2
页 0:命令和状态
5 MF RC500 寄存器集合
5.1 MF RC500 寄存器概述
页 地址(hex)
寄存器名
0
Page
1
Command
rc500中文资料
5.1.1 寄存器位状态
不同的寄存器的位和标志的状态是不同的 这取决于它们的功能 原则上具有相同状态的位都归类到
共用的寄存器中
缩写 状态 描述
r/w 读和写 这些位可通过微处理器读和写 由于它们仅用于控制方式 因此它们的内容不会
被内部状态机影响 例如 TimerReload 寄存器可通过微处理器读写 还会被内部
23 A1
I 地址线 1 寄存器地址位 1
24 A2
I 地址线 2 寄存器地址位 2
25 DVDD PWR 数字电源
26 AVDD PWR 模拟电源
27 AUX
O 辅助输出 该脚输出模拟测试信号 该信号可通过 TestAnaOutSel 寄存器选择
28 AVSS
PWR 模拟地
29 RX
I 接收器输入 卡应答输入脚 该应答为经过天线电路耦合的调制 13.56MHz 载波
13 PreSet13
该值不会改变
14 PreSet14
该值不会改变
15 ModWidth
选择调整脉冲的宽度
16 PreSet16
该值不会改变
17 PreSet17
该值不会改变
18 Page
选择寄存器页
19 RxControl1
控制接收器状态
1A DecodeControl
控制解码器状态
1B BitPhase
I /读 MF RC500 寄存器读出数据 D0~D7 选通
NDS
I /数据选通 读和写周期的选通
nDStrb
I /数据选通 读和写周期的选通
12 DVSS
PWR 数字地
3
管脚 符号 类型 描述
13 D0~D7
rc500 kit user manual
RC500开发板用户手册(Rev1.2)一、 简介RC500开发板是专门用于开发调试RC500的RFIC卡读写设备,它可以通过RS232接口或USB接口实现与PC机的连接。
支持ISO14443 TYPE A标准的智能卡。
随机提供开发包,附带的程序实现访问射频卡的全部功能,具有完整的读写卡功能,可以读写卡的块,钱包充值、扣款等。
外接LCD和键盘,是一款功能完备的RFID开发板。
二、 跳线设置对STC单片机ISP时请用232串口,此时JP1的1-2,3-4短接。
ISP时可以直接拔插一下USB接口(USB口取电时,JP1的5-6,7-8断开)使得单片机复位上电。
或者也可以用J1直接用5V(>100ma)直流电供电。
三、文件说明1、RC500:通过串口或USB口(USB接口操作时JP1的5-6,7-8短接,需要先安装USB驱动,然后根据模拟的串口号(检查设备管理器) 选择相应的端口就可以了),运行DEMO程序直接调试观看结果。
RC500 DEMO.hex2、LCD DISPLAY ID:在LCD上直接显示MIFARE卡号,刷卡后会马上显示卡号,同时LED1会闪烁,此时串口不响应。
RC500 LCD DEMO.hex3、KEY LEDS:演示按键和LED动作,按哪个键会亮哪个LED,编号对应。
KEY-LED.hex【注意事项】1、操作卡片之前请多参考附带的卡片资料和芯片资料。
涉及密码部分请谨慎操作,违反操作规程产生的问题概不负责。
2、调试时天线和LCD接插方向请不要接反了,由此产生的损坏我们不负责。
请注意操作!不清楚可以参考图片。
3、出厂时天线的调谐是以S50卡为参考进行的调试,如果附近有金属等物可能会影响读写距离,其它情况请参考光盘附带的天线调整资料。
4、操作时请注意防止静电,另外因为开发板是裸露的,带电操作时请注意人身安全,防止触电发生,不要直接接触裸露的管脚,碰到短路情况 及时断电。
4、此类产品请远离儿童能接触到的地方,注意安全!5、卡片请不要弯折,不要用重物压或打击,否则容易损坏!四、调试(请注意图中红色圈圈)参数设置:1、先安装STC–ISP-V3.9软件并运行软件,您也可以到stc的网站下载更新的软件,详情请参考stc软件的使用。
PHILIP_出的MFRC500的匹配电路和天线设计指南中文版
-1-
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 6.4.3 屏蔽的环形天线 ..................................................................................................... 29
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925
设计 MF RC5ቤተ መጻሕፍቲ ባይዱ0 的匹配电路和天线的应用指南
目录 1 2 介绍 ........................................................................................................................ 3 系统的基本原理 ...................................................................................................... 3
6.1 6.2 6.3 总体布线提示 ................................................................................................................... 23 6.1.1 EMC 滤波器和接收电路 ......................................................................................... 23 天线和匹配电路的布线..................................................................................................... 24 直接匹配天线的例子 ........................................................................................................ 24 6.3.1 6.3.2 6.3.3 6.4 50 6.4.1 6.4.2 屏蔽和补偿的矩形天线........................................................................................... 24 矩形天线 ................................................................................................................ 25 屏蔽的矩形天线 ..................................................................................................... 26 匹配天线的举例 ........................................................................................................ 27 补偿的矩形天线 ..................................................................................................... 27 补偿的环形天线 ..................................................................................................... 28
MF RC500 匹配电路和天线的设计
MF RC500匹配电路和天线的设计2005年2月深圳吉盛科技有限公司目录应用笔记 MF RC500 匹配电路和天线的设计 (4)1. 简介 (4)2. 系统基本原理 (4)2.1 框图 (4)2.2 系统配置 (4)2.3 MIFARE 射频接口 (5)2.3.1 能量发送 (5)2.3.2 RWD到CARD的数据传送 (6)2.3.3 Card 到 RWD 的数据传送 (7)3 MF RC500 匹配电路和天线的设计 (10)3.1 基本设计规则 (10)3.2 优化天线尺寸评价 (12)3.3 直接匹配天线 (13)3.3.1 EMC电路 (13)3.3.2 接收电路 (13)3.3.3 直接匹配天线的天线匹配电路 (14)3.4 50Ω匹配天线 (18)3.4.1 EMC电路 (18)3.4.2 接收电路 (18)3.4.3 50Ω full range solution (18)3.4.4 50Ω小范围解决方法 (19)3.4.5 50Ω天线的天线匹配电路 (20)4 环境影响 (22)4.1 金属天线环境 (22)4.2 多种天线 (23)4.3 温度 (23)5 天线防护,补偿 (23)5.1.1 电气防护 (23)5.1.2 补偿 (24)5.1.3 导磁防护 (25)6.1 通用布线提示 (28)6.1.1 EMC过滤和接收电路 (28)6.2 天线布线和匹配电路 (28)6.3 直接匹配天线例子 (28)6.3.1 防护和补偿矩形天线 (28)6.3.2 矩形天线 (30)6.3.3 防护矩形天线 (30)6.4 50Ω匹配天线的例子 (31)6.4.2 补偿环形天线 (32)6.4.3 防护环形天线 (33)7 天线调整 (35)7.1 最好操作距离的调整方法 (35)7.1.1直接匹配天线的调整 (35)7.1.2 调试50Ω匹配天线 (36)7.2 品质因素checking (41)8 references (43)9 附录A (43)9.1 缩写 (43)9.2 电线线圈感应系数的计算 (44)9.3 天线电阻的计算 (45)应用笔记 MF RC500 匹配电路和天线的设计1. 简介这是支持MF RC500 MIFARE 读写集成电路IC的有关射频设计的应用笔记。
MF RC500 匹配电路和天线的设计
MF RC500匹配电路和天线的设计2005年2月深圳吉盛科技有限公司目录应用笔记 MF RC500 匹配电路和天线的设计 (4)1. 简介 (4)2. 系统基本原理 (4)2.1 框图 (4)2.2 系统配置 (4)2.3 MIFARE 射频接口 (5)2.3.1 能量发送 (5)2.3.2 RWD到CARD的数据传送 (6)2.3.3 Card 到 RWD 的数据传送 (7)3 MF RC500 匹配电路和天线的设计 (10)3.1 基本设计规则 (10)3.2 优化天线尺寸评价 (12)3.3 直接匹配天线 (13)3.3.1 EMC电路 (13)3.3.2 接收电路 (13)3.3.3 直接匹配天线的天线匹配电路 (14)3.4 50Ω匹配天线 (18)3.4.1 EMC电路 (18)3.4.2 接收电路 (18)3.4.3 50Ω full range solution (18)3.4.4 50Ω小范围解决方法 (19)3.4.5 50Ω天线的天线匹配电路 (20)4 环境影响 (22)4.1 金属天线环境 (22)4.2 多种天线 (23)4.3 温度 (23)5 天线防护,补偿 (23)5.1.1 电气防护 (23)5.1.2 补偿 (24)5.1.3 导磁防护 (25)6.1 通用布线提示 (28)6.1.1 EMC过滤和接收电路 (28)6.2 天线布线和匹配电路 (28)6.3 直接匹配天线例子 (28)6.3.1 防护和补偿矩形天线 (28)6.3.2 矩形天线 (30)6.3.3 防护矩形天线 (30)6.4 50Ω匹配天线的例子 (31)6.4.2 补偿环形天线 (32)6.4.3 防护环形天线 (33)7 天线调整 (35)7.1 最好操作距离的调整方法 (35)7.1.1直接匹配天线的调整 (35)7.1.2 调试50Ω匹配天线 (36)7.2 品质因素checking (41)8 references (43)9 附录A (43)9.1 缩写 (43)9.2 电线线圈感应系数的计算 (44)9.3 天线电阻的计算 (45)应用笔记 MF RC500 匹配电路和天线的设计1. 简介这是支持MF RC500 MIFARE 读写集成电路IC的有关射频设计的应用笔记。
MF RC500操作手册
读写器芯片MF RC500及其应用1 引言MF RC500是Philips公司生产的高集成度TYPE A读写器芯片.其主要性能如下:●载波频率为13.56MHz;●集成了编码调制和解调解码的收发电路;●天线驱动电路仅需很少的外围元件,有效距离可达10cm;●内部集成有并行接口控制电路,可自动检测外部微控制器(MCU)的接口类型;●具有内部地址锁存和IRQ线,可以很方便地与MCU接口.●集成有64字节的收发FIFO缓存器;●内部寄存器、命令集、加密算法可支持TYPE A标准的各项功能,同时支持MIFARE类卡的有关协议.●数字、模拟、发送电路都有各自独立的供电电源.基于以上特点,用MF RC500极易设计TYPE A型卡的读写器,可广泛用于非接触式公共电话、仪器仪表、非接触式手持终端等领域。
2 引脚功能MF RC500为32脚SO封装,需说明的是:某些引脚(带*号)依据其所用MCU(微控制器)的接口情况具有不同功能。
3 工作原理MF RC500的内部电路框图如图1所示,它由并行接口及控制电路、密钥存贮及加密算法Cypto1、状态机与寄存器、数据处理电路、模拟电路调制、解调及输出驱动电路等组成。
3.1 MF RC500寄存器设置MF RC500芯片的内部寄存器按页分配,,通过相应寻址方法获得地址。
内部寄存器共分8页,每页有8个寄存器,每页的第一个寄存器称为页寄存器,用于选择该寄存器页。
每个寄存器由8位组成,其位特性有四种:读/写(r/w) 、只读(r)、仅写(w)和动态(dy)。
其中dy属性位可由微控制器读写,也可以在执行实际命令后自动由内部状态机改变位值。
微控制器MCU通过对内部寄存器的写和读,可以预置和读出系统运行状况.寄存器在芯片复位状态为其预置初始值.了解内部寄存器的设置对于软件编程至关重要.3.2 并行接口MFRC500芯片可直接支持各种微控制器(MCU),也可直接和PC机的增强型并行接口(EPP)相连接,每次上电(PON)或硬启动(Reset)后,芯片会复原其并行接口模式并检测当前的MCU接口类型,通常用检测控制引脚逻辑电平的方法来识别MCU接口,并利用固定引脚连接和初始化相结合的方法实现正确的接口.图2给出了相应的连接接线图.3.3 E2PROM存贮器MFRC500的E2PROM共有32块,每块16字节。
MFRC500功能及引脚描述
MFRC500功能及引脚描述MF RC500资料一 MF RC500功能、引脚及特性描述MF RC500 功能、引脚及特性描述一、MF RC500功能特性描述MF RC500是应用于13.56MHz非接触式通信中高集成读卡集成电路中的一员。
该系列集成电路采用了先进的调制和解调技术,集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。
MF RC500支持ISO14443A的所有层。
内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线,最远操作距离可达100毫米。
接收器部分提供了一个坚固而有效的解调和解码电路,用语ISO1443A兼容的应答器信号。
数字部分处理ISO14443A侦和奇偶与循环冗余(CRC)错误检测。
此外,该电路还支持快速CRYPTO1加密算法用于验证MIFARE系列产品。
方便的并行接口可直接连接到任何8位的微处理器,给用户设计读卡器和终端提供了极大的方便,该电路所具备的详细功能特性如下:1、成度的模拟电路用于卡应答的解调和解码。
2、带缓冲的输出驱动器能够使用最少数量的外部元件与天线连接。
3、适用于近操作距离,最远达100毫米。
4、支持ISO14443A 1-4部分标准。
5、支持MIFARE标准各类射频卡,包括双界面卡。
6、带有加密并保护的内部非易失性存储器。
7、带有内部地址锁存器和IRQ中断引脚的并行微处理器接口。
8、具有灵活的中断处理功能。
9、能够自动检测并行微处理器接口类型。
10、方便的64字节发送和接收先进先出(FIFO)缓冲区。
11、具备硬件复位的低功耗功能12、可编程的定时器。
13、唯一的产品序列号。
14、用户可编程的启动配置功能。
15、具有位和字节定位侦。
16、具有数字、模拟和发送器各自独立的电源输入引脚。
17、内部振荡器缓冲连接13.56MHz晶体振荡器,低相位漂移。
18、具有时钟频率滤波功能。
在短距离应用中天线驱动器为3.3V操作电压。
19、产品采用SO32封状形式。
MFRC500射频卡识别电路的设计
3工作频率范围:0到40MHZ,相当于普通8051的0到80MHZ,实际工作频率可达48MHZ。
4用户应用程序空间:4K/8K/13K/16K/32K/64K字节。
5片上集成1280字节或512字节RAM.
6通用i/o口40,复位后为P1/P2/P3/P4/是双向口/弱上拉(普通8051传统i/o口):p0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为i/o口用时,需加上拉电阻。
4) 安全性好。MIFARE 卡的序列号是全球唯一的,不可以更改;读写时卡与读写器之间采用三次双向认证机制,互相验证使用的合法性,而且在通讯过程中所有的数据都加密传输;此外,卡片各个分区都有自己的读写密码和访问机制,卡内数据的安全得到了有效的保证。
5)适合于一卡多用。MIFARE 卡的存贮结构及特点(大容量--16分区、1024字节),能应用于不同的场合或系统,尤其适用于学校、企事业单位、智能小区的停车场管理、身份识别、门禁控制、考勤签到、食堂就餐、娱乐消费、图书管理等多方面的综合应用,有很强的系统应用扩展性,可以真正做到“一卡多用”。
6.1论文的主要研究成果13
MFRC50射频卡识别电路的设计
摘要:随着经济建设的不断发展,社会经济活动的日益增长,对于公共交通行业、无线通信领域、卫生保健行业、封闭式场所管理、身份识别、电话通信、大楼保安系统等,人们亦愈来愈多地开始接受和使用IC智能卡。特别是银行服务系统,IC智能卡替代流行多年的磁卡而服务于大众已日渐成熟。并且“一卡通”,一卡多用,给我们生活质量带来了很大的提高。IC智能卡自动电表抄表系统、煤气/自来水抄表系统、公交/地铁自动售票/检票系统、移动通信手机中IC智能SIM卡等,已愈来愈贴近我们的生活,成为我们生活的一部分。“刷卡”已成为人们日常生活中不可或缺的一部分
基于MF RC500的非接触式IC卡读写器设计
◇ 并 行 微 处 理 器 接 口带 有 内 部 地 址 锁 存 和
IQ线 : R
◇ 有 易用 的发 送 和接 收F F 冲区 : IO缓
◇ 支持 MIA EC ai: F R l c s
◇ 支 持MI F R 有 源天线 ; RA E
摘 要 :介 绍 了一种 基 于P ip 公 司 的基 站 芯 片MFR 5 0 hl s i C 0  ̄非接 触 式I 卡 读 写 器 的设 计 方 C
法 ,给 出 了MFR 5 0 特性 、 系统 组 成 和 天 线 的设 计 规 范 , 同时 给 出 了A 8 S 2 片机 与 C0 的 T95 单
在 该 读 写 器 基 础 上 开 发 适 用 各 方 面 自动识 别 系
统
◇ 缓 冲输 出驱 动器 可使 用最 少数 目的外 部元
件 以连 接到 天线 :
◇ 近距 离 操作 ( 1 0m ; 可达 0 m) 部振 荡 器缓 冲 区 :
◇ 带 低功 耗 的硬件 复位 功能 :
d nict n e t ai )开发 的非 接 触 式I 识 别 器 ,无 论 在 i f o C
◇ 带 有 高集成 度模 拟 电路 以用于 卡应答 的解
调 和解 码 :
系统 寿命 、防监听 、防解密 等性 能 上都 具 有很 大 的优 势 。为 此 ,本 文 给 出 了利 用 A 9 5 、MF T8 C 2 R 50 C 0 、Mi r卡 来 构 建 非 接 触 式 I 读 写 器 ,并 fe a C
V 1 . o . No5 9
Ma .2 0 y 07
2 0 年5 07 月
一 一 一 一 芒 一 ~ 一 一 5
基于MFRC500芯片的RFID读写器开发
◆ 内部 的发送 器部 分 不需要 增 加
有源 电路就 能 直接 驱 动近 距 离操 作 的 天线 ( 可达 10m 。 0 m) ◆ 接 收器部 分 提供 了一 个坚 固而 有 效 的 解 调 和 解 码 电 路 , 可 用 作
造 商 以及 I 片读 写 器制 造 商 和I C卡 C卡 软 件 设 计 公 司 ,也 大 都 以MIA E F R 技
可 通 过无 线 射频 信 号来 交 换信 息 。可
以预见 电子标 签 是 未来 标 签市 场 的 一 种 终极 产 品。 当今 非 接触 式 I 能 射 频 卡 ( C智 内 建 MC U,A I 等)中 的主 流 技 术 主要 SC 是 P LP 公 司 的MIA E 术 。该技 HIIS FR 技 术 现 已 经 被 制 定 为 IO1 d.A标 准 。 S 4a 3 而 且事 实 上 ,欧 洲 一些 较 大 的I C卡制
读 写器 与电子 标 签之 间 的射频 信
号 耦合 采 用 电感 耦合 和 电磁 反 向 散射 耦 合 ,本 设 计 是 基 于 电感 耦 合 方 式 的 ,即通 过空 间 高频 交 变磁 场 实现 耦 合 ,依 据 的是 电磁 感. 律 。电感 耦 应定 MH 下 所 有 类 型 的被 动非 接 触 式 通 信 z
维普资讯
N e De i e w v c
基于MF C 0 芯 酌R I i 写器 开发 R 50 FD  ̄
摘 要 :给 出了用P L P 的MF HII S RC50 片对1 . 0芯 35 MHz 6 频段 的RFD读 写 I
器 进 行 设 计 开 发 的 具 体 方 案 和 电 路 原 理 图 , 同 时 根 据 IO14 3 S 4 4 A标 准 给 出 了RFD读 写 器控 制 协 议 的 软 件 设 计 流 程 , 最 后 对 本 RFD读 写 器 设 计 开 发 I I
RC500天线调试
-1-
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 6.4.3 屏蔽的环形天线 ..................................................................................................... 29
3
MF RC500 匹配电路和天线的设计......................................................................... 8
3.1 3.2 3.3 基本设计规则 ..................................................................................................................... 8 估算最合适的天线大小....................................................................................................... 9 直接匹配的天线 ............................................................................................................... 10 3.3.1 3.3.2 3.3.3 3.4 50 3.4.1 3.4.3 3.4.4 3.4.5 EMC 电路 .............................................................................................................. 10 接收电路 ................................................................................................................ 10 直接匹配天线的天线匹配电路 .................................................................................11 匹配的天线 ............................................................................................................... 14 EMC 电路 .............................................................................................................. 14 50 50 50 的长距离解决方案 .......................................................................................... 15 的短距离解决方案 .......................................................................................... 16 天线的天线匹配电路....................................................................................... 16
RC500程序注释
1.#define M500_GLOBALS2.3.//PICC=卡,PCD=阅读器4.5.//以下位要包含的头文件6.#include <string.h> /*字符串函数及存储器函数头文件*/7.#include <stdio.h> /*标准I/O头文件*/8.#include <absacc.h> /*存储器绝对地址访问定义,与指令MOVX相关*/9.#include <intrins.h> /*内部函数定义,与循环指令(例如RR),位判断指令(例如JB),以及空操作指令(NOP)等相关*/10.11.#include "Mfreg500.h" /* MF-RC500内部寄存器定义头文件*/12.#include "MfErrNo.h" /* MF-RC500内部寄存器错误标志头文件*/13.#include "reg52.h" /* 8052内部寄存器定义头文件*/14.#include "M500AuC.h" /* MF-RC500用户自定义相关变量和数据结构头文件*/15.16.#define GetRegPage(addr) (0x80 | (addr>>3)) /* 将addr右移3位再与80h取或 */17.#define nocard 0 /*能量场中没有卡*/18.#define mifare1 1 /*场中有mifare1卡 */19.#define mifarepro 2 /*场中有mifarepro卡 */20.#define mifarelight 3 /*场中有mifarelight卡 */21.#define unknowncard 4 /*场中有未知卡 */22.#define NO_TIMER2 1 /*? */23.24.#define uchar unsigned char25.bdata uchar AA; //A,可位寻址单字节数据类型26.sbit high_bit=AA^7; //ACC.727.sbit low_bit=AA^0; //ACC.028.29.30.//uchar sebuf; //RECBUF,SENBUF31.uchar idata disp_buf[4];32.33.void del_8us()34.{35. uchar i;36.for(i=0;i<1;i++)37. {;}38.}39.40.void del_50us() //延时子程序41.{42. uchar i;43.for(i=0;i<6;i++)44. {;}45.}46.47.void del_50ms()48.{49. uchar i,j;50.for(i=0;i<255;i++)51.for(j=0;j<255;j++)52. {;}53.}54.55.void send(uchar sebuf) //发送子程序56.{57. uchar i;58. AA=sebuf;59. CLK=0;60. CS=0;61. del_50us();62.for(i=0;i<8;i++)63. {64. del_8us();65. DIO=high_bit;66. CLK=1;67. del_8us();68. AA=AA<<1; //循环移位69. CLK=0;70. }71. DIO=0;72.}73.74.void reset_light() //复位子程序75.{76. KEY=1;77. DIO=1;78. del_8us();79. send(0xa4);80. CS=1;81. del_8us();82.}83.84.void reset_7289()85.{86. reset_light(); //上电初检87. send(0xbf);88. CS=1; //测试所有的led灯89. del_50ms();90. reset_light(); //恢复熄灭状态91.}92.93.void display()94.{95. uchar i;96.for(i=0;i<4;i++)97. {send(0xa1);CS=1;del_8us(); //逻辑左移指令98. send(0xc8);99. send((disp_buf[i]>>4)&0x0f);CS=1;del_8us();100. send(0xa1);CS=1;del_8us(); //逻辑左移指令101. send(0xc8);102. send(disp_buf[i]&0x0f);CS=1;del_8us();103. }104.}105.106.107.///////////////////////////////////////////////////////////////////////108./* 往一个寄存器写一个数据 */109.///////////////////////////////////////////////////////////////////////110.v oid WriteRawIO(unsigned char Address,unsigned char value)111.{112. XBYTE[Address]=value; /* 调用XBYTE函数? */113.}114.115.///////////////////////////////////////////////////////////////////////116./* 从一个寄存器读出一个数据 */117.///////////////////////////////////////////////////////////////////////118.u nsigned char ReadRawIO(unsigned char Address)119.{120.return XBYTE[Address]; /* 调用XBYTE函数 */121.}122.123.///////////////////////////////////////////////////////////////////////124./* 用页选方式访问寄存器(写入)*/125.///////////////////////////////////////////////////////////////////////126.v oid WriteIO(unsigned char Address, unsigned char value)127.{128. WriteRawIO(0x00,GetRegPage(Address)); /* 调用writerawio()函数,页选(80h-87h) */129. WriteRawIO(Address,value); /* 调用writerawio()函数,选择一个寄存器(0-7h) */ 130.}131.132.///////////////////////////////////////////////////////////////////////133./* 用页选方式访问寄存器(读出)*/134.///////////////////////////////////////////////////////////////////////135.u nsigned char ReadIO(unsigned char Address)136.{137. WriteRawIO(0x00,GetRegPage(Address)); /* 调用writerawio()函数,页选 */138.return ReadRawIO(Address); /* 调用readrawio()函数 */139.}140.141.///////////////////////////////////////////////////////////////////////142./* 设置定时时间 */143.///////////////////////////////////////////////////////////////////////144.v oid M500PcdSetTmo(unsigned char tmoLength)145.{146.switch(tmoLength)147. {148.case 1:149. WriteIO(RegTimerClock,0x07); /* 调用WRITEIO()函数,从单片机写计时器得分频比(07H)=13.56MHZ/128--2^7 */150. WriteIO(RegTimerReload,0x6a); /* 调用WRITEIO()函数,从单片机写计时器的初始值(6AH) */ 151.break;152.case 2:153. WriteIO(RegTimerClock,0x07); /* 调用WRITEIO()函数,从单片机写计时器得分频比(07H)=13.56MHZ/128--2^7 */154. WriteIO(RegTimerReload,0xa0); /* 调用WRITEIO()函数,从单片机写计时器的初始值(A0H) */ 155.break;156.case 3:157. WriteIO(RegTimerClock,0x09); /* 调用WRITEIO()函数,从单片机写计时器得分频比(07H)=13.56MHZ/512--2^9 */158. WriteIO(RegTimerReload,0xa0); /* 调用WRITEIO()函数,从单片机写计时器的初始值(A0H) */ 159.break;160.case 4:161. WriteIO(RegTimerClock,0x09); /* 调用WRITEIO()函数,从单片机写计时器得分频比(09H)=13.56MHZ/512--2^9 */162. WriteIO(RegTimerReload,0xff); /* 调用WRITEIO()函数,从单片机写计时器的初始值(FF) */ 163.break;164.case 5:165. WriteIO(RegTimerClock,0x0b); /* 调用WRITEIO()函数,从单片机写计时器得分频比(07H)=13.56MHZ/128--2^7 */166. WriteIO(RegTimerReload,0xff); /* 调用WRITEIO()函数,从单片机写计时器的初始值(FFH) */ 167.break;168.case 6:169. WriteIO(RegTimerClock,0x0d); /* 调用WRITEIO()函数,从单片机写计时器得分频比(07H)=13.56MHZ/128--2^7 */170. WriteIO(RegTimerReload,0xff); /* 调用WRITEIO()函数,从单片机写计时器的初始值(FFH) */171.break;172.case 7:173. WriteIO(RegTimerClock,0x0f); /* 调用WRITEIO()函数,从单片机写计时器得分频比(07H)=13.56MHZ/128--2^7 */174. WriteIO(RegTimerReload,0xff); /* 调用WRITEIO()函数,从单片机写计时器的初始值(FFH) */175.break;176.default: /* 其它情况 */177. WriteIO(RegTimerClock,0x07); /* 调用WRITEIO()函数,从单片机写计时器得分频比(07H)=13.56MHZ/128--2^7 */178. WriteIO(RegTimerReload,tmoLength); /* 调用WRITEIO()函数,从单片机写计时器的初始值(TMOLENTH) */ 179.break;180. }181.}182.183.///////////////////////////////////////////////////////////////////////184.// Request Command defined in ISO14443(Mifare)185./* 命令判别程序 */186.///////////////////////////////////////////////////////////////////////187.c har M500PcdCmd(unsigned char cmd,188.volatile unsigned char data *rcv,189. MfCmdInfo idata *info)190.{191.char idata status = MI_OK;192.char idata tmpStatus ; /* 中间状态寄存器 */193. unsigned char idata lastBits; /* 中间状态寄存器 */194. unsigned int idata timecnt = 0;195. unsigned char idata irqEn = 0x00;196. unsigned char idata waitFor = 0x00;197. unsigned char idata timerCtl = 0x00;198.199. WriteIO(RegInterruptEn,0x7F); /*(06H)SETEN,0,TIMER,TX,RX,IDLE,HI,LO=0111,1111:禁中断使能 */200. WriteIO(RegInterruptRq,0x7F); /* (07H) SETIRQ,0,TIMER,TX,RX,IDLE,HI,LO=0111,1111:禁中断请求 */201. WriteIO(RegCommand,PCD_IDLE); /* (01H) 命令代号均写入此处相当于单片机的指令寄存器PC:进入待命态 */202.203. FlushFIFO(); /* 清缓冲区标志,这样FIFO区就可供单片机或RC500状态机使用 */ 204. MpIsrInfo = info; /* ? */205. MpIsrOut = rcv; /* 接收数据缓冲区 */206. info->irqSource = 0x00; /* ->:存储结构或联合单元(右结合) */207.switch(cmd)208. { /* 根据输入的命令分支 */209.case PCD_IDLE: /* 是IDLE命令(00H) */210. irqEn = 0x00;211. waitFor = 0x00;212.break;213.case PCD_WRITEE2: /* 是写EEROM命令(01H) */214. irqEn = 0x11;215. waitFor = 0x10;216.break;217.case PCD_READE2: /* 是读EEROM命令(03H) */218. irqEn = 0x07;219. waitFor = 0x04;220.break;221.case PCD_LOADCONFIG: /* 是载入配置命令(07H) */222.case PCD_LOADKEYE2: /* 是从EEROM载入密钥命令(0BH) */ 223.case PCD_AUTHENT1: /* 是执行认证1命令(0CH) */224. irqEn = 0x05;225. waitFor = 0x04;226.break;227.case PCD_CALCCRC: /* 是激活CRC命令(12H) */228. irqEn = 0x11;229. waitFor = 0x10;230.break;231.case PCD_AUTHENT2: /* 是执行认证2命令(14H) */232. irqEn = 0x04;233. waitFor = 0x04;234.break;235.case PCD_RECEIVE: /* 是激活接收器命令(16H) */236. info->nBitsReceived = -(ReadIO(RegBitFraming) >> 4);237. irqEn = 0x06;238. waitFor = 0x04;239.break;240.case PCD_LOADKEY: /* 是从FIFO中载入密钥命令(19H) */ 241. irqEn = 0x05;242. waitFor = 0x04;243.break;244.case PCD_TRANSMIT: /* 是将FIFO数据发送到卡片命令(1AH) */ 245. irqEn = 0x05;246. waitFor = 0x04;247.break;248.case PCD_TRANSCEIVE: /* 是先发送然后立即接收命令(1EH) */ 249. info->nBitsReceived = -(ReadIO(RegBitFraming) >> 4);250. irqEn = 0x3D;251. waitFor = 0x04;252.break;253.default:254. status = MI_UNKNOWN_COMMAND; /* 是未知命令 */255. }256.if (status == MI_OK) /* 命令是否被正确执行 */257. { /* 是的 */258. irqEn |= 0x20; /* 开启定时器 */259. waitFor |= 0x20;260. timecnt=1000; /* ? */261. WriteIO(RegInterruptEn,irqEn | 0x80); /* 开相应的中断使能 */262. WriteIO(RegCommand,cmd); /* 写入相应的入口命令 */263.while (!(MpIsrInfo->irqSource & waitFor||!(timecnt--))); /* 错误发生情况1? */ 264. WriteIO(RegInterruptEn,0x7F); /* 定时器计完,禁中断系统 */265. WriteIO(RegInterruptRq,0x7F);266. SetBitMask(RegControl,0x04); /* 这一位设置作用是立即结束中断计时 */267. WriteIO(RegCommand,PCD_IDLE); /* 进入IDLE态 */268.if (!(MpIsrInfo->irqSource & waitFor)) /* 错误发生情况2 */269. {270. status = MI_ACCESSTIMEOUT; /* 在规定的时间内没有完成任务 */271. }272.else/* 错误发生情况3 */273. {274. status = MpIsrInfo->status;275. }276.if (status == MI_OK) /* 命令执行成功 */277. {278.if (tmpStatus = (ReadIO(RegErrorFlag) & 0x17)) /* 取出错误状态寄存器内容 */ 279. {280.if (tmpStatus & 0x01) /* 取出比特碰撞位,是否为1(1:有碰撞) */ 281. {282. info->collPos = ReadIO(RegCollPos); /* 得到碰撞的具体位置 */283. status = MI_COLLERR; /* 有碰撞 */284. }285.else286. {287. info->collPos = 0; /* 无碰撞 */288.if (tmpStatus & 0x02)289. {290. status = MI_PARITYERR; /* 1:奇偶校验错 */291. }292. }293.if (tmpStatus & 0x04) /* 取出帧检测位,是否为1(1:帧头错SOF) */ 294. {295. status = MI_FRAMINGERR; /* 1:帧头错SOF */296. }297.if (tmpStatus & 0x10) /* 取出FIFO状态位,是否为1 */298. {299. FlushFIFO(); /* 清缓冲区 */300. status = MI_OVFLERR; /* 1:FIFO满 */301. }302.if (tmpStatus & 0x08) /* 取出crc校验位,是否为1 */303. {304. status = MI_CRCERR; /* 1:CRC校验错 */305. }306.if (status == MI_OK)307. status = MI_NY_IMPLEMENTED; //该命令不存在308. }309.if (cmd == PCD_TRANSCEIVE) /* 如果是发接指令1 */310. {311. lastBits = ReadIO(RegSecondaryStatus) & 0x07; /* 取出最后三位 */312.if (lastBits) /* 最后三位为1-7,不全有效 */ 313. info->nBitsReceived += (info->nBytesReceived-1) * 8 + lastBits;314.else/* 最后三位为0,全有效 */ 315. info->nBitsReceived += info->nBytesReceived * 8;316. }317. }318.else319. {320. info->collPos = 0x00; /* 无碰撞 */321. }322. }323. MpIsrInfo = 0;324. MpIsrOut = 0;325.return status;326.}327.328.///////////////////////////////////////////////////////////////////////329.// 置RC500寄存器bit330.///////////////////////////////////////////////////////////////////////331.c har SetBitMask(unsigned char reg,unsigned char mask)332.{/* 相应的寄存器(REG),相应的屏蔽位(MASK) */333.char idata tmp = 0x00;334.335. tmp = ReadIO(reg);336. WriteIO(reg,tmp | mask); /* 写入 */337.return 0x00;338.}339.340.///////////////////////////////////////////////////////////////////////341.// 清RC500寄存器bit342.///////////////////////////////////////////////////////////////////////343.c har ClearBitMask(unsigned char reg,unsigned char mask)344.{/* 相应的寄存器(REG),相应的屏蔽位(MASK) */345.char idata tmp = 0x00;346.347. tmp = ReadIO(reg);348. WriteIO(reg,tmp & ~mask); /* 写入 */349.return 0x00;350.}351.352.///////////////////////////////////////////////////////////////////////353./* 清缓冲区标志,这样RC500的FIFO取就可供单片机或RC500状态机使用 */354.///////////////////////////////////////////////////////////////////////355.v oid FlushFIFO(void)356.{357. SetBitMask(RegControl,0x01); /* 控制寄存器地址:09H------置1(FIFOFLUSH=1) */ 358.}359.360.///////////////////////////////////////////////////////////////////////361.// Value format operations for Mifare Standard card ICs362./* 改变MIFARE1卡内部EEROM的内容(单调增加,单调减少,数据检验操作) */363.///////////////////////////////////////////////////////////////////////364.c har M500PiccValue(unsigned char dd_mode,365. unsigned char addr,366. unsigned char *value,367. unsigned char trans_addr)368.{/* VALUE:连续写入的四字节指针,TRANS_ADDR:指向的改变后的数据要存入的地址 */369.char status = MI_OK; /* SATUS:置初值 */370./* DD_MODE:三种命令模式,ADDR:指向的要改变数据单元的地址 */371. M500PcdSetTmo(1); /* 初始化计时器--方式1 */372. ResetInfo(MInfo); /* Minfo=INFO */373. SerBuffer[0] = dd_mode; /* 93h,95h,97h三种命令模式 */374. SerBuffer[1] = addr; /* ADDR:指向的要改变数据单元的地址 */ 375. MInfo.nBytesToSend = 2; /* 要发送的字节数 */376. status = M500PcdCmd(PCD_TRANSCEIVE,377. SerBuffer,378. &MInfo);379./* 执行先送后接指令后返回STATUS */380.if (status != MI_NOTAGERR) /* MI_NOTAGERR=没有卡在此场里 */ 381. { /* 有卡在此场里 */382.if (MInfo.nBitsReceived != 4) /* 收到的数据不是4比特 */383. {384. status = MI_BITCOUNTERR; /* 置收到错误的比特数目标志位 */ 385. }386.else/* 收到的数据是4比特 */387. {388. SerBuffer[0] &= 0x0f; /* 取出低四位 */389.switch(SerBuffer[0])390. {391.case 0x00:392. status = MI_NOTAUTHERR; /* 0000=置收到错误的比特数目标志位 */393.break;394.case 0x0a: /* 1010=置命令正确执行位 */395. status = MI_OK;396.break;397.case 0x01: /* 0001=置数据结构错误位 */398. status = MI_VALERR;399.break;400.default:401. status = MI_CODEERR; /* 收到NACK,发送的数据出错(CRC,PARITY) */ 402.break;403. }404. }405. }406.407.if ( status == MI_OK)408. { /* TRANSCEIVE命令执行成功 */409. M500PcdSetTmo(3); /* 初始化计时器--方式3 */410. ResetInfo(MInfo); /* Minfo=INFO */411. memcpy(SerBuffer,value,4); /* 将缓冲区里放入要改变的数据 */412. MInfo.nBytesToSend = 4; /* 要发送的字节数4 */413. status = M500PcdCmd(PCD_TRANSCEIVE, /* 执行先送后接指令后返回STATUS */414. SerBuffer,415. &MInfo);416.417.if (status == MI_OK) /* 上条TRANSCEIVE命令执行成功 */418. {419.if (MInfo.nBitsReceived != 4) /* 收到的数据不是4比特 */420. {421. status = MI_BITCOUNTERR; /* MI_NOTAGERR=没有卡在此场里 */422. }423.else/* 收到的数据是4比特 */424. {425. SerBuffer[0] &= 0x0f; /* 取出低四位 */426.switch(SerBuffer[0])427. {428.case 0x00: /* 0000=置收到错误的比特数目标志位 */429. status = MI_NOTAUTHERR;431.case 0x01: /* 0001=置数据结构错误位 */432. status = MI_VALERR;433.break;434.default: /* 收到NACK,发送的数据出错(CRC,PARITY) */ 435. status = MI_CODEERR;436.break;437. }438. }439. }440.else/* 上条TRANSCEIVE命令执行不成功 */441. {442.if (status == MI_NOTAGERR ) /* MI_NOTAGERR=没有卡在此场里 */443. status = MI_OK; /* 恢复初始值 */444. }445. }446.if (status == MI_OK) /* */447. {448. ResetInfo(MInfo); /* Minfo=INFO */449. SerBuffer[0] = PICC_TRANSFER; /* 这才是真正的改变卡内存的指令(下载) */ 450. SerBuffer[1] = trans_addr;451. MInfo.nBytesToSend = 2;452. status = M500PcdCmd(PCD_TRANSCEIVE, /* 执行传送指令,下载到卡的EEROM */453. SerBuffer,454. &MInfo); /* TRANSCEIVE指令的出口参数,一部分状态信息 */ 455.if (status != MI_NOTAGERR)456. { /* 有卡在此场里 */457.if (MInfo.nBitsReceived != 4)458. {459. status = MI_BITCOUNTERR; /* 收到的数据不是4比特 */460. }461.else/* 收到的数据是4比特 */462. {463. SerBuffer[0] &= 0x0f; /* 取出低四位 */464.switch(SerBuffer[0])465. {466.case 0x00: /* 0000=置收到错误的比特数目标志位 */467. status = MI_NOTAUTHERR;468.break;469.case 0x0a:470. status = MI_OK; /* 1010=置命令正确执行位 */471.break;472.case 0x01: /* 0001=置数据结构错误位 */473. status = MI_VALERR;475.default: /* 收到NACK,发送的数据出错(CRC,PARITY) */ 476. status = MI_CODEERR;477.break;478. }479. }480. }481. }482.return status; /* 这个SWITCH作为整个函数的反馈值 */ 483.}484.485.///////////////////////////////////////////////////////////////////////486.// Set card in HALT-state487./* 终止卡的操作 */488.///////////////////////////////////////////////////////////////////////489.c har M500PiccHalt(void)490.{491.char idata status = MI_CODEERR; /* 将STATUS初值定为数据错 */492.493.// ************* Cmd Sequence **********************************494. ResetInfo(MInfo); /* Minfo=INFO */495. SerBuffer[0] = PICC_HALT ; /* 执行IDLE指令,关闭卡 */496. SerBuffer[1] = 0x00; /* 同上 */497. MInfo.nBytesToSend = 2; /* 同上 */498. status = M500PcdCmd(PCD_TRANSCEIVE, /* 调用命令执行程序 */499. SerBuffer,500. &MInfo);501.if (status)502. {503.// timeout error ==> no NAK received ==> OK504.if (status == MI_NOTAGERR || status == MI_ACCESSTIMEOUT)505. { /* 无卡响应,命令执行成功 */506. status = MI_OK;507. }508. }509.//reset command register - no response from tagit510. WriteIO(RegCommand,PCD_IDLE); /* 有卡响应,命令执行不成功 */511.return status; /* 返回状态值 */512.}513.514.///////////////////////////////////////////////////////////////////////515.// Reset the MF RC500516./* 重启RC500,开始新一轮寻卡 */517.///////////////////////////////////////////////////////////////////////518.c har M500PcdReset(void)519.{520.char idata status = MI_OK; /* 状态初值 */521. unsigned int idata timecnt=0; /* 局部计数器置初值 */522.523. RC500RST = 0; /* 重启时序 */524. delay_1ms(25);525. RC500RST = 1;526. delay_50us(200);527. RC500RST = 0;528. delay_50us(50);529. timecnt=1000;530.while ((ReadIO(RegCommand) & 0x3F) && timecnt--); /* 循环查询? */531.if(!timecnt)532. {533. status = MI_RESETERR; /* timecnt=0,则置status为重起失败标志 */534. }535.if (status == MI_OK) /* 如果在timecnt没变成0时status就被置命令执行成功 */536. {537.//WriteIO(RegPage,0x80);538.if (ReadIO(RegCommand) != 0x00) /* 如果此时regcommand不为0 */539. {540. status = MI_INTERFACEERR; /* 则置status为接口出错(实质上是rc500没有响应单片机或是上位机) */ 541. }542. }543.return status; /* 返回状态值 */544.}545.546.///////////////////////////////////////////////////////////////////////547.// Configures the MF RC500548./* 新一轮认卡后的寄存器配置过程 */549.///////////////////////////////////////////////////////////////////////550.c har M500PcdConfig(void)551.{552.char idata status;553.554.if ((status = M500PcdReset()) == MI_OK) /* 如果返回的状态值是重启成功 */555. {556. WriteIO(RegClockQControl,0x00); /* q通道时钟控制寄存器置0,自动校准时钟偏差 */557. WriteIO(RegClockQControl,0x40); /* q通道时钟控制寄存器置40,不校准时钟偏差? */558. delay_50us(2); /* 延时100us */559. ClearBitMask(RegClockQControl,0x40); /* q通道时钟控制寄存器又置0,自动校准时钟偏差(1BH) */560. WriteIO(RegBitPhase,0xAD); /* 选择发送与接收之间的时钟相位差,默认值:oxad -----important (1FH) */561. WriteIO(RegRxThreshold,0xFF); /* 选择RX脚输入信号的门限电压值0XFF(1CH) */562. WriteIO(RegRxControl2,0x01); /* 接收控制--使用内部解码器,用Q时钟,接收器时常处于激活态(1EH) */563. WriteIO(RegFIFOLevel,0x1A); /* FIFO饱和度水平=1A(29H) */564. WriteIO(RegTimerControl,0x02); /* 发送一完成自动开始计数(2BH) */565. WriteIO(RegIRqPinConfig,0x03); /* IRQ脚配置:输出电平与IRQ标志相反,工作于标准CMOS输出模式(2DH) */566. M500PcdRfReset(1); /* 调用射频重启函数 */567. }568.return status; /* 返回状态值 */569.}570.571.///////////////////////////////////////////////////////////////572.// Key loading into the MF RC500's EEPROM573./* 将主密钥送入RC500的EEROM */574.///////////////////////////////////////////////////////////////575.c har M500PcdLoadKeyE2(unsigned char key_type,576. unsigned char sector, /* 存放密钥的EEROM块地址 */577. unsigned char *uncoded_keys)578.{579.signed char status = MI_OK;580. unsigned int e2addr = 0x80 + sector * 0x18; /* EEROM地址为两个字节 */581. unsigned char coded_keys[12];582.583.if (key_type == PICC_AUTHENT1B) /* 如果是B类卡 */584. {585. e2addr += 12; /* 取12字节以后的作为密钥地址 */586. }587.if ((status = M500HostCodeKey(uncoded_keys,coded_keys)) == MI_OK) /* 如果密钥编码成功 */588. {589. status = PcdWriteE2(e2addr,12,coded_keys); /* 将主密钥(12字节)送入RC500的EEROM */590. }591.return status; /* 返回状态值 */592.}593.594.///////////////////////////////////////////////////////////////////////595.// Write the MF RC500's EEPROM596./* 写RC500's EEPROM */597.///////////////////////////////////////////////////////////////////////598.c har PcdWriteE2(unsigned int startaddr, /* EEROM地址为两个字节 */599. unsigned char length, /* 长度 */600. unsigned char* _data) /* 密钥在单片机里的初始地址 */601.{602.char status = MI_OK;603. ResetInfo(MInfo);604. SerBuffer[0] = startaddr & 0xFF; /* 存放密钥的EEROM块地址 */605. SerBuffer[1] = (startaddr >> 8) & 0xFF; /* STARTADDR为整型变量,16BIT */606. memcpy(SerBuffer + 2,_data,length); /* 将密钥拷贝到发送缓冲区 */607.608. MInfo.nBytesToSend = length + 2; /* 发送14字节 */609.610. status = M500PcdCmd(PCD_WRITEE2, /* 执行写RC500's EEPROM命令 */611. SerBuffer,612. &MInfo);613.return status; /* 返回状态值 */614.}615.616.///////////////////////////////////////////////////////////////////////617.// Select Command defined in ISO14443(MIFARE)618./* 配置MFOUT/MFIN两脚输出内容 */619.///////////////////////////////////////////////////////////////////////620.c har M500PcdMfOutSelect(unsigned char type) /* TYPE为MFOUT输出的信号是什么类型 */621.{622. WriteIO(RegMfOutSelect,type&0x7); /* MFOUTSELECT寄存器(26H)=TYPE--低三位有效 */623.return MI_OK;624.}625.626.///////////////////////////////////////////////////////////////////////627.// Request Command defined in ISO14443(MIFARE)628.// Request,Anticoll,Select,return CardType(2 bytes)+CardSerialNo(4 bytes)629.// 寻卡,防冲突,选择卡返回卡类型(2 bytes)+ 卡系列号(4 bytes)630.///////////////////////////////////////////////////////////////////////631.c har M500PiccCommonRequest(unsigned char req_code,unsigned char *atq)632.{/* ATQ=ANSWER TO REQUEST:响应信息,两个字节 */633.char idata status = MI_OK;634.635. M500PcdSetTmo(3); /* 计数器工作于模式3 */636. WriteIO(RegChannelRedundancy,0x03); /* 通道冗余寄存器置3--奇校验,每个字节后附加一个校验位,无CRC校验 */ 637. ClearBitMask(RegControl,0x08); /* 清加密算法位(09H) */638. WriteIO(RegBitFraming,0x07); /* 最后三位为111,表示最后一字节须传送的位数为1(0FH) */639. SetBitMask(RegTxControl,0x03); /* TX脚发送被数据调制好的能量载波信号(11H) */640.641. ResetInfo(MInfo); /* 信息接口 */642. SerBuffer[0] = req_code; /* REQ_CODE=26H:REQUESTALL, REQ_CODE=52H:REQUESTIDLE, */643. MInfo.nBytesToSend = 1;644./* 上面是REQUEST指令相关信息 */645. status = M500PcdCmd(PCD_TRANSCEIVE,SerBuffer,&MInfo); /* 执行TRANSCEIVE指令(寻卡--REQUEST) */ 646.647.if (status) /* 返回标志为1 */648. {649. *atq = 0; /* 则响应值置0 */650. }651.else/* 返回标志为0--成功了一半 */652. {653.if (MInfo.nBitsReceived != 16) /* 如果收到的比特数不是16,则命令执行失败 */654. {655. *atq = 0; /* 则响应值置0 */656. status = MI_BITCOUNTERR; /* 置状态寄存器为比特计数器错 */657. }658.else659. {660. status = MI_OK; /* 是16,命令执行成功 */661. memcpy(atq,SerBuffer,2); /* 从单片机数据缓冲区中读取响应信号(ATQ) */662. }663. }664.return status; /* 返回状态值 */665.}666.667.///////////////////////////////////////////////////////////////////668.// Cascaded Anti-Collision Command defined in ISO14443(MIFARE)669./* 防冲突读卡的系列号 MLastSelectedSnr四位的序列号 */670.///////////////////////////////////////////////////////////////////671.c har M500PiccCascAnticoll (unsigned char bcnt,unsigned char *snr)672.{/* BCNT=0--32,比特计数器;SNR=序列号存储缓冲区4个字节; */673.char idata status = MI_OK;674.char idata snr_in[4];675.char idata nbytes = 0;676.char idata nbits = 0;677.char idata complete = 0;678.char idata i = 0;679.char idata byteOffset = 0;680. unsigned char dummyShift1;681. unsigned char dummyShift2;682.683. M500PcdSetTmo(106); /* 初始化计时器--方式106 */684. memcpy(snr_in,snr,4); /* 序列号复制 */685.686. WriteIO(RegDecoderControl,0x28); /* 任何在比特碰撞出现之后接收到的信号位进被屏蔽为0,大大简化ISO14443A标准 */687. ClearBitMask(RegControl,0x08); /* 清加密算法位(09H) */688. complete = 0;689.while (!complete && (status == MI_OK) ) /* 如果这两个条件都成立则在此循环 */690. {691. ResetInfo(MInfo);692. WriteIO(RegChannelRedundancy,0x03); /* 通道冗余寄存器置3--奇校验,每个字节后附加一个校验位,无CRC校验 */693. nbits = bcnt % 8; /* NBIT=BCNT除以8的余数 */694.if(nbits) /* 如果不为0 */695. {696. WriteIO(RegBitFraming,nbits < 4 | nbits); /* 如果不为0 */697. nbytes = bcnt / 8 + 1; /* NBYTES为收到的序列号字节数,要加一 */698.if (nbits == 7)699. {700. MInfo.cmd = PICC_ANTICOLL1;701. WriteIO(RegBitFraming,nbits); /* */702. }703. }704.else/* 余数为0 */705. {706. nbytes = bcnt / 8; /* NBYTES为收到的序列号字节数 */707. }708. SerBuffer[0] = 0x93; /* 标准选卡命令 */709. SerBuffer[1] = 0x20 + ((bcnt/8) < 4) + nbits;710.711.for (i = 0; i nbytes; i++)712. {713. SerBuffer[i + 2] = snr_in[i]; /* 序列号输入接口 */714. }715. MInfo.nBytesToSend = 2 + nbytes; /* 输入字节个数 */716.717. status = M500PcdCmd(PCD_TRANSCEIVE,SerBuffer,&MInfo);718.if (nbits == 7)719. { /* 反碰撞处理过程? */720. dummyShift1 = 0x00;721.for (i = 0; i MInfo.nBytesReceived; i++)722. {723. dummyShift2 = SerBuffer[i];724. SerBuffer[i] = (dummyShift1 >> (i+1)) | (SerBuffer[i] < (7-i));725. dummyShift1 = dummyShift2;726. }727. MInfo.nBitsReceived -= MInfo.nBytesReceived;728.if ( MInfo.collPos ) MInfo.collPos += 7 - (MInfo.collPos + 6) / 9;729. }730.if ( status == MI_OK || status == MI_COLLERR)731. {732.if ( MInfo.nBitsReceived != (40 - bcnt) )733. {734. status = MI_BITCOUNTERR;735. }736.else737. {738. byteOffset = 0;739.if( nbits != 0 )740. {741. snr_in[nbytes - 1] = snr_in[nbytes - 1] | SerBuffer[0]; 742. byteOffset = 1;743. }744.745.for ( i =0; i (4 - nbytes); i++)746. {747. snr_in[nbytes + i] = SerBuffer[i + byteOffset];748. }749.750.if (status != MI_COLLERR )751. {752. dummyShift2 = snr_in[0] ^ snr_in[1] ^ snr_in[2] ^ snr_in[3]; 753. dummyShift1 = SerBuffer[MInfo.nBytesReceived - 1];754.if (dummyShift2 != dummyShift1)755. {756. status = MI_SERNRERR;757. }758.else759. {760. complete = 1;761. }762. }763.else764. {765. bcnt = bcnt + MInfo.collPos - nbits;766. status = MI_OK;767. }768. }769. }770. }771.if (status == MI_OK) /* 如果状态标志成功 */772. {773. memcpy(snr,snr_in,4); /* 保存序列号 */774. }775.else776. {777. memcpy(snr,"0000",4); /* 不成功,则返回0000 */778. }779. ClearBitMask(RegDecoderControl,0x20); /* 清掉反碰撞位 */780.781.return status; /* 返回状态值 */782.}783.784.//////////////////////////////////////////////////////////////////785.// Cascaded Select command defined in ISO14443(MIFARE)786./* 选择卡,确定序列号是否大于4字节 */787.//////////////////////////////////////////////////////////////////788.c har M500PiccCascSelect(unsigned char *snr,unsigned char *sak)789.{/* snr为序列号首址, sak为一字节选卡回应值*/790.char idata status = MI_OK;791.792. M500PcdSetTmo(106); /* 计时器初始化 */793.794. WriteIO(RegChannelRedundancy,0x0F); /* 通道冗余寄存器置f--16bit crc校验,确定数据帧最后两个字节为crc字节,奇校验,每个字节后附加一个校验位 */795. ClearBitMask(RegControl,0x08); /* 清加密算法位(09H) */796./////////////////////////////////////////////////////////////////////////////////////////////////////////////797./* 送rc500FIFO的相关信息,与命令函数m500pcdcmd()配合 */798. ResetInfo(MInfo); /* 给rc500的相关信息,与指令相配合 */799. SerBuffer[0] = 0x93; /* 给rc500的相关信息,写入指令(选卡)数据 */800. SerBuffer[1] = 0x70; /* 给rc500的相关信息,写入数据 */801. memcpy(SerBuffer + 2,snr,4); /* 将原指针snr对应的序列号拷贝到发送缓冲区serbuffer中去 */802. SerBuffer[6] = SerBuffer[2] ^ SerBuffer[3] ^ SerBuffer[4] ^ SerBuffer[5]; /* 序号中四字节按位异或得到crc校验字节 */803. MInfo.nBytesToSend = 7; /* 给rc500的相关信息,与指令相配合,须发送的字节数 */804.//////////////////////////////////////////////////////////////////////////////////////////////////////////////805. status = M500PcdCmd(PCD_TRANSCEIVE,SerBuffer,&MInfo); /* 执行命令函数m500pcdcmd(),返回STATUS */806.807. *sak = 0; /* sak选卡回应值先置0 */808.if (status == MI_OK) /* 返回值为执行成功标志MI_OK */809. {810.if (MInfo.nBitsReceived != 8) /* 如果接收到的不是一个字节 */811. {812. status = MI_BITCOUNTERR; /* 则置标志位为MI_BITCOUNTERR */813. }814.else/* 如果接收到的是一个字节 */815. {816. *sak = SerBuffer[0]; /* 则将该值存于SAK中 */。
MF RC500 中文资料手册
名称 MFIN
类型
功能
带施密特触发器的输入 MIFARE 接口输入
/
This Manual: /file/282591
μs
/
This Manual: /file/282591
OK 电子元件资料网符号 参数 IDVDD 数字电源电压 IDVDD 模拟电源电压 IDVDD 发送器电源电压
条件 Idle 命令 待机模式 软件掉电模式 硬件掉电模式 Idle 命令,接收器打开 Idle 命令,接收器关闭 待机模式 软件掉电模式 硬件掉电模式 连续波 TX1 和 TX2 未连接 TX1RFEn,TX2RFEn=1 TX1 和 TX2 未连接 TX1RFEn,TX2RFEn=0
最小 典型 最大 单位
6
mA
3
mA
800
μA
1
μA
29
mA
10
mA
8
mA
1
μA
1
μA
150 mA
4.5 9 mA
65 130 μA
2、启动特性 启动时间和电流消耗
模式 上电 通过复位脚实现的硬件复位 通过寄存器设置的软件复位
条件
电流 单位 时间
单位
-
-
<500
μs
<1
μA
<500
μs
<1
μA
<500
功能框图
OK 电子元件资料网
并行微控制器接口自动检测连接的 8 位并行接口的类型。它包含一个易用的双向 FIFO 缓冲区和一个可 配置的中断输出。这样就为连接各种 MCU 提供了很大的灵活性。即使使用非常低成本的器件也能满足高 速非接触式通信的要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MF RC5MF RC500
概述
00是应用于13.56MHz 非接触式通信中高集成读卡IC 系列中的一员。
该读卡IC 系列利用了先进的调制和解调概念,完全集成了在13.56MHz 下所有类型的被动非接触式通信方式和协议。
MF RC500支持ISO14443A 所有的层。
内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线(可达100mm )。
接收器部分提供一个坚固而有效的解调和解码电路,用于ISO14443A 兼容的应答器信号。
数字部分处理ISO14443A 帧和错误检测(奇偶&CRC )。
此外,它还支持快速CRYPTO1加密算法用于验证MIFARE 系列产品。
方便的并行接口可直接连接到任何8位微处理器,这样给读卡器/终端的设计提供了极大的灵活性。
特性
高集成度模拟电路用于卡应答的解调和解码;
缓冲输出驱动器使用最少数目的外部元件连接到天线;
近距离操作(可达100mm );
用于连接13.56MHz 石英晶体的快速内部振荡器缓冲区;
时钟频率监视;
带低功耗的硬件复位;
软件实现掉电模式;
并行微处理器接口带有内部地址锁存和IRQ 线;
自动检测微处理器并行接口类型;
易用的发送和接收FIFO 缓冲区;
支持防冲突过程;
面向位和字节的帧;
唯一的序列号;
片内时钟电路;
支持MIFARE PRO 和ISO14443A (透明模式且T = "CL");
支持MIFARE Clasic ;
Crypto1以及可靠的内部非易失性密匙存储器;
支持MIRFARE 有源天线;
适合于高安全性的终端。
应用
MF RC500适用于各种基于ISO/IEC 14443A 标准并且要求低成本、小尺寸、高性能以及单电源的非接触式通信的应用场合。
公共交通终端;
手持终端;
板上单元;
非接触式PC 终端;
计量;
非接触式公用电话。
功能框图
并行微控制器接口自动检测连接的8位并行接口的类型。
它包含一个易用的双向FIFO缓冲区和一个可配置的中断输出。
这样就为连接各种MCU提供了很大的灵活性。
即使使用非常低成本的器件也能满足高速非接触式通信的要求。
数据处理部分执行数据的并行-串行转换。
它支持的帧包括CRC和奇偶校验。
它以完全透明的模式进行操作,因而支持ISO14443A的所有层。
状态和控制部分允许对器件进行配置以适应环境的影响并使性能调节到最佳状态。
当与MIFARE Standard和MIFARE产品通信时,使用高速CRYPTO1流密码单元和一个可靠的非易失性密匙存储器。
模拟电路包含了一个具有非常低阻抗桥驱动器输出的发送部分。
这使得最大操作距离可达100mm。
接收器可以检测到并解码非常弱的应答信号。
由于采用了非常先进的技术,接收器已不再是限制操作距离的因素了。
管脚排列
该器件为32脚SO封装。
器件使用了3个独立的电源以实现在EMC特性和信号解耦方面达到最佳性能。
MF RC500具有出色的RF性能并且模拟和数字部分可适应不同的操作电压。
1、天线
非接触式天线使用以下4个管脚:
名称类型功能
TX1, TX2输出缓冲天线驱动器
WMID模拟参考电压
RX输入模拟天线输入信号
为了驱动天线,MF RC500通过TX1和TX2提供13.56MHz的能量载波。
根据寄存器的设定对发送数据进行调制得到发送的信号。
卡采用RF场的负载调制进行响应。
天线拾取的信号经过天线匹配电路送到RX脚。
MF RC500内部接收器对信号进行检测和解调并根据寄存器的设定进行处理。
然后数据发送到并行接口由微控制器进行读取。
MF RC500对驱动部分使用单独电源供电。
名称类型功能
TVDD电源发送器电源电压
TGND电源发送器电源地
2、模拟电源
为了实现最佳性能,MF RC500的模拟部分也使用单独电源。
它对振荡器、模拟解调器和解码器电路供电。
名称类型功能
AVDD电源模拟部分电源电压
AGND电源模拟部分电源地
3、数字电源
MF RC500数字部分使用单独电源。
名称类型功能
DVDD电源数字部分电源电压
DGND电源数字部分电源地
4、辅助管脚
可选择内部信号驱动该管脚。
它作为设计和测试之用。
复位管脚禁止了内部电流源和时钟并使MF RC500从微控制器总线接口脱开。
如果RST释放,MF RC500执行上电时序。
6、振荡器
名称类型功能
XIN I振荡器缓冲输入
XOUT O振荡器缓冲输出
13.56MHz晶振通过快速片内缓冲区连接到XIN和XOUT。
如果器件采用外部时钟,可从XIN输入。
7、MIFARE接口
MF RC500支持MIFARE有源天线的概念。
它可以处理管脚MFIN和MFOUT处的MIFARE核心模块的基带信号NPAUSE和KOMP。
名称类型功能
MFIN带施密特触发器的输入MIFARE接口输入
MFOUT输出MIFARE接口输出
MIFARE接口可采用下列方式与MF RC500的模拟或数字部分单独通信:
模拟电路可通过MIFARE接口独立使用。
这种情况下,MFIN连接到外部产生的NPAUSE信号。
MFOUT提供KOMP 信号。
数字电路可通过MIFARE接口驱动外部信号电路。
这种情况下,MFOUT提供内部产生的NPAUSE信号而MFIN连接到外部输入的KOMP信号。
8、并行接口
下面列出的16个管脚用于控制并行接口:
名称类型功能
D0 … D7带施密特触发器的I/O双向数据总线
A0 … A7带施密特触发器的I/O地址线
NWR/RNW带施密特触发器的I/O写禁止/只读
NRD/NDS带施密特触发器的I/O读禁止/数据选通禁止
NCS带施密特触发器的I/O片选禁止
ALE带施密特触发器的I/O地址锁存使能
IRQ输出中断请求
应用
1、连接不同的微控制器
MF RC500支持不同的微控制器接口。
一个智能的自动检测逻辑可以自动适应系统总线的并行接口。
使用信号NCS 选择芯片。
要使用独立的地址和数据总线与微控制器相连,必须将ALE脚连接到DVDD。
若使用复用的地址和数据总线与微控制器接口,必须将ALE脚连接到微控制器的ALE信号。
若要使用RNW和NDS(取代NWR和NRD)与微控制器相连,微控制器的RNW必须连接到管脚NWR,而NDS 必须连接到NRD。
2、应用举例
与MIFARE CLASSIC有关的内容
1、CRYPTO1:卡验证
为了对MIFARE CLASSIC产品进行正确的验证,采用了快速的CRYPTO1流密码。
对应的密匙必须编程到MF RC500的非易失性密匙存储器中。
软件只需要发送两条命令即可打开处于CRYPTO1保护下的通信。
2、启动卡的验证
必须从内部密匙存储器中选择用于卡验证的正确密匙,并将其装入内部CRYPTO1寄存器。
接下来将验证命令发送到卡。
当从卡接收到第一个报文令牌后,微控制器必须检测通信状态标志。
如果通信到目前为止保持成功,则启动卡验证的第二部分。
3、卡验证的第二部分
在这一阶段中,发送到卡的数据由MF RC500内部的CRYPTO1单元自动产生。
要执行这部分动作必须启动相应的命令。
卡将会以第二个报文令牌进行响应。
然后微控制器必须检测通信状态标志。
如果验证已成功,则与MIFARE CLASSIC卡继续进行CRYPTO1加密下的通信。
电气规格
1、DC特性
电源电压
符号参数条件最小典型最大单位DVDD数字电源电压 4.5 5.0 5.5V AVDD模拟电源电压 4.5 5.0 5.5V TVDD发送器电源电压 3.0 5.0 5.5V 电流消耗
符号参数条件最小典型最大单位
Idle命令6mA
待机模式3mA
软件掉电模式800μA I DVDD数字电源电压
硬件掉电模式1μA
Idle命令,接收器打开29mA
Idle命令,接收器关闭10mA
待机模式8mA
软件掉电模式1μA I DVDD模拟电源电压
硬件掉电模式1μA
连续波150mA
TX1和TX2未连接
TX1RFEn,TX2RFEn=14.59mA
I DVDD发送器电源电压
TX1和TX2未连接
TX1RFEn,TX2RFEn=0
65130μA
2、启动特性
启动时间和电流消耗
模式条件电流单位时间单位上电--<500μs 通过复位脚实现的硬件复位<1μA<500μs 通过寄存器设置的软件复位<1μA<500μs。