FM1208高级自定义CPU卡读写模块用户手册.docx
- 文档编号:2395111
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:55
- 大小:1.59MB
FM1208高级自定义CPU卡读写模块用户手册.docx
《FM1208高级自定义CPU卡读写模块用户手册.docx》由会员分享,可在线阅读,更多相关《FM1208高级自定义CPU卡读写模块用户手册.docx(55页珍藏版)》请在冰点文库上搜索。
FM1208高级自定义CPU卡读写模块用户手册
类别
内容
关键词
摘要
修订历史
版本
日期
原因
V1.00
2015/01/30
创建文档
1.概述
CPU卡读写模块支持上海复旦微电子FM1208卡片的数据读写操作,具有UART通信接口。
模块不需要PSAM安全模块,所有密钥运算由读写模块独立完成,大大减少系统成本。
产品提供功能强大、高度集成的函数调用指令,实现自创目录、自创文件大小和自定义密钥管理系统,通过详细的例程说明,即可在30分钟内完全掌握CPU卡的自定义操作使用。
2.性能指标
2.1产品特性
●【支持卡片】:
上海复旦微电子FM1208CPU卡文件数据(自定义)读写操作;
●【电压范围】:
3.3V~5.5V;
●【工作电流】:
45mA;
●【工作温度】:
-20~85℃;
●【通信接口】:
UART(可外扩为RS-232或RS-485);
●【波特率】:
19200bps;
●【模块体积】:
⏹天线一体模块:
55.8×35.5×3mm;
⏹天线分体模块:
35.5×20.3×3mm;
●【读卡距离】:
40mm~60mm;
●【通信指示】:
具有2个通信数据收发指示灯,通信状态一目了然;
●【辅助输出】:
具有1个辅助输出,可以控制LED或蜂鸣器等外设;
●【看门狗】:
内置硬件看门狗,杜绝死机。
2.2应用场合
●通用读写卡器;
●门禁;
●停车场;
●消费机;
●预付费电表、水表、煤气表;
●其它使用Mifare卡作身份识别或金融交易的场合。
2.3产品尺寸
2.3.1天线一体
图21天线一体实物图
图22天线一体尺寸图(55.8×35.5mm)
2.3.2天线分体(标准型)
图23天线分体实物图
图24天线分体尺寸图(35.5×20.3mm)
图25外接天线板(尺寸:
70mm×50mm),读写数据距离>60mm
3.硬件接口
读卡模块具有一个电源通信接口和一个天线接口,如图31所示。
通信方式相同的模块其电源通信接口的定义相同,所有天线分体模块的天线接口的定义也相同。
图31模块接口
图32模块原理图符号
注意:
天线一体化模块虽然引出了天线接口,但其已经与模块内置的天线相连,所以实际使用时不能与外部再有任何电气连接,否则模块将无法正常工作。
3.1UART通信接口:
UART接口读写模块电源通信接口定义如表2所示。
表1电源通信接口定义
引脚
符号
I/O
说明
1
VCC
电源
模块电源,3.3V~5.5V
2
GND
地
模块地,连接到主机的地
3
TXD
输出
模块UART数据发送端,连接到主机的数据接收端RXD
4
RXD
输入
模块UART数据接收端,连接到主机的数据发送端TXD
5
NSS
——
——(没有使用,请悬空,不要连接到电源或地)
6
CLK
——
——(没有使用,请悬空,不要连接到电源或地)
7
INT
输出
辅助输出引脚,可以用来控制LED或蜂鸣器等外设
UART接口读写模块与一般微控制器(MCU)连接的电路如图33所示,天线一体读写模块不需要外接天线。
图33UART接口读写模块与微控制器连接
主机与模块的UART通信时序图如图34所示。
图34主机与模块UART通信时序
如果想把模块连接到电脑,则需要在电脑串口和模块之间加入MAX232之类的芯片,把RS-232电平转换为TTL的电平,或者使用USB转UART(非RS-232)转换器。
UART接口读写模块与电脑连接的电路如图35所示。
图35UART接口读写模块与电脑连接
3.2分体模块与天线的连接
分体模块需要外接天线才能工作,其天线接口的定义如表4所示。
表2天线接口定义
引脚
符号
I/O
说明
1
ANT2
输出
天线发送端2
2
GND
地
公共地
3
ANT1
输出
天线发送端1
分体模块与天线连接的电路如图38所示。
Cs1、Cs2、Cp1、Cp2和Rp1是天线的调谐元件,其参数在每种天线都是不一样的,需要根据实际情况进行调整,图中的参数只供参考。
(Cp1+Cp2)一般为50pF~200pF,天线一般为1~4圈,通常线圈的面积越大所需圈数越少。
图36分体模块与天线连接
3.3辅助输出
模块具有1个辅助输出端口,可以用来连接LED或蜂鸣器,主机可以通过命令控制模块辅助输出的打开(输出高电平)或关闭(输出低电平),从而实现控制LED的亮灭和蜂鸣器的鸣叫。
模块辅助输出与LED或蜂鸣器的连接如图39所示。
辅助输出可以直接驱动LED,但不能直接驱动蜂鸣器,所以控制蜂鸣器时需要外接三极管驱动。
上电时辅助输出端口默认输出为低电平。
图37模块辅助输出控制LED或蜂鸣器
3.4通信指示灯
模块具有两个通信数据收发指示灯,平时两指示灯不亮,当模块接收到数据时,绿色接收指示灯将会闪烁;当模块向外发送数据时,红色发送指示灯将会闪烁。
另外在模块上电时,发送指示灯会亮1秒后熄灭,表示模块工作正常。
通过这两个指示灯您可以清楚地知道通信的状态,快速排除故障,免除了动用示波器的麻烦。
3.5结构尺寸
天线分体和天线一体模块的结构尺寸分别如图310和图311所示,我们还为您准备了AutoCAD格式的封装图和DXP(Protel)格式的元件库,请向我们销售人员索取。
图38天线分体模块结构尺寸
图39天线一体化模块结构尺寸
4.通信协议
当主机(这里把与模块通信的设备统称为主机)通过UART接口与模块通信时,采用“命令——响应”的方式,主机发送命令数据给模块,模块执行相应的动作,然后把执行结果返回给主机。
主机与模块UART通信的参数为:
波特率19200bps,8位数据位,1位停止位,无奇偶校验。
4.1数据帧结构
数据帧格式分为主机命令数据帧和模块响应数据帧。
●主机命令数据帧结构
LEN
数据长度
ADDR
模块地址
FC
命令码
DATA
命令相关数据
BCC
校验值
1字节
1字节
1字节
N字节
1字节
●模块响应数据帧结构
LEN
数据长度
ADDR
模块地址
FC
命令码
SW
操作状态
DATA
回应数据
BCC
校验值
1字节
1字节
1字节
1字节
N字节
1字节
●帧数据含义
⏹LEN:
整个数据帧的长度,包含LEN本身及帧最后的校验值;
⏹ADDR:
读卡模块的地址,RS-485通信时会校验此地址,如果地址错误模块将不响应命令;
⏹FC:
命令码,具体含义参照表4.1;
⏹SW:
模块执行命令后返回的操作状态,0x00表示操作成功,其它值为错误代码,详见表4.2;
⏹DATA:
主机命令相关的参数或模块回应的数据,有的命令不带参数,则没有该字段。
如果操作不成功(SW不为0)这时数据为两字节更具体的错误代码(参见§10附录2:
CPU卡常用APDU错误码);
⏹BCC:
校验值,除了BCC以外所有数据的累加和取反,只取最低字节。
4.2命令码
读写模块命令码如表4.1所示。
表4.1读写模块命令码
命令
命令码
命令数据
响应数据
控制辅助输出端口
0x14
循环次数+高电平+低电平时间
——
读取模块信息
0x15
——
模块描述信息字符串
激活A型卡
0x16
——
卡片序列号
CPU卡激活
0x18
——
激活CPU卡ISO14443-4
外部认证
0xC0
密钥编号+密钥值
密钥验证获取操作权限
创建目录
0xC2
外部认证密钥+目录ID+目录大小+建立权限+擦除权限+目录名称+目录内的传输密钥
自定义目录
选择目录或文件
0xC3
目录ID或者文件ID
进入目录或选择文件
创建文件
0xC4
文件ID+文件大小+读权限+写权限
创建二进制数据文件
擦除目录文件
0xC5
——
擦除目录下所有目录及文件
创建密钥文件
0xC6
文件空间+增加权限+密钥编号
密钥权限值+密钥值
创建密钥文件
写文件数据
0xC8
文件ID+地址偏移+写数据长度数据
写二进制文件
读文件数据
0xC9
文件ID+地址偏移+读数据长度
读二进制文件
注:
响应时间仅供参考,测试条件为:
UART通信,波特率19200bps。
4.3操作状态码
读写模块返回的操作状态码意义如表4.2所示。
表4.2操作返回状态码意义
返回状态
意义
6981
命令与文件结构不相容
6982
不满足安全状态
6983
密钥被锁死
6985
使用条件不满足
6987
无安全报文
6988
安全报文数据项不正确
6A80
数据域参数错误
6A81
功能不支持或卡中无MF或卡片已锁定
6A82
文件未找到
6A83
记录未找到
6A84
文件无足够空间
6A86
参数P1P2错误
6B00
在达到Le/Lc字节之前文件结束,偏移量错误
6Cxx
Le错误
6E00
无铲的CLA
6F00
数据无效
9302
MAC错误
9303
应用已被锁定
9401
金额不足
9403
密钥未找到
9406
所需要MAC不可用
5.命令详解
以下实际例子的数据如果没有特别说明均为16进制,对于多字节数据字段的发送和回应均为小端模式,波特率为:
19200bps。
5.1读取模块信息(FC=0x15)
读取模块型号和版本等信息。
1.主机发送
LEN
数据长度
ADDR
模块地址
FC
命令码
DATA
命令相关数据
BCC
校验值
0x04
0x01
0x15
——
0xE5
2.模块返回
LEN
数据长度
ADDR
模块地址
FC
命令码
SW
操作状态
DATA
回应数据
BCC
校验值
0xXX
0x01
0x15
0x00
模块信息
0xXX
⏹DATA:
字符串形式的模块信息,包含有模块型号和版本等内容。
3.通信实例
操作
发送
返回
备注
读取模块信息
040115E5
1F0115004355543130302D412056312E303220323031332D31322D313200A2
返回的模块信息字符串为“XXX100-AV1.022013-12-12”
5.2读取卡片序列号(FC=0x16)
读取卡片原始序列号。
1.主机发送
LEN
数据长度
ADDR
模块地址
FC
命令码
DATA
命令相关数据
BCC
校验值
0x04
0x01
0x16
——
0xE4
2.模块返回
LEN
数据长度
ADDR
模块地址
FC
命令码
SW
操作状态
DATA
回应数据
BCC
校验值
0x09
0x01
0x16
0x00
卡片序列号
0xXX
3.通信实例
操作
发送
返回
备注
读取卡片序列号
040116E4
090116001E80D73238
卡片序列号为0x32D7801E(回应数据为小端模式)
5.3控制辅助输出端口(FC=0x14)
控制辅助输出端口的高低电平。
1.主机发送
LEN
数据长度
ADDR
模块地址
FC
命令码
DATA
命令相关数据
BCC
校验值
0x07
0x01
0x14
循环次数+
高电平时间+低电平时间
0xXX
⏹DATA:
◆循环次数:
1字节;
◆高电平时间:
1字节,以10ms为单位。
◆低电平时间:
1字节,以10ms为单位。
注意:
高电平值+低电平值之和不能大于255。
2.模块返回
LEN
数据长度
ADDR
模块地址
FC
命令码
SW
操作状态
DATA
回应数据
BCC
校验值
0x05
0x01
0x14
0x00
——
0xE5
3.通信实例
操作
发送
返回
备注
输出端口动作
07011403140AC2
05011400E5
循环3次,高电平时间200ms(0x14×10ms=200ms),低电平时间100ms(0x0A×10ms=100ms)
5.4CPU卡激活ISO14443-4(FC=0x18)
激活CPU卡ISO14443-4层,只有CPU卡才能激活到这一层,逻辑加密卡(如Mifare卡)不能激活到该层。
1.主机发送
LEN
数据长度
ADDR
模块地址
FC
命令码
DATA
命令相关数据
BCC
校验值
0x04
0x01
0x18
——
0xE2
⏹注意事项:
◆CPU卡离开读写模块放回后,对卡片进行任何操作前必须进行1次CPU卡激活,卡片激活后只要卡片不离开模块则不需要再次激活;
2.模块返回
LEN
数据长度
ADDR
模块地址
FC
命令码
SW
操作状态
DATA
回应数据
BCC
校验值
0x25
0x01
0x18
0x00
返回CPU卡的ATS信息
0xXX
⏹DATA:
数据区返回CPU卡片的ATS信息包含TST0TA1TB1TC1历史字符等信息
◆【0】:
ATS信息长度
◆【1】:
TS
◆【2】:
T0
◆……后续数据与T0的值有关非固定值
⏹注意事项:
◆错误返回
模块返回数据为“05011802DF”,表明读卡失败或该卡片不是CPU卡,有可能是逻辑加密卡(Mifare卡)或ID卡等。
◆目录操作
CPU卡激活成功后,表示进入CPU卡根目录,所有操作均表示在根目录下的操作。
3.通信实例
操作
发送
返回
备注
激活CPU卡片
040118E2
25011800107880A00220900000000000767A68C2000000000000000000000000000000004D
激活CPU卡片到ISO14443-4层
5.5外部认证(FC=0xC0)
进行密钥认证,获取CPU卡操作权限,只有操作权限满足才能进行对应的目录创建、文件创建或文件读写等操作。
1.主机发送
LEN
数据长度
ADDR
模块地址
FC
命令码
DATA
命令相关数据
BCC
校验值
0x15
0x01
0xC0
密钥编号+密钥值
0xXX
⏹DATA:
◆【密钥编号】:
1字节,密钥保存的编号,不同目录下的编号可以相同,如目录1和目录2均可有密钥编号为0的密钥,密钥为0的编号默认为传输密钥;
◆【密钥值】:
16字节,需要进行外部认证的密钥。
⏹注意事项:
◆不同目录有不同的认证密钥,即外部认证仅针对当前选择的目录,认证成功后可获取当前目录的操作权限;
◆全新的FM1208CPU卡默认根目录下的外部认证密钥是16字节0xFF;
◆外部认证成功后,只要权限足够,即可连续对指定目录内容进行创建、读写等操作,不需要每个操作步骤均进行外部认证;
◆若目录具有密钥文件,若外部认证连续15次错误将永久锁死卡片不能使用。
2.模块返回
LEN
数据长度
ADDR
模块地址
FC
命令码
SW
操作状态
DATA
回应数据
BCC
校验值
0x07
0x01
0xC0
0x00
认证结果
0xXX
⏹DATA:
◆【认证结果】:
密钥认证后的结果,认证结果如下表所示:
回应数据
认证结果
9000
认证成功,获取对应密钥的操作权限。
6283
密钥校验错误
6581
写EEPROM不成功
6700
错误的长度
6981
不是外部认证密钥
6982
密钥使用条件不满足
6983
密钥认证错误次数达到15次,卡片锁死不能使用。
6A82
KEY文件未找到
6A88
没有创建密钥文件,即没有认证密钥。
63CX
密钥认证错误,CX数据不断减少,最多仅允许认证15次,当到达C0(15次)后卡片锁死不能使用。
9302
安全信息不正确
⏹注意事项
◆每个目录(包括根目录)均有自已的密钥文件,外部验证不同的密钥文件具有不同的操作权限;
◆对目录进行任何操作,如创建子目录、创建文件、读写文件前均需要对该目录的密钥文件进行外部认证,获取操作权限(是否需要外部认证与目录与文件创建时的权限设置有关,后续详细说明)。
3.通信实例
操作
发送
返回
备注
激活CPU卡片
040118E2
25011800107880A00220900000000000767A68C2000000000000000000000000000000004D
激活CPU卡片到ISO14443-4层
外部认证
1501C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
0701C0000090A7
认证根目录编号为0的密钥,密钥值16字节默认为全0xFF
5.6创建密钥文件(FC=0xC6)
对指定目录创建密钥文件及操作权限,外部认证成功后即获取该目录对应的操作权限,操作权限包括目录建立、目录删除、文件建立、文件读写等操作功能。
1.主机发送
LEN
数据长度
ADDR
模块地址
FC
命令码
DATA
命令相关数据
BCC
校验值
0x19
0x01
0xC6
文件空间+增加权限+密钥编号+
密钥权限值+密钥值
0xXX
⏹DATA:
◆【文件空间】:
2字节,用于保存多个外部认证密钥的文件空间,文件空间为16的倍数,如保存5组不同权限的认证密钥,文件空间容量为90个字节;
◆【增加权限】:
1字节,默认为F0,可对密钥文件进行任意添加、删除密钥;
◆【密钥编号】:
1字节,新建的密钥文件自动添加一个新的密钥,用于标识该新的密钥地址编号。
密钥文件中不同的密钥仅能有唯一编号,不同密钥文件允许有相同密钥编号;
◆【密钥权限值】:
1字节,认证新建密钥后可获取的操作权限,密钥文件中其它的密钥可独立设置不同权限值,即同一密钥文件认证不同密钥可获取不同权限值;
◆【密钥值】:
16字节,需要进行外部认证的密钥。
⏹注意事项:
◆密钥权限判断说明:
假定目录/文件的操作权限为AB,认证密钥后取的权限值为XY,仅当以下条件成立时才能对目录或文件进行操作:
A≥X且Y≥B,任一条件不符合均没有操作权限,举例如下。
目录/文件操作权限
密钥权限
说明
F0
E2
F>E(符合),2>0(符合),具有操作权限,目录/文件操作权限为F0表示任何密钥权限均可满足,即不需要验证密钥权限即可无限制操作,若目录/文件操作权限不是F0,则必须进行外部认证。
F1
F2
F=F(符合),2>1(符合),具有对目录或文件的操作权限。
F3
0F
F>0(符合),F>3(符合),具有对目录或文件的操作权限,密钥权限为0F表示最高的密钥权限,即可对目录/文件进行任何功能的操作。
E2
F3
E
0F
F1
0 EF --- 表示目录或文件禁止写操作,仅能作为只读文件 ◆创建密钥文件指令仅适用于删除目录文件后马上新建密钥文件的场合,若删除目录文件后没有及时创建密钥文件,而是先创建了二进制文件,若想再次创建密钥文件时需要进行外部认证,由于没有密钥文件不能进行外部认证,因此不能再次创建密钥文件; ◆每个目录仅需要创建一个密钥文件,而且也必须创建一个密钥文件,若没有密钥文件则不能进行外部认证,不能获取对目录或文件的操作权限,从而有可能失去对该目录的控制。 2.模块返回 LEN 数据长度 ADDR 模块地址 FC 命令码 SW 操作状态 DATA 回应数据 BCC 校验值 0x07 0x01 0xC6 0x00 创建结果 0xXX ⏹DATA: ◆【创建结果】: 创建密钥文件返回结果如下表所示: : 回应数据 认证结果 9000 创建密钥文件成功。 6A86 密钥文件已存在,不能重复创建 3.通信实例 全新的FM1208CPU卡根目录下默认有一个密钥文件,密钥文件中存有1个编号为0,16字节0xFF的认证密钥。 由于该密钥的权限比较低,不允许创建新的目录,一般对新的CPU卡片需要删除根目录下的密钥文件,再新建一个较高权限的密钥文件。 举例: 对新CPU卡创建密钥文件及添加1个编号为0,权限为0F,16字节0xFF的认证密钥,具体操作如下: 操作 发送 返回 备注 CPU卡激活 040118E2 25011800107880A00220900000000000767A68C2000000000000000000000000000000004D 激活CPU卡进入ISO14443-4层,进入CPU卡根目录 外部认证 1501C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 0701C0000090A7 外部认证根目录下,编号为0,密钥为16字节0xFF,返回验证成功获取操作权限 删除目录/文件 0401C535 0701C5000090A2 删除根目录下的所有目录(包括目录下的文件)及密钥文件 创建密钥文件 1901C60001F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F 0701C6000090A1 根目录下创建密钥文件和1个256字节容量,编号为0,权限为0F,16字节0xFF密钥的认证密钥 5.7创建目录(FC=0xC2) 创建目录和创建目录下的密钥文件。 1.主机发送 LEN 数据长度 ADDR 模块地址 FC 命令码 DATA 命令相关数据 BCC 校验值 0x32 0x01 0xC2 外部认证密钥+目录ID+目录容量+建立文件权限+擦除文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FM1208 高级 自定义 CPU 读写 模块 用户手册