杭州灿宇科技的NFC卡(CY14443A)通讯协议规范:
通讯波特率默认为 19200,1 位起始位,8 位数据位,1位停止位
UART工作在半双工方式,即模块接受指令后才会做出应答。
命令格式为:前导头+通讯长度+命令字+数据域+校验码
前导头:0xAA0xBB两个字节,若数据中也有0xAA,那么其后为0,但长度不增加
通讯长度:指明去掉前导头之外的通讯帧所有字节数(含通讯长度字节本身)
命令字:各种用户可用命令(详见后文)
校验码:去掉前导头和校验码字节之外,所有通讯帧所含字节的异或值
CPU发送命令帧之后,需要等待读取返回值,返回值的格式如下:
正确:前导头+通讯长度+上次所发送的命令字+数据域+校验码
错误:前导头+通讯长度+上次所发送的命令字的取反+校验码
通讯指令表:
序号 命令解析 数据长度 命令字 指令说明
1 读头类型 2 0x01 正确返回数据域为 8 字节的模块型号
2 模块序列号 2 0x02 正确返回数据域为 4 字节的模块序号
3 模块掉电 2 0x03 正确返回数据域为空的帧,模块进入掉电模式
4 模块工作模式设定 3 0x11 正确返回数据域为空的帧,发送数据域包含一字节控制信息,1,模块进入省电模式,0退出省电
5 卡片进入省电模式 2 0x12 正确返回数据域为空的帧,卡片进入休眠模式,移开卡片后重新进入天线区域解除
6 设置自动寻卡 3 0x13 正确返回数据域为空的帧,发送数据域包含一字节控制信息,1:自动寻卡,0:关闭自动寻卡
7 蜂鸣器开关 3 0x14 正确返回数据域为空的帧,发送数据域包含 1 字节信息,0x1?:蜂鸣器响?次,0x0F:蜂鸣器关
8 蜂鸣器间隔 3 0x15 正确返回数据域为空的帧,发送数据域包含 1 字节信息:蜂鸣器响声间隔时间,单位秒
9 OUT1 控制 3 0x16 正确返回数据域为空的帧,发送数据域包含 1 字节信息:1:输出低电平;0输出高电平
10 OUT2 控制 3 0x17 正确返回数据域为空的帧,发送数据域包含1字节信息:1:输出低电平;0 输出高电平
11 读卡的类型 2 0x19 正确返回数据域为 2 字节的帧 S50 卡:0x400,S70卡:0x200 ,其他类型参考手册
12 读卡 2 0x20 正确返回数据域为 4 字节的卡序列号
13 读数据块 0x0A 0x21 正确返回数据域为 16 字节的块内容 发送:1字节密钥标志+1字节块号+6 字节密钥
14 写数据块 0x1A 0x22 正确返回数据域为空的帧 发送:1 字节密钥标志+1字节块号+6 字节密钥+16 字节数据
15 初始化钱包 0x0E 0x23 正确返回数据域为空的帧 发送:1 字节密钥标志+1字节块号+6 字节密钥+4 字节钱包初始化值
16 读钱包 0x0A 0x24 正确返回数据域为 4 字节的钱包值 发送:1字节密钥标志+1字节块号+6 字节密钥
17 给钱包充值 0x0E 0x25 正确返回数据域为空的帧 发送:1 字节密钥标志+1字节块号+6 字节密钥+4 字节钱包增加值
18 钱包扣款 0x0E 0x26 正确返回数据域为空的帧 发送:1 字节密钥标志+1字节块号+6 字节密钥+4 字节钱包需扣款值
19 读E2 0x05 0x30 正确返回数据域为若干长度值的帧 发送:1 字节低地址+1字节高地址+1 字节长度值
20 写E2 n 0x31 正确返回数据域为空的帧 发送:1 字节低地址+1字节高地址+n 字节写入的数据(n ≤ 16)
注:
1、密钥标志:0 为 PICC_AUTHENT1A;1 为 PICC_AUTHENT1B。
2、钱包操作涉及的值:都是低位在前,值为四字节有符号数。
3、指令详细使用方法,请参考工程代码。
命令:AA BB 02 01 03 (读头类型)
返回:AA BB 0A 01 43 59 31 34 34 34 33 41 66 (CY14443A)
命令:AA BB 02 02 00 (模块序列号)
返回:AA BB 06 02 62 75 91 22 A0 (62759122)
命令:AA BB 02 03 01 (模块掉电)
返回:AA BB 03 03 01 01 (?)
命令:AA BB 03 13 01 11 (设置自动寻卡)
返回:AA BB 02 13 11
命令:AA BB 03 14 0A 1D (蜂鸣器开关?)
返回:AA BB 03 14 00 17
命令:AA BB 03 16 00 15 (OUT1 控制)
返回:AA BB 02 16 14
命令:AA BB 03 17 0F 1B (OUT2 控制)
返回:AA BB 02 17 15
命令:AA BB 02 19 1B (读卡的类型)
返回:AA BB 02 E6 E4 (返回:错误)
命令:AA BB 0A 21 00 01 FF FF FF FF FF FF 2A
返回:AA BB 02 DE DC (返回:错误)
通讯波特率默认为 19200,1 位起始位,8 位数据位,1位停止位
UART工作在半双工方式,即模块接受指令后才会做出应答。
命令格式为:前导头+通讯长度+命令字+数据域+校验码
前导头:0xAA0xBB两个字节,若数据中也有0xAA,那么其后为0,但长度不增加
通讯长度:指明去掉前导头之外的通讯帧所有字节数(含通讯长度字节本身)
命令字:各种用户可用命令(详见后文)
校验码:去掉前导头和校验码字节之外,所有通讯帧所含字节的异或值
CPU发送命令帧之后,需要等待读取返回值,返回值的格式如下:
正确:前导头+通讯长度+上次所发送的命令字+数据域+校验码
错误:前导头+通讯长度+上次所发送的命令字的取反+校验码
通讯指令表:
序号 命令解析 数据长度 命令字 指令说明
1 读头类型 2 0x01 正确返回数据域为 8 字节的模块型号
2 模块序列号 2 0x02 正确返回数据域为 4 字节的模块序号
3 模块掉电 2 0x03 正确返回数据域为空的帧,模块进入掉电模式
4 模块工作模式设定 3 0x11 正确返回数据域为空的帧,发送数据域包含一字节控制信息,1,模块进入省电模式,0退出省电
5 卡片进入省电模式 2 0x12 正确返回数据域为空的帧,卡片进入休眠模式,移开卡片后重新进入天线区域解除
6 设置自动寻卡 3 0x13 正确返回数据域为空的帧,发送数据域包含一字节控制信息,1:自动寻卡,0:关闭自动寻卡
7 蜂鸣器开关 3 0x14 正确返回数据域为空的帧,发送数据域包含 1 字节信息,0x1?:蜂鸣器响?次,0x0F:蜂鸣器关
8 蜂鸣器间隔 3 0x15 正确返回数据域为空的帧,发送数据域包含 1 字节信息:蜂鸣器响声间隔时间,单位秒
9 OUT1 控制 3 0x16 正确返回数据域为空的帧,发送数据域包含 1 字节信息:1:输出低电平;0输出高电平
10 OUT2 控制 3 0x17 正确返回数据域为空的帧,发送数据域包含1字节信息:1:输出低电平;0 输出高电平
11 读卡的类型 2 0x19 正确返回数据域为 2 字节的帧 S50 卡:0x400,S70卡:0x200 ,其他类型参考手册
12 读卡 2 0x20 正确返回数据域为 4 字节的卡序列号
13 读数据块 0x0A 0x21 正确返回数据域为 16 字节的块内容 发送:1字节密钥标志+1字节块号+6 字节密钥
14 写数据块 0x1A 0x22 正确返回数据域为空的帧 发送:1 字节密钥标志+1字节块号+6 字节密钥+16 字节数据
15 初始化钱包 0x0E 0x23 正确返回数据域为空的帧 发送:1 字节密钥标志+1字节块号+6 字节密钥+4 字节钱包初始化值
16 读钱包 0x0A 0x24 正确返回数据域为 4 字节的钱包值 发送:1字节密钥标志+1字节块号+6 字节密钥
17 给钱包充值 0x0E 0x25 正确返回数据域为空的帧 发送:1 字节密钥标志+1字节块号+6 字节密钥+4 字节钱包增加值
18 钱包扣款 0x0E 0x26 正确返回数据域为空的帧 发送:1 字节密钥标志+1字节块号+6 字节密钥+4 字节钱包需扣款值
19 读E2 0x05 0x30 正确返回数据域为若干长度值的帧 发送:1 字节低地址+1字节高地址+1 字节长度值
20 写E2 n 0x31 正确返回数据域为空的帧 发送:1 字节低地址+1字节高地址+n 字节写入的数据(n ≤ 16)
注:
1、密钥标志:0 为 PICC_AUTHENT1A;1 为 PICC_AUTHENT1B。
2、钱包操作涉及的值:都是低位在前,值为四字节有符号数。
3、指令详细使用方法,请参考工程代码。
命令:AA BB 02 01 03 (读头类型)
返回:AA BB 0A 01 43 59 31 34 34 34 33 41 66 (CY14443A)
命令:AA BB 02 02 00 (模块序列号)
返回:AA BB 06 02 62 75 91 22 A0 (62759122)
命令:AA BB 02 03 01 (模块掉电)
返回:AA BB 03 03 01 01 (?)
命令:AA BB 03 13 01 11 (设置自动寻卡)
返回:AA BB 02 13 11
命令:AA BB 03 14 0A 1D (蜂鸣器开关?)
返回:AA BB 03 14 00 17
命令:AA BB 03 16 00 15 (OUT1 控制)
返回:AA BB 02 16 14
命令:AA BB 03 17 0F 1B (OUT2 控制)
返回:AA BB 02 17 15
命令:AA BB 02 19 1B (读卡的类型)
返回:AA BB 02 E6 E4 (返回:错误)
命令:AA BB 0A 21 00 01 FF FF FF FF FF FF 2A
返回:AA BB 02 DE DC (返回:错误)