COM接口协议
1 概述
此通讯协议标准主要是用来说明RFID原理机开发平台与主机或其他控制器之间通讯协议的规定和通讯方式的介绍,通讯协议是建立在RS232串行通讯基础上的,由于RFID原理机与电子标签之间的通讯是主—从应答方式,所以主机与RFID原理机之间通讯也是主—从应答方式。
当主机按照发送格式发送一帧数据到RFID原理机时,RFID原理机如果校验通过将按照协议规定提取有效信息发送出去,如果可读卡范围之内有电子标签存在,并返回相应信息,RFID原理机再次校验接收到的数据,如果数据校验通过,RFID原理机会将命令字和接收到的数据全部上发给主机,这样就更接近ISO/IEC15693标准协议。
RFID原理机提供标准RS232和USB-B口方便二次开发和ISO/IEC15693标准协议的学习,可以通过原理机上的SW2开关进行选择两种接口;也可以通过自带上位机软件通过RS232或USB-B口进行读写数据或教学演示。
2 数据通信协议
2.1 通信协议概念
通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用格式,信息单元包含的信息与含义等,从而确保网络中数据顺利着传送到确定地方并被有效识别。
a.协议是基于一次交换
●上位机或其他控制器到RFID原理机一次请求
●RFID原理机到上位机或其他控制一次响应
b.每一次请求包含在一帧内,请求中包括针头(0x02)、指令长度、标志、命令字、
数据域、校验位和针尾(0x03)
●指令长度(8bits):包括针头和针尾在内的整条指令的长度
●标志(8bits):b2(数据编码模式选择),b1(数据速率选择),b0(位编码模式选择),
其他位未使用
●命令字(8bits):同ISO/IEC 15693中的规定
●数据域(不定):应用数据域
●校验位(8bits):从指令长度开始到数据域结束,逐字节累加值,累加过程中
溢出不做处理,只取低字节
c.每次响应包括以下的域:
●命令字(8bits):与请求命令中的命令字相对应,作为请求指令应答对应标志
●标志(8bits):同ISO/IEC 15693中响应域规定
●强制和可选的参数:取决于命令,同ISO/IEC 15693中响应域规定
●应用数据域:同ISO/IEC 15693中响应域规定
CRC(16bits):除去命令字之外所有指令的校验位
d.一个单字节域在通讯中首先传输最低有效位(LSBit)
e.一个多字节域在通讯中首先传输最低有效字节(LSByte),每字节首先传输最低有
效位(LSBit)
2.2 请求格式与请求标志定义
通用请求格式、请求标志字和请求命令字分别在下表1、表2和表3中做了定义,其中请求标志在ISO/IEC15693标准协议的基础上添加编码模式选择位,请求命令字完全采用ISO/IEC15693协议中的命令字。
表2 请求标志字定义
表3 请求命令字定义
2.3 响应格式
按照请求格式下发请求指令后,RFID原理机调制高频载波后将指令发送出去,VICC 识别到正确指令后将做相应的响应,RFID解调出响应数据后做CRC校验,如果校验通过,将按照响应格式通过RS232送出。响应格式在ISO/IEC 15693中通用响应格式的基础上添加了一字节的通用请求格式中的命令字,方便上位机或其他控制器处理。
响应格式如下表3-3所示,是完全接进ISO/IEC 15693响应格式的,这样在RFID原理机基础上进行二次开发的过程中,是完全接进标准协议的,这对学习标准协议和理解其他协议会有很大的帮助。
在一次响应中,响应标志指出VICC完成动作情况,并且相应域是否出现。响应标志由8bit组成,响应标志1-8位定义如表5所示。
将以错误码0F应答,所以第3部分命令集中当设置错误标志时的响应格式不做介绍。
除上面情况之外,如果通过RS232下发请求指令后,场内没有VICC做出响应或VICC 做了响应,但在RFID原理机接收数据的过程中出现了错误数据,这两种情况RFID原理机会返回错误的响应信息,分别如下所示:
返回:0x45 0x45 描述:请求超时,没有VICC响应或VICC不响应
返回:0x45 0x43 描述:校验失败,即收到数据,没有通过CRC校验
3 命令集
3.1 目录
命令编码= `01`
当收到目录请求命令,VICC将完成防冲突序列
目标请求格式:
3.2 保持静默
命令编码= `02`
当收到保持静默命令,VICC将进入保持静默状态并且不返回响应,原理机放回请求超时:0x45 0x45
如何解除静默和保持静默的一些特征在ISO/IEC15693-3中有详细介绍
3.3 读单个块
命令编码= `20`
当收到读单个块命令,VICC将读请求块,并且在应答中返回它的值
假如在请求中选择标志已设置,VICC将返回块安全状态,接着是块值
假如在请求中选择标志没有设置,VICC将只返回块值
读单个块请求格式:
3.4 写单个块
命令编码= `21`
当收到写单个块命令,VICC将包含在请求中的数据写入请求块,并且在应答中报告操作成功与否
写单个块请求格式:
3.5 锁定块
命令编码= `22`
当收到锁定块命令,VICC将永久锁定请求块
锁定单个块响应格式:
3.6 读多个块
命令编码= `23`
当收到读多个块命令,VICC将读请求块,并且在响应中发送回它们的值
假如选择标志在请求中有设置,VICC将返回块安全状态,接着返回一个接一个的块值假如选择标志没有在请求中设置,VICC将只返回块值
请求中“块数量”域中的值`06`请求7个块,值`00`请求读单个块
读多个块请求格式:
3.7 写多个块
命令编码= `24`
当收到写多个块命令,VICC将包含在请求中的数据写入请求块,并且在响应中报告操作成功与否
3.8 选择
命令编码= `25`
当接收到选择命令:
假如UID等于其自身的UID,VICC将进入选择状态,并将发送一个响应
假如不一样,VICC将回到准备状态,并将不发送响应
选择响应格式: