文档库 最新最全的文档下载
当前位置:文档库 › 双龙1356M射频模块资料

双龙1356M射频模块资料

SL-13.56MOD-SU射频卡读写模块使用说明

一.概述

SL-13.56MOD-SU 射频卡读写模块,可以读写符合ISO14443 TYPE A/B –2,-3规范的射频卡片(AT88RF020、AT88SC6416CRF、ST_SRI176、ST_SRIX4K、MIFARE S50、MIFARE S70以及其他兼容ISO14443 TYPE A/B 规范的CPU卡,双界面卡)。模块与上位机之间可以使用多种接口连接(UART、SPI、TWI),方便用户使用。

二. 特点

l完全兼容ISO14443 TYPE A 和TYPE B标准,可以稳定读写各种符合ISO14443 A/B两种通讯协议标准的卡片。

l提供多种外部通讯接口,方便用户开发.

l UART:通用异步通讯接口。外接RS232芯片后可以方便的和PC机交换数据。

固定波特率:115200Bps

l SPI:标准SPI硬件接口。最高速率可以达到2.0MBps。使用标准SPI接口的模式0进行通讯。

l TWI:通用两线协议,可以使用最少的I/O数量建立模块与上位机的连接。

最高可以达到400 KPBS。

l I/O管脚CMOS和TTL输入/输出电平兼容

l内置上电复位电路。

l自带看门狗电路。

l尺寸:27.5mm*19mm*7.0mm。

l目前支持卡片类型:

1.AT88RF020

2.AT88SC6416CRF(支持该系列的全部芯片0104crf----6416crf)

3.ST_SRI176

4.ST_SRIX4K

5.MIFARE ONE S50

6.MIFARE ONE S7O

7.MIFARE ULTRALIGHT

8.兼容ISO14443 TYPE A/B 规范的CPU卡,双界面卡。

l工作频率:13.56MHz。

l读写距离:读写距离和搭配天线尺寸有关。请参考天线设计的相关文档。

l内置256 字节EEPROM。

l工作电压:DC3V----5V。

l直接驱动50 Ohm 天线

l卡片通讯最大FIFO= 48 BYTE。

l模块最多可对外提供13个I/O口;256字节的EEPROM;支持低功耗;带低电压检测功能。利用这些功能模块本身就可以完成一定的测控功能,可以承接应用系统

的开发,将用户的业务写入模块内部,省去外部的MCU节省用户的硬件成本。

注:模块全开场130mA,整个板子建议按200mA设计。

三. 外观与管脚定义

6.5

管脚定义说明:

序号名称描述

PIN1 ANTG 天线地

PIN2 ANTD 天线驱动(50 Ohm antenna)

PIN3 SCK SPI接口的时钟信号

PIN4 MISO SPI接口的MISO信号线

PIN5 MOSI SPI接口的MOSI信号线

PIN6 SS SPI接口的片选信号(低电平有效)

PIN7 STA1 模块的工作指示(接收命令有拉底)

PIN8 STA2 模块回传数据的状态指示(数据有效后拉底)

PIN9 XTAL1 晶体输入端

PIN10 XTAL2 晶体输入端

PIN11 NC RESET

PIN12 IDLE 模块休眠(0:工作1:休眠)

PIN13 GREEN 可以驱动一个LED指示灯(低有效)

PIN14 TXD UART接口的TXD信号线

PIN15 RXD UART接口的RXD信号线

PIN16 SCL TWI接口的时钟信号线

PIN17 SDA TWI接口的数据信号线

PIN18 BEEP 可以直接驱动BEEP(低有效)

PIN19 GND 地

PIN20 VCC 电源(DC 3-5V)

四. 通讯协议

模块和上位机之间采用命令应答的通讯模式。平时模块处在空闲状态(STA1=STA2=1)。模块只有在空闲状态才会响应上位机的命令。模块接收到上位机的命令后,进入命令执行状态(STA1=0,STA2=1,在对CPU卡操作的过程中,在命令执行过程中,STA1的状态可能会发生反转)。模块命令执行完毕,准备好执行结果后会通过状态管脚给上位机指示(STA1=1,STA2=0)。上位机按照指示取走命令结果后,模块再次进入空闲状态(STA1=STA2=1)。

对于STA1和STA2的状态关系,可以参考下表:

STA1=1 STA2=1 模块空闲,上位机可以发送命令给模块。

STA1=0 STA2=1 模块接收数据成功,开始执行上位机命令(以STA1的下降

沿为标记,说明模块接收上位机的命令成功,开始执行命

令)。模块接收到命令后最快在100uS以内会把STA1拉低,

表明接收数据成功,开始执行命令。上位机如果在发送结束

后500uS以内没有检测到STA1的下降沿表明,模块接收命

令错误,应该重新尝试发送命令给模块。

STA1=X STA2=1 模块执行上位机的命令(以STA1的下降沿为起始,上位机

等待模块执行命令,这里需要做一个超时的判断。在此期间

STA1的状态可能发生反转。如果STA1的状态发生反转,

则需要将超时计时器清零,重新开始计时。如果在超时溢出

前都没有检测到STA2=0或STA1的反转,则表示模块工作

超时。如果在超时前检测到STA2=0则表示模块执行命令结

束。上位机可以取走执行结果)。

STA1=X STA2=0 模块执行命令结束。上位机可以提取执行结果。在上位机将

所有数据取走前,STA2会保持在低电平。只有上位机将所

有的数据都取走后,STA2才会恢复为高电平。对于UART

接口,模块会主动发送命令结果给上位机,所以不会发生数

据没有取完的情况发生。

STA1=1 STA2=1 模块空闲,可以发送下一条命令。

上位机可以通过PIN12(IDEL)管脚,控制模块的休眠和唤醒。在休眠状态(PIN12=1)下,射频场关闭,MCU休眠。此时模块功耗最小。要唤醒模块(PIN12=0)需要>5 毫秒的延时。唤醒模块后,需要附加的开场命令打开射频场。模块复位默认射频场状态为“关闭”。

通讯中STA1/STA2检测流程图

其中的Timeout的取值要根据不同的卡片,有不同的要求。详见获取波特率命令。

1.上位机发送命令给模块

数据头+ 长度+ 长度校验+ 命令代码+ 等待延时+ [命令参数] + 校验和

HEAD+LENGTH+ LEN_CHK +COMMAND+W AIT TIME+PARAMETER+CHECKSUM

l HEAD(数据头):一个字节的“0xA6”。如果发送多个数据头字节,

模块自动丢弃。

l LENGTH(长度):整个命令数据祯中除了HEAD(数据头)、

LENGTH(长度)、LEN_CRC(长度校验)以外的所

有数据的字节数。

对于没有PARAMETER(命令参数)的命

令,LENGTH=3。

对于有PARAMETER(命令参数)的命令

LENGTH=命令参数的长度+ 3。该参数一个字节。

l LEN_CHK(长度校验):LEN_CHK是LENGTH取反以后的值。该参数一

个字节。

l COMMAND(命令代码):需要模块执行的命令代码。详细的命令说明在第五

部份介绍。该参数一个字节。

l WAIT TIME(等待延时):该命令预计执行时间。在卡片操作命令里面这个时

间是模块将读写卡命令发送完毕后等待卡片应答

的时间,对于不操作卡片的命令如关场、握手等该

参数可以设置为“1”;对于开场和检测卡的命令

为开场的延时时间单位是毫秒;对于读写卡片的命

令该参数的设置需要参考不同型号卡片的文档,根

据实际需要设置。实际的等待时间是该参数的值乘

以一个最小间隔单位。最小时间间隔约为“193毫

秒”。注意该参数若设置为“0”则等待TR0的时

间为4969mS。该参数一个字节。

COMMAND=10 WAIT TIME 没有意义。

COMMAND=11 WAIT TIME 单位是19.3mS

COMMAND=12 WAIT TIME 没有意义。

COMMAND=13 WAIT TIME 单位是1 mS

COMMAND=14 WAIT TIME 没有意义。

COMMAND=15 WAIT TIME 单位是1 mS

COMMAND=16 WAIT TIME 没有意义。

COMMAND=17 WAIT TIME 没有意义。

COMMAND=18 WAIT TIME 单位是19.3Ms

COMMAND=19 WAIT TIME 存储器地址。

COMMAND=1a WAIT TIME 存储器地址。

l PARAMETER(命令参数):该参数就是一个完整的14443命令或卡片定义的其

他命令。模块在执行SEND_RECEIVE命令的时候,

会自动计算该部分的CRC,并连同SOF、本数据、

CRC、EOF(完整桢)发送给卡片然后等待卡片的

应答,等待的超时界限就是参数“等待延时”指定

的。(请参考ISO14443 标准相关文档中关于TR0

的定义)。

l CHECKSUM(校验和):命令校验和是从COMMAND(命令代码)开始的所有

字节的带进位位的累加和的反码。初始值为0x78,

进位位为0。

2.上位机接收命令执行结果

数据头+ 长度+ 长度校验+ 命令代码+ 执行状态+ [数据] + 校验和

HEAD+LENGTH+ LEN_CHK +COMMAND+STATUS+[DATA]+ CHECKSUM l HEAD(数据头):数据头固定为0xA6。

l LENGTH(长度):整个数据祯中除了数据头、长度、长度校验以外的所

有数据的字节数(包括数据校验和)。该参数一个字

节。

l LEN_CHK (长度校验):数据长度字节取反。该参数一个字节。

l COMMAND(命令代码):模块返回数据所对应的命令的代码。该值应该和最近

一次发送给模块的命令祯中的“命令代码”参数一致。

详细的命令说明在第五部份介绍。该参数一个字节。

l STATUS(执行状态):该命令执行的结果。如果命令执行成果则状态为“0”。

这个命令状态只标志模块的执行命令和通讯的状态,

并不标志卡片的实际状态,卡片操作是否成功要在卡

片的返回数据中表示。其他的错误代码在第五部分介

绍。该参数一个字节。

l DATA(数据):只有SEND RECEIVE以及GET VERSION命令返回

数据。对于SEND RECEIVE命令该部分的数据就是

卡片的应答数据,不包括14443协议中的CRC。对

于GET VERSION命令该部分的数据就是模块的版

本信息。

l CHECKSUM (校验和):返回数据校验和是从“命令代码”开始的所有字节的

带进位位的累积和的反码。初始值为0x78,进位位

为0。

3.数据校验方式

接收和发送两个过程中的数据校验方式都是采用带进位的字节累加和取反的方法计算。参加校验和运算的数据是数据祯中除了“HEAD”、“LENGTH”、“LEN_CRC”以外的所有数据。校验和的初始值为“0x78”。校验和的计算方法代码在附录中有说明。

4.TWI接口的特殊说明

对于TWI接口上位机发送命令给模块的协议和SPI以及UART是一致的。但是由于模块被定义为TWI的从机,所以在命令执行结束不能主动发送数据给上位机。

参考I2C协议的要求在上位机读取命令执行结果前需要先发送一个字节的命令头给

模块,在此命令头发送完毕(接收到来自模块的ACK信号),开始读取数据。完整的通讯过程可以描述为:

命令开始)

TWI的数据物理层协议是参考I2C协议定义的。每个字节9个时钟。数据在SCL 的上升沿有效。接收方每接收一个字节(8 BIT)的数据,需要在第九个时钟给发送方一个ACK应答。ACK=0表示接收正确。上位机发送命令给模块,每个字节结束模块给上位机一个ACK。上位机读取模块的执行结果时,每读取一个字节就给模块一个ACK,读取最后一个字节时,上位机需要给模块一个反向的ACK(NACK,逻辑“1”),然后以STOP结束通讯。在用TWI接口时,模块返回的数据中没有数据头:0xA6(参考figure19-5)

TWI接口的数据时序如下:

5.SPI接口说明:

模块的SPI接口采用MODE 0的从机模式。SPI的数据在时钟的上升沿有效。

空闲状态时钟信号为低电平。在SPI模式从机模式下,模块也不能主动发送命令结果给上位机,只会在命令执行结束,将STA2置低,通知上位机发送时钟并取走数据。上位机通过SS管脚对模块进行片选。在SPI模式下,通讯不再像TWI那样需要START/STOP信号做开始和停止位,也不用在每个字节的末尾加ACK 位。

通讯过程描述如下:

SS=0

五. 命令与应答

下列的命令和返回值是以串行通讯协议为样板给的例子。在TWI模式下,模块返回值里面没有前面的HEAD部分。模块支持的命令列表如下表:

COMMAND WAIT

TIME

PARAMETER RESPONSE OTHER

0x10 5 NONE STATUS 握手命令0x11 卡片决定卡片命令卡片应答信息卡片通讯0x12 5 NONE STATUS 关场

0x13 5 NONE STATUS 开场

0x14 0x0A/0B =W AIT TIME STATUS 选择卡片协议0x15 TIME NONE STATUS 蜂鸣器鸣叫0x16 5 NONE Version info 获取模块版本0x17 5 NONE Card info 自动检测卡0x18 卡片决定CPU卡命令卡片应答信息CPU卡通讯0x19 ADDRESS DATA STATUS 写EEPROM 0x1A ADDRESS LENGTH DATA 读EEPROM 0x1B RATE =W AIT TIME STATUS 设置波特率0x1C 5 NONE DATA 获取协议信息

0x1D 5 MIFARE ONE

COMMAND

MIFARE

RESPONSE

Mifare one 卡

读写

0x1E 5 读身份证ID DATA 读取身份证ID

0x1F 5 PASM卡DATA PSAM卡通讯

0x20 5 执行PASM命令文件

PASM

RESPONSE

批量执行

PSAM交易命

0x21 5 设置7816协议类型RESPONSE

以下为详细的命令说明

1.命令说明

l0x10:握手命令(HAND SHAKE)

该命令实现上位机和模块的握手操作。没有任何实际的功能,只是用来测试模块和上位机的通讯是否正常。命令没有参数,调用该命令在命令祯中的“等待延时”可以设置为“1-5”。下面的16进制代码为完整的关场命令的数据祯内容:

A6 03 FC 10 02 75

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=10

WAITTIME=02

CHECKSUM =75

模块返回的数据为:

A6 03 FC 10 00 77

HEAD=A6(如果是UART模式下,模块返回3个字节的数据头)。

LENGTH=03

LEN_CHK =FC

COMMAND=10

STATUS=00

CHECKSUM =77

l0x11:发送接收(SEND RECEIVE)

该命令实现上位机和卡片的数据交换操作,上位机发送给卡片的命令在参数PARAMETER(命令参数)中,其中不包括IS014443规定的CRC校验字节。

模块在发送这些信息前会自动计算CRC。调用该命令的时候要特别注意W AIT TIME(等待延时)的设置。该参数为一个字节。模块发送命令以后等待卡片的应答的超时界限就是这个参数乘以“19.3”毫秒。应当严格按照不同型号卡片的技术文档的要求,设置这个参数。下面是ISO14443 TYPE B –3中的REQB命令的实际数据祯内容供参考:

A6 06 F9 11 05 05 00 00 6C

HEAD=A6

LENGTH=06

LEN_CHK =F9

COMMAND=11

WAIT TIME=05

PARAMETER=”050000”(标准卡片指令,参考卡片资料和14443标准)

CHECKSUM =6C

模块返回信息:

A6 0F F0 11 00 50 00 00 00 01 FF FF FF 64 00 30 51 3F

HEAD=A6

LENGTH=0F

LEN_CHK =F0

COMMAND=11

STATUS=00

DATA=” 50 00 00 00 01 FF FF FF 64 00 30 51”(具体的数据意义请参考卡片和ISO14443标准文档)。

CHECKSUM =3F

l0x12:关场命令(CLOSE FIELD)

该命令使模块关闭射频场。该命令和开场命令配合可以实现给卡片硬复位的功能,另外关场以后模块的功耗会大大降低。命令没有参数,调用该命令在命令祯中的“等待延时”可以设置为“1-5”。下面的16进制代码为完整的关场命令的数据祯内容:

A6 03 FC 12 05 70

HEAD=A6

LENGTH=03

COMMAND=12

WAIT TIME=05

CHECKSUM =70

模块返回的数据为:

A6 03 FC 12 00 75

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=12

STATUS=00

CHECKSUM =75

l0x13:开场命令(OPEN FIELD)

该命令使模块打开射频场,准备读写卡片。命令没有参数,调用该命令在命令祯中的“等待延时”可以设置为“1-5”。下面的16进制代码为完整的开场命令的数据祯内容:

A6 03 FC 13 05 6F

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=13

WAIT TIME=05

CHECKSUM =6F

模块返回的数据为:

A6 03 FC 13 00 74

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=13

STATUS=00

CHECKSUM =74

l0x14:选择ISO14443协议(SELECT PROTOCL)

该命令选择模块与卡片之间通讯需要符合的标准类型。ISO14443目前有两个主要的分支,一个是TYPE A标准(MIFARE 1以及兼容卡片符合的标准)。

另一个是TYPE B标准(ATMEL,ST等公司的卡片遵循的标准,主要的卡片有AT88RF020,AT88SC0104CRF系列,ST_SRI176、ST_SRIX4K等)。使用该命令设置卡片的协议类型,针对某一种类型的卡片的操作,只需要在操作前设置一下该命令就可以了。如果要同时操作多种协议的卡片,则在更换协议的时候,需要调用这个命令。调用该命令的时候W AIT TIME参数作为一个命令参数使用。W AIT TIME=0A(进入TYPE A 模式),W AIT TIME=0B(进入TYPE B 模式)。下面的16进制代码为完整的选择TYPE A协议命令的数据祯内容:A6 04 FB 14 0A 0A 5F

HEAD=A6

LENGTH=04

COMMAND=14

WAIT TIME=0A

PARAMETER=”0A”

CHECKSUM =5F

模块返回的数据为:

A6 03 FC 14 00 73

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=14

STATUS=00

CHECKSUM =73

l0x15:蜂鸣器操作命令(BEEP OPTION)

该命令使模块的BEEP管脚(PIN18)发送一个制定宽度的脉冲,可以驱动外部的蜂鸣器。调用该命令在命令祯中的W AIT TIME(等待延时)参数表示PIN13置低的时间。可以设置为“0-255”。下面的16进制代码为完整命令的数据祯内容:

A6 03 FC 15 FF 72

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=15

WAIT TIME=FF

CHECKSUM =72

模块返回的数据为:

A6 03 FC 15 00 72

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=15

STATUS=00

CHECKSUM =72

l0x16:获取版本信息(GET VERSION)

该命令返回当前使用模块的版本信息。命令没有参数,调用该命令在命令祯中的“等待延时”可以设置为“1-5”。下面的16进制代码为完整的命令祯内容:

A6 03 FC 16 05 6C

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=16

WAIT TIME=05

CHECKSUM =6C

模块返回的数据为:

A6 2F D0 16 00 53 74 61 6E 74……. 00 66 A4

HEAD=A6

LENGTH=24

LEN_CHK =D0

COMMAND=16

STATUS=00

DATA=” 53 74 61 6E 74……. 31 36”

CHECKSUM =A4

完整的版本信息是一串ASCII码字符串

“Standard ISO14443 RF Reader,V1.02,2009,04,16”

l0x17: 检测卡(DETECT CARD)

该命令每执行一次,读卡器将自动开场,并发送监测卡片命令。若发现卡片就

锁定卡片,并返回卡片的ID信息和协议字节。这个命令可以自动检测TYPE A

和TYPE B的卡片。监测到卡片后模块将返回数据,并保持开场状态。若没有

发现卡片,模块将自动关场,并返回错误信息代码。调用该命令的时候要特别

注意W AIT TIME(等待延时)的设置:该参数为从开场到发送REQB命令的时

间,也就是卡片从上电复位到可以接受命令的时间,单位为毫秒。具体采用多

长的延时时间,可以参考卡片的技术文档。一般设置为05对大多数卡片就足

够了。

A6 03 FC 17 05 6B

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=17

WAIT TIME=05

CHECKSUM =6B

返回信息为:

l AT88SC6416CRF卡

A6 10 EF 17 00 0B 50 00 00 00 01 FF FF FF 60 00 30 51 2E

HEAD=A6

LENGTH=10

LEN_CHK =EF

COMMAND=17

STATUS=00

DATA=” 0B 50 00 00 00 01 FF FF FF 60 00 30 51”

TYPE B PUPI APP BYTE S

CHECKSUM =2E

l MIFARE ONE S50

A6 0C F3 17 00 0A 04 00 A6 A2 FA 69 97 08 15

HEAD=A6

LENGTH=0C

LEN_CHK =F3

COMMAND=17

STATUS=00

DATA=” 0A 04 00 A6 A2 FA 69 97 08 ”

TYPE A ID BCC

CHECKSUM =15

l0x18:标准CPU卡操作命令(CPU CARD OPTION)

该命令只对于操作符合ISO14443 TYPE B/A 标准的CPU卡,双界面卡操作有效。在锁定卡片以后,调用该命令实现和CPU卡的数据交互。该函数自动在每个命令的前面加上0A01两个字节的前缀,对去一般的逻辑加密卡AT88SC6416CRF,AT88RF020,MIFARE I 等卡片该命令无效。下面以取随机数命令为例描述关于CPU卡通讯的命令的执行过程

A6 08 F7 18 05 00 84 00 00 08 DD

HEAD=A6

LENGTH=08

LEN_CHK =F7

COMMAND=18

WAIT TIME=05(延时时间为FWT×5)

PARAMETER=” 00 84 00 00 08”

CHECKSUM =DD

模块返回的数据为:

A6 0D F2 18 00 ** ** ** ** ** ** ** ** 90 00 **

HEAD=A6

LENGTH=0D

LEN_CHK =F2

COMMAND=18

STATUS=00

DATA=”** ** ** ** ** ** ** ** 90 00”(8字节随机数+CPU卡状态“9000”)

CHECKSUM =6E

l0x19:写EEPROM(WRITE EEPROM)

该命令向模块中的EEPROM写入数据。注意:模块中的EEPROM 的容量为:256字节。在实际使用的时候,最前面的一个字节不要使用。另外该命令的延时时间按照下面的单位进行计算。每个字节4mS。命令中的W AIT TIME 参数在这里作为写入字节的地址使用。

A6 0A F5 19 00 12 34 56 78 00 00 00 59

HEAD=A6

LENGTH=0A

LEN_CHK =F5

COMMAND=19

WAIT TIME=00(从00H开始写入数据)

PARAMETER=” 12 34 56 78 00 00 00”

CHECKSUM =59

模块返回的数据为:

A6 03 FC 19 00 6E

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=19

STATUS=00

CHECKSUM =6E

l0x1A:读EEPROM(READ EEPROM)

该命令从模块的EEPROM中读取数据。注意:模块中的EEPROM 的容量为:256字节。在实际使用的时候,最前面的一个字节不要使用。另外该命令的延时时间按照下面的单位进行计算。每个字节 1 mS。命令中的W AIT TIME 参数在这里作为字节的地址使用。下面的16进制代码为完整的读EEPROM命令的数据祯内容:

A6 04 FD 1A 00 04 69

HEAD=A6

LENGTH=04

LEN_CHK =FD

COMMAND=1A

WAIT TIME=00(从00H开始写入数据)

PARAMETER=” 04”(读取4个字节的数据)

CHECKSUM =69

模块返回的数据为:

A6 07 F8 1A 00 12 34 56 78 58

HEAD=A6

LENGTH=07

LEN_CHK =F8

COMMAND=1A

STATUS=00

DATA=” 12 34 56 78”

CHECKSUM =6E

l0x1B:设置卡片通讯波特率(LIMIT RATE)

该命令限制卡片与基站之间的通讯波特率。在相同的条件下建议使用106K 的波特率,可以获得更高的系统稳定性。

A6 04 FB 1b 0F 0F 69

HEAD=A6

LENGTH=04

LEN_CHK =FD

COMMAND=1B

WAIT TIME=0F(波特率设置值0x0F 表示使用106K进行收发数据)。

PARAMETER=0F(波特率设置值0x0F 表示使用106K进行收发数据)。

CHECKSUM =XX

模块返回的数据为:

A6 03 FC 1B 00 XX

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=1B

STATUS=00

CHECKSUM =XX

l0x1C:获取卡片通讯设置(GET RATE)

该命令读取卡片与基站之间相互通讯的参数设置。该命令返回5个字节的状态信息。表明卡片与基站之间通讯所需要的协议以及相关的设置信息DATA0:通讯协议类型,通过该字节可以判断卡片通讯协议的类型。

0x0A----- TYPE A 协议

0x0B----- TYPE B 协议

DATA1:通讯速率,一个字节。高位四个BIT保留没有使用,BIT2,3表示卡片的接收波特率,BIT1,0表示卡片的发送波特率。

BIT7,BIT6 BIT5,BIT4 BIT3,BIT2 BIT1,BIT0 (二进制)

00 00 接收速率发送速率

00 00 106K

01 01 212K

10 10 424K

11 11 848K

DATA2:协议类型。

01:CPU卡

00:非CPU卡

DATA3:卡片的数据缓冲区大小。一个字节的十六进制数据。

DATA4:FWT。卡片需要的最小超时限制,一个字节的十六进制数据。

卡片处理命令的时间,实际时间为FWT×19.3Ms.

A6 03 FC 1C 05 66

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=1C

WAIT TIME=05

PARAMETER 无

CHECKSUM =XX

模块返回的数据为:

A6 05 FA 1C 00 11 22 33 44 55 XX

HEAD=A6

LENGTH=05

LEN_CHK =FA

COMMAND=1C

STATUS=00

DATA= 11 22 33 44 55

CHECKSUM =XX

l0x1D:MIFARE ONE 系列卡片读写命令(SEND/RECEIVE MIFARE ONE )该命令用于完成MIFARE ONE 系列卡片的读写操作。下面以MIFARE ONE 的HALT命令为例说明该命令的使用方法:

A6 04 FB 1D 05 50 15

HEAD=A6

LENGTH=04

LEN_CHK =FB

COMMAND=1D

WAIT TIME=05(等待延时)。

PARAMETER=50(mifare one 卡的HALT命令)。

CHECKSUM =15

模块返回的数据为:

A6 03 FC 1D 00 6A

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=1D

STATUS=00

CHECKSUM =6A

MIFARE ONE 卡片专用命令列表:

命令代码参数返回备注

AUTH 60/61 BLOCK ADDRESS+KEY(6

BYTES)

STATUS 认证密钥

READ 30 BLOCK NUM STATUS 读取数据块内容

WRITE A0 BLOCK ADDRESS+DATA(16

bytes)

STATUS 更新数据块数据

DECREMENT C0 BLOCK ADDRESS+DATA(4 bytes) STATUS 电子钱包扣值INCREMENT C1 BLOCK ADDRESS+DATA(4 bytes) STATUS 电子钱包充值RESTORE C2 BLOCK ADDRESS+DATA(4 bytes) STATUS Block-----buffer TRANSFER B0 BLOCK ADDRESS STATUS Buffer-----block HALT 50 NC STATUS 卡片挂起

详细的MIFARE ONE 卡片的读写操作请参考MIFARE ONE 卡片读写操作专题和

例程。对MIFARE ONE 卡片操作前可以调用DETECT CARD(0x17)命令,检测并锁定卡片。

l0x1E:读取二代身份证芯片ID号命令

该命令用于读取二代身份证卡的ID号。

A6 06 F9 1E 05 05 00 00 5F

HEAD=A6

LENGTH=06

LEN_CHK =F9

COMMAND=1E

WAIT TIME=05(波特率设置值0x0F 表示使用106K进行收发数据)。

PARAMETER=05 00 00(TYPE B 卡ATQB命令)。

CHECKSUM =5F

模块返回的数据为:

A6 37 C8 1E 00 50 00 00 00 00 ** 03 ** 05 00 ** ** 20 ** 20 ** ** 24 ** 78

00 01 ** ** 0106 03 14 00 00 00 00 00 06 ** 10 70 ** 4B ** 8B ** ** AA ** 86

18 ** 93 ** ** **

HEAD=A6

LENGTH=37

LEN_CHK =C8

COMMAND=1E

STATUS=00

DATA=” 50 00 00 00 00 ** 03 ** 05 00 ** ** 20 ** 20 ** ** 24 ** 78 00

身份证卡ID号

01 ** ** 01 06 03 14 00 00 00 00 00 06 ** 10 70 ** 4B ** 8B ** ** AA **

86 18 ** 93 ** ** ** ”

(* 号部分为隐去的身份信息。返回的数据信息里面从第13个字节开始

的8个字节的数据是身份证卡片的ID号)。

CHECKSUM =74

2.返回状态码

模块返回的数据祯中参数STATUS(执行状态)表示模块执行命令的状态。所有的命令代码如下:

l00H 操作成功

l01H-77H 监测TYPE A卡片的时候出现冲突。

l78H 接收卡片数据,CRC校验错。

l80 H 读写卡片时,没有开场

l81H 卡片无应答

l82H 卡片返回数据错误

l83H 调制常开

l84H 通讯命令校验和错误

l85H 未知错误

l86H 命令长度错误

l87H EEPROM 操作错误

l88H ISO14443协议CPU卡通讯错误(针对0x18命令)

l89H MIFARE ONE 卡片操作错误(针对0x1D命令)

附录

1. 参考天线设计

l 天线驱动原理

模块天线采用并联谐振的驱动方式,电线的阻抗为标准的50欧姆。天线

驱动电路的原理如下图:

天线

其中: C1=47pF

CX2需要根据不同的天线选取不同的参数,使CX2与天线组成的谐

振电路的固有频率为13.56MHz 即可。 计算公式:

l 天线制图笔记

1. 天线原理图设计

在实际应用过程中天线的电感是很难准确计算的,所以会多并联几个电容或设计一个可调的电容进行微调。或采用固定电容和可调电容并联搭配的设计方法,提高天线的设计成功率。

图(F1-1)

其中C2,C3,C4,CX5并联在一起,可以等效为一个大电容

C=C2+C3+C4+CX5

在实际使用中,这几个电容不是必须都焊接的。可以采用选焊的方法组合出需要的谐振电容C。

2.天线PCB制图

设计读卡器天线主要是天线线圈的绕制。可以采用双绞线的绕制方法,也可以采用平行线的绕制方法。总体上讲没有太多的限制。一个重要的指标就是天线的电感值不要超过2uH。天线的周边如果有金属物或靠近铁板,覆铜的PCB的情况下,会影响天线的电感值,和射频场的频率。

一般当天线(电感线圈)靠近金属物时电感会变大。所以在设计天线的时候,如果已知天线装配的位置存在金属物或接近金属覆铜板等导电材料,应适当的减少线圈的扎数。我们尝试过将天线绕制在有覆铜的应用电路的外周。只要天线的扎数选择合适,最里层线圈和覆铜外沿有一定的距离(>5mm)还是可以得到满意的读卡效果的。

在实际应用产品的设计中,很多时候天线是作为外接的一个部件设计在一个单独的天线板上的。对于这种应用我们的建议是:模块支持50欧姆匹配的天线,如果天线需要很长的引出线,建议使用50的同轴电缆。

另外尽量将与天线相关的匹配电容C1,C2,C3,C4,CX5设置在天线端。这样可以有效的提高系统的工作稳定性。

关于天线的Q值,这里不过多的介绍有关Q值的问题。需要明白的一个规律就是Q值越高,天线的射频场强越高,理论上读卡的距离也越远(提供的能量比较大)。但是Q值另一方面的影响是随着Q值的升高,天线允许的带宽在变窄。也就是说一个Q值很高的天线对频率的选择性越强。而我们需要读取的卡片往往会因为半导体和制卡等环节的工艺问题而出现频率的偏差。Q值过高的天线会出现挑卡或断层(卡片只在某个距离上可以读取到)等现象发生。只有使产品在读卡距离和卡片的兼容性方面达到一个合理的平衡点才能设计出性能优越的读写卡设备。

空心线圈的电感量计算公式如下:

L=(0.01*D*N*N)/(L/D+0.44)

其中

线圈电感量 L单位: 微亨

线圈直径 D单位: cm

线圈匝数 N单位: 匝

线圈长度 L单位: cm

我们在实际设计线圈的时候不可能按照公式精确的计算天线的电感值,只能从公式中了解到天线的电感和天线的截面,线圈的扎数,所用导线的线径成正比例的关系的。要得到同样的电感线圈,在使用导线相同的情况下,大截面的线圈的绕制圈数要小于小截面的天线。

下面给出几个我们设计的天线样板的实例希望对用户设计天线有所帮助。

相关文档