物联网RFID开发套件通讯协议.docx

上传人:b****8 文档编号:11341662 上传时间:2023-02-28 格式:DOCX 页数:55 大小:45.62KB
下载 相关 举报
物联网RFID开发套件通讯协议.docx_第1页
第1页 / 共55页
物联网RFID开发套件通讯协议.docx_第2页
第2页 / 共55页
物联网RFID开发套件通讯协议.docx_第3页
第3页 / 共55页
物联网RFID开发套件通讯协议.docx_第4页
第4页 / 共55页
物联网RFID开发套件通讯协议.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

物联网RFID开发套件通讯协议.docx

《物联网RFID开发套件通讯协议.docx》由会员分享,可在线阅读,更多相关《物联网RFID开发套件通讯协议.docx(55页珍藏版)》请在冰豆网上搜索。

物联网RFID开发套件通讯协议.docx

物联网RFID开发套件通讯协议

物联网RFID开发套件通讯协议

基础产品开发部

V1.0.1

1文档介绍

1.1文档内容说明

本文档定义了主要数据接口的通信协议,即本设备与服务终端(包括PC机、上级终端设备等)之间数据传输的格式,便于扩展和完善。

服务终端按照此协议与该设备进行数据交互,完成各种应用功能。

应用项目:

RFID实验箱

硬件开发平台:

STM32F103xx

软件开发环境:

KEIL4.0

1.2术语与缩写解释

缩写、术语

解释

本设备

实验箱

服务终端

包括PC机、平板、上级终端设备等

2通讯协议描述

本设备作为从设备与服务终端的通讯方式:

串口(有线方式):

波特率:

115200Bps(固定)

起始位:

1bit

结束位:

1bit

数据位:

8bits

校验位:

本设备接收服务终端数据的超时控制:

两个数据之间的超时时间是10ms。

本设备在接收服务终端数据包的时候,要是接收超时,不发送任何错误应答数据包,继续等待下一个数据包;如果已接收到整包,但有错(效验错误等),则应回发错误应答数据包,便于服务终端及时处理。

本设备作为从设备,无重发机制。

采用一问一答方式,即本设备收到一个数据包后回送一个应答数据包。

服务终端可自行制定重发和应答超时控制。

2.1消息格式说明

完整的数据通讯包如下:

服务终端发送:

同步码

包头

长度

校验开关

模块号

功能号

数据域

校验

包尾

STX

LEN

ChkSW

Model

Func

CHK

ETX

55H

04H

XXH+XXH

XXH

XXH

XXH

 

CRC

06H

8BYTE

1BYTE

2BYTE

1BYTE

1BYTE

1BYTE

NBYTE

2BYTE

1BYTE

设备响应(应答):

同步码

包头

长度

校验开关

模块号

功能号

数据

校验

包尾

STX

LEN

ChkSW

Model

Func

CHK

ETX

04H

XXH+XXH

XXH

XXH

XXH

+

CRC

06H

8BYTE

1BYTE

2BYTE

1BYTE

1BYTE

1BYTE

NBYTE

2BYTE

1BYTE

注释:

H  ------- 表16进制数据。

各字段说明:

同步码-------8个55H,仅做为数据同步判断,不作为数据包有效数据,每个数据包开始必须包括。

(后面有关数据包的描述省略此字段。

包头-------STX,完整消息包的起始标识。

1byte,固定为0x04。

长度-------LEN,(2字节,低端模式即低字节在前)表示从LEN的下一个字节开始到CHK结束的字节数(固定字节为5,再加上数据域的长度就是LEN的值)

校验开关-------ChkSW,(1字节)表示是否要crc校验,0—要,其他—不要。

(crc校验的字节都是存在的,区别在于是否要以crc校验来判断数据包的正确性)

模块号-------Model,(1字节)表示不同功能的模块。

功能号-------Func,(1字节)功能(命令)编号。

ST-------(1字节)设备应答状态字节。

DATA-------交换的数据信息,最大长度4096(暂定)字节。

校验-------(2字节,低端模式即低字节在前)从长度开始到数据域结束的所有字节CRC16结果。

包尾-------数据包结束标志,固定为0x06。

注:

目前选用CRC16校验方式。

生成多项式为CCITT推荐的16位的x16+x12+x5+1(0x11021)。

发送方根据通信包生成2字节的CRC检验;同样,接收方收到完整的数据包后,根据通信包生成新的CRC检验值。

如果所计算出的CRC值和收到的校验值相同则表明该数据包有效,否则认为该包在传输的过程中产生了差错。

对于CRC校验出错的通信包,接收方不进行处理,直接返回错误应答包。

校验单元在数据传输时,按照小端模式进行传输,即低字节传输在前,高字节传输在后。

若ChkSW!

=0,发送方校验值可随意填写,但不可省略;接收方不进行CRC校验判断。

2.2模块号分类

模块

模块号

说明

系统

00H

未用,预留

LED蜂鸣器

02H

未用,预留

125K低频模块

03H

900M超高频模块

04h

有源RFID

05h

13.56M高频模块(RC531)

07H

NFC(PN512)

06H

打印机

08H

未用,预留

二维码硬解码

09H

未用,预留

二维码软解码

0AH

未用,预留

2.3状态返回码分类

模块

错误编码

说明

系统

00H-0FH

LED蜂鸣器

20H-2FH

非接触式卡

70H-7FH

3协议交互

3.1流程

本设备为被动方,消息交互由终端等主机发起。

设备收到一个消息包后,根据消息内容作相应处理,回送一个应答消息包。

正常消息交互流程如下图所示:

通信正常消息交互

交互由服务终端发起,服务终端在数据发送完成后,及时启动接收定时器Tout,并等待接收方消息应答。

超时参数Tout由服务终端根据消息特点自行决定。

服务终端在Tout时间内未能成功接收到接收方的消息应答,是否重发及重发次数由服务终端决定。

3.2交互详述实例

以通讯握手为例:

3.2.1服务终端—>设备:

0x040x060x000x000x000x010x53chk

(2)0x06

各具体说明如下:

1.0x04:

消息起始标志,固定为0x05。

2.0x060x00:

协议字节长度,低字节在前,2字节组合后为0x0006共6个字节。

3.0x00:

ChkSW字段

4.0x00:

模块号0x00为系统模块。

5.0x01:

功能号0x01握手协议。

6.0x53:

数据(字符‘S’)。

7.chk

(2):

校验字,2BYTE,低字节在前。

8.0x06:

消息结束标志,固定为0x06。

3.2.2设备—>服务终端:

0x040x060x000x000x000x010x00chk

(2)0x06

各具体说明如下:

1.0x04:

消息起始标志,固定为0x05。

2.0x060x00:

协议字节长度,低字节在前,2字节组合后为0x0006共6个字节。

3.0x00:

ChkSW字段

4.0x00:

模块号0x00为系统模块

5.0x01:

功能号0x01握手协议。

6.0x00:

应答数据(握手成功)。

7.chk

(2):

校验字,2BYTE,低字节在前。

8.0x06:

消息结束标志,固定为0x06。

4系统功能描述(暂不支持)

4.1握手协议

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

06H00H

xx

00H

01H

‘S’

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05H+O1H00

xx

00H

01H

CRC

06H

参数说明:

功能:

发送握手请求,搜索是否有设备存在

参数:

返回:

00H

握手成功,表明设备存在且工作正常。

01H

握手失败,表明无设备或出现故障。

注释:

 

4.2驱动版本信息查询

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05H+01H00

xx

00H

02H

‘D’

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05H+XXH00

xx

00H

02H

gDriverSoftVer+

CRC

06H

参数说明:

功能:

查询设备驱动版本信息

参数:

返回:

00H

成功

其他

失败

注释:

返回值说明:

(以字符串方式)

gDriverSoftVer;//驱动软件版本

4.3应用版本信息查询

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05H+01H00

xx

00H

02H

‘A’

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05H+XXH00

xx

00H

02H

gAppSoftVer+

CRC

06H

参数说明:

功能:

查询设备应用版本信息

参数:

返回:

00H

成功

其他

失败

注释:

返回值说明:

(以字符串方式)

gAppSoftVer;//应用软件版本

4.4系统功能返回码说明

功能:

在每一模块中,系统返回值说明

参数:

返回:

00H

成功

01H

握手失败,表明无设备或出现故障。

02H

接收通信命令长度错误

03H

模块错误

0X04

功能号错误

0x05

校验错误

0x06

数据包其他错误

0x07

参数错误

注释:

513.56M高频非接触式卡模块功能

非接触卡的英文名称为ContactlessCard。

在POS中,非接触卡专指近距离射频非接触IC卡,其英文名称为ProximityIntegratedCircuitCard(邻近式IC卡),简称PICC。

非接触卡模块能访问ISO14443标准规定的A型CPU卡、B型CPU卡,以及MIFARE1卡。

这三种卡均采用由非接触卡模块产生的13.56MHz载波来激励和驱动,卡片应放到非接触卡模块的感应区内(面对天线约6厘米的范围内)。

常见的M1卡容量为1K字节,分为64块,每块16字节。

每4块依次组成一个扇区,扇区是一个相对独立的可操作单元,可用于存放一个钱包、两个密码(A密码和B密码),用以支持小额支付方面的应用。

5.1打开模块(打卡天线)

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+0100

xx

07H

01H

无 

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+XX00

xx

07H

01H

CRC

06H

参数说明:

功能:

打开模块(天线)

参数:

返回:

00H

成功

其他

失败

注释:

在寻卡是会自动打开

5.2寻卡

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+xx00

xx

07H

10H

+ 

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+XX00

xx

07H

10H

+

CRC

06H

参数说明:

功能:

按指定的模式搜寻PICC卡片;

参数:

Mode

 

REQ

mode=0x00或‘0’——搜寻磁场中的所有类型的RFID卡

(此方式时原有状态可能会被改变,做原理机建议建议不要用)

mode=‘m’或‘M’---搜寻M1卡;

mode=‘c’或‘C’---搜寻CPU卡;

3>如在3秒内没搜到卡,则返回无卡

REQ:

寻卡方式

0x00:

仅搜寻IDLE状态的卡(不唤醒HALT状态的卡)

非0:

搜寻所有状态的卡(包括唤醒HALT状态的卡)

返回:

00H

成功

70H

无卡

71H

参数错误

72H

模块未开启

注释:

5.3防冲突

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+xx00

xx

07H

11H

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+XX00

xx

07H

11H

+

+

CRC

06H

参数说明:

功能:

对搜到卡片进行防冲突检测。

参数:

CardType

卡片类型字节缓冲区;目前均返回二字节的类型值:

CardType[0]、CardType[1]:

CardType[0]:

卡调制类型

◆‘a’‘A’—搜寻到A型卡

◆‘b’‘B’—搜寻到B型卡

CardType[1]:

卡逻辑类型

◆‘c’‘C’—搜寻到CPU卡

‘m’‘M’—搜寻到M1卡

SerialNo

卡片序列号信息的缓冲区首址.

该信息依次包含了序列号长度和序列号内容等两项内容.

B型卡和M1卡的序列号均为4字节;

A型卡的序列号一般为4字节,也有7字节或10字节的.

采用字节SerialNo[0]指示序列号的长度,

SerialNo[1~10]保存序列号(左对齐).

若需要读取序列号、则先要读取长度字节.

返回:

00H

选卡成功

70H

无卡

71H

参数错误

72H

模块未开启

73H

防冲突失败

注释:

5.4选卡

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+xx00

xx

07H

12H

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+XX00

xx

07H

12H

+

+

CRC

06H

参数说明:

功能:

对防冲突检测成功的卡,将其选中和激活。

参数:

CardType

卡片类型字节缓冲区;目前均返回二字节的类型值:

CardType[0]、CardType[1]:

CardType[0]:

卡调制类型

◆‘a’‘A’—搜寻到A型卡

◆‘b’‘B’—搜寻到B型卡

CardType[1]:

卡逻辑类型

◆‘c’‘C’—搜寻到CPU卡

‘m’‘M’—搜寻到M1卡

SerialNo

卡片序列号信息的缓冲区首址.

该信息依次包含了序列号长度和序列号内容等两项内容.

B型卡和M1卡的序列号均为4字节;

A型卡的序列号一般为4字节,也有7字节或10字节的.

采用字节SerialNo[0]指示序列号的长度,

SerialNo[1~10]保存序列号(左对齐).

若需要读取序列号、则先要读取长度字节.

返回:

00H

选卡成功

70H

无卡

71H

参数错误

72H

模块未开启

73H

冲突

74H

选卡失败

注释:

5.5激活卡

收到此命令后,设备依次做【寻卡】、【防冲突】、【选卡】动作

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+xx00

xx

07H

02H

+ 

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+XX00

xx

07H

02H

+

+

CRC

06H

参数说明:

功能:

按指定的模式搜寻PICC卡片;搜到卡片后,将其选中和激活。

参数:

Mode

 

REQ

mode=0x00或‘0’——搜寻磁场中的所有类型的RFID卡

(建议不要用)

mode=‘m’或‘M’---搜寻M1卡;

mode=‘c’或‘C’---搜寻CPU卡;

3>如在3秒内没搜到卡,则返回无卡

 

REQ:

寻卡方式

0x00:

仅搜寻IDLE状态的卡(不唤醒HALT状态的卡)

非0:

搜寻所有状态的卡(包括唤醒HALT状态的卡)

CardType

卡片类型字节缓冲区;目前均返回二字节的类型值:

CardType[0]、CardType[1]:

CardType[0]:

卡调制类型

◆‘a’‘A’—搜寻到A型卡

◆‘b’‘B’—搜寻到B型卡

CardType[1]:

卡逻辑类型

◆‘c’‘C’—搜寻到CPU卡

‘m’‘M’—搜寻到M1卡

SerialNo

卡片序列号信息的缓冲区首址.

该信息依次包含了序列号长度和序列号内容等两项内容.

B型卡和M1卡的序列号均为4字节;

A型卡的序列号一般为4字节,也有7字节或10字节的.

采用字节SerialNo[0]指示序列号的长度,

SerialNo[1~10]保存序列号(左对齐).

若需要读取序列号、则先要读取长度字节.

返回:

00H

选卡成功

70H

无卡

71H

参数错误

72H

模块未开启

73H

冲突

74H

选卡失败

注释:

5.6卡APDU命令处理

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+XX00

xx

07H

03H

+

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+XX00

xx

07H

03H

++

CRC

06H

参数说明:

功能:

向卡片发送APDU格式的数据,并接收响应

输入参数

CLEN

C-APDU的总长度,2byte,低端模式

C-APDU

APDU命令

输出参数

DLEN

D-APDU的总长度,2byte,低端模式

D-APDU

返回的APDU

应答ST

00H

写入成功

71H

参数错误

72H

模块未开启

7AH

APDU失败

注释:

仅cpu卡。

命令应用协议数据单元按照ISO/IEC7816规范格式。

5.7卡移开

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+0000

xx

07H

04H

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+0100

xx

07H

04H

CRC

06H

参数说明:

功能:

判断卡片是否已经移开感应区

参数:

返回:

00H

卡片已移开感应区

72H

模块未开启

74H

卡片未移开感应区

注释:

5.8卡HALT

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+0000

xx

07H

05H

 

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+0100

xx

07H

05H

CRC

06H

参数说明:

功能:

向卡片发送HALT指令,使PICC进入HALT状态

参数:

返回:

00H

成功

7CH

失败

注释:

仅对M1卡有效

5.9关闭模块(关闭天线)

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+0000

xx

07H

07H

 

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+0100

xx

07H

07H

CRC

06H

参数说明:

功能:

关闭非接触卡模块,使该模块处于关闭状态

参数:

返回:

00H

关闭成功

注释:

执行该命令后,非接触卡模块变成关闭状态,模块不再向外面辐射射频载波。

5.10M1卡密码认证

服务终端发送:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+XX00

xx

07H

08H

+

+

+

 

CRC

06H

设备响应:

包头

长度

ChkSW

模块号

功能号

数据

校验

包尾

04H

05+0100

xx

07H

08H

CRC

06H

参数说明:

功能:

验证M1卡访问时读写相应块需要提交的A密码或B密码。

参数:

Type

用于指定提交的密码类型:

(1字节)

‘A’——提交的是A密码

‘B’——提交的是B密码

BlkNo

(1字节)用于指定访问的块号,对于1K容量的M1卡,其有效范围为0~63。

Pwd

(6字节)提交的密码。

SerialNo

存放卡片序列号。

字节SerialNo[0]指示序列号的长度,

SerialNo[1~10]保存序列号(左对齐).

返回:

00H

写入成功

72H

模块未开启

71H

参数错误

75H

密码认证失败

注释:

M1卡依次以每四块组成一个扇区;每扇区的最后一块是控制块,存放着A密码、B密码以及各块的权限控制信息;A密码和B密码均为6字节,每块长度为16字节。

4个块的读写仅用两个6字节的密码来保护,故其安全性不

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1