ISO15693类型的命令解析以及防碰撞过程

一、介绍

本博文介绍了符合ISO15693标准的标签类型的检测以及防碰撞过程。

二、协议简介

(2.1)ISO15693介绍了三种模式,它们之间的关系如下所示:
这里写图片描述
(2.2)请求命令格式:

SOFFlagsCommand CodeParametersDataCRCEOF
帧开始标识命令代码参数数据CRC帧结束

(A)标识(Flags)总共占一个字节大小,它的定义如下图所示:
这里写图片描述
这里写图片描述
这里写图片描述
(B)根据ISO15693的命令代码分成强制的、可选的、自定义以及私有的四种类型。它们的定义如下:
强制命令

强制命令的命令代码(command code)取值范围为0x01~0x1F,所有标签(VICC)必须支持在该命令代码范围内的命令。
可选命令
可选命令的命令代码取值范围为0x20~0x9F。在该命令代码范围的命令,标签可能支持;如果标签支持可选命令,它的命令格式在后续会介绍。;如果标签不支持可选命令,并且寻址标识(Address_flag)或者选择标识(Select_flag)都设置了,它可能会返回错误码或者不响应,保持沉默;如果标签不支持可选命令,并且寻址标识(Address_flag)或者选择标识(Select_flag)未设置,那么标签就不会响应,会保持沉默。
自定义命令
自定义的命令代码取值范围为0xA0~0xDF,标签可以选择去支持它,自定义命令可以实现制造商的特殊功能。所有的自定义命令必须包含IC制作商编码。如果标签不支持自定义命令,那么给它发送自定义命令时,它应该返回错误码或者保持沉默。
私有命令
私有命令的命令代码取值范围是0xE0~0xFF,在该命令代码的范围内的命令可以用于制造商测试,系统信息编码等。私有命令要求必须包含IC制造商代码以及IC版本号。

ISO15693的命令代码如下表:

命令代码命令类型命令作用
0x01强制命令清查命令(查找所有在RF场中的标签VICC)
0x02强制命令保持安静命令(指定某个标签不再响应清查命令)
0x03~0x1F强制命令预留给未来使用
0x20可选命令读取标签指定单块内容信息
0x21可选命令将指定信息写入标签指定单块位置
0x22可选命令将标签指定块进行锁定
0x23可选命令读取标签指定多块的信息
0x24可选命令将信息写入到标签多块位置
0x25可选命令选择某一个标签(选中被发送了保持安静命令的标签)
0x26可选命令重新准备(重置被发送了保持安静命令的标签)
0x27可选命令写入AFI(Application Family Identifier)
0x28可选命令锁定AFI
0x29可选命令写入DSFID(Data Storage Format Identifier)
0x2A可选命令锁定DSFID
0x2B可选命令获取标签系统信息
0x2C可选命令获取多块的安全状态
0x2D~0x9F可选命令预留给未来使用
0xA0~0xDF自定义命令由IC制造商决定
0xE0~0xFF私有命令由IC制造商决定

(2.3)命令响应格式:

SOFFlagsParametersDataCRCEOF
帧开始标识参数数据CRC帧结束

(A)标识(Flags)占一个字节,它的定义如下表所示:
这里写图片描述
(B)如果错误码(Error_flag)的值为1,则错误码定义如下:
这里写图片描述

三、命令

3.1 清查命令(Inventory)【命令码:0x01】

当所有的标签(VICC)接收到了该命令,那么都应该做出相应的响应。

3.1.1 格式

这里写图片描述
注:标识(Flags)参考前面的请求命令中标识,第二个字节为Inventory,在此处对应它的命令代码0x01。AFI的定义如下表:
这里写图片描述
掩码长度(Mask Length)指示了需要的比较的字节数,范围为[0x00,0x40];掩码值(Mask Value)代表需要比较的比特数。如:发送无AFI命令为 26 01 01 00,表示第一个字节Flags的值为0x26;第二个命令代码为0x01,代表inventory命令;掩码长度(Mask Length)值为0x01,表示需要比较在RF场中的标签ID(UID)的第一个字节;掩码值为0x00。

3.1.2 响应

这里写图片描述
如果RF场中有多张标签响应,则就会发生碰撞情况,此时响应中的CRC就会计算错误,由此我们可以判断是否要进行防碰撞过程。

3.2 保持安静命令(Stay quiet)【命令码:0x02】

当标签接收到该命令时,它就会进入安静状态(quiet state),并且不会有响应返回。
当标签在安静状态时

它将不会响应任何带有清查标识(inventory_flag)的请求
它将响应带有寻址标识的请求

如下情况标签将退出安静状态

1)重启
2)接收到选择(select)请求,并且进入选择状态。如果支持的话,将响应;如果不支持,则返回错误码
3)接收到重置到准备(reset to ready)请求,并且进入准备状态(ready state)

3.2.1 命令格式

这里写图片描述

注意:(A)保持安静(Stay Quiet)命令必须执行在寻址模式下,及选择标识(Select_flag)设置成0并且寻址标志(Address_flag)设置成1。
(B)该命令没有响应返回

3.3 读单块命令(Read single block)【命令码:0x20】

当标签(VICC)接收到读单块命令时,它应该响应该命令,并且将指定单块的值返回在响应里。
如果在该请求里设置了可选标识(Option_flag),标签应该返回该块的安全状态,然后是该块的值;如果没有设置可选标识,则仅仅返回块信息。

3.3.1 命令格式

这里写图片描述

3.3.2 命令响应

这里写图片描述

3.4 写单块命令(Write single block)【命令码:0x21】

当标签接收到写单块的命令时,信息应当写入对应的块中,并且在返回值应该显示写入成功与否。
当可选标志没有设置时,从完成信息写入开始,在规定时间,应当会返回响应。
如果可选标志已经设置了,标签应当等待完全调制的帧结束标识(EOF),并且返回响应给VCD。

3.4.1 命令格式

这里写图片描述

3.4.2 命令响应

这里写图片描述

3.5 锁块命令(Lock block)【命令码:0x22】

当标签接收到锁块命令时,标签应当永久的锁定所请求的块。
如果可选标志没有被设置,当完成锁块操作时,标签应当在规定时间返回它的响应。
如果可选标志设置了,标签应当等到帧结束标识(EOF),并返回它的响应。

3.5.1 命令格式

这里写图片描述

3.5.2 命令响应

这里写图片描述

3.6 读多块命令(Read multiple blocks)【命令码:0x23】

当标签接收到读多块的命令时,标签应当将块的信息在返回的响应中表示出来。
如果设置了可选标志,标签应当返回块的安全状态,随后跟着一块接着一块的值
如果可选标志没有被设置,标签只返回块的值。
块的序号从0x00到0xFF。当块的值为0x06时,表示的是第7块。

3.6.1 命令格式

这里写图片描述

3.6.2 命令响应

这里写图片描述

3.7 写多块(Write multiple blocks)【命令码:0x24】

当标签接收到写多块的命令时,标签应当将数据写入到对应的块中,并且将写入是否成功的的状态报告给读卡设备(VCD)
如果可选标志没有被设置,当完成写操作时,在规定时间应当返回它的响应
如果设置了可选标志,标签应当等到VCD发送的帧结束标识再返回响应。
块的序列号范围是0x00到0xFF。

3.7.1 命令格式

这里写图片描述

3.7.2 命令响应

这里写图片描述

3.8 选择命令(Select)【命令码:0x25】

当标签接收到选择命令时,如果UID等于标签的UID,那么该标签就如选择状态(selected state)并发送一个响应;如果UID不等于标签UID时,标签返回准备状态(ready state)并不予响应。
选择命令总是执行在寻址模式(寻址标志为1,选择标识为0)

3.8.1 命令格式

这里写图片描述

3.8.2 命令响应

这里写图片描述

3.9 重置到准备(Reset to ready)【命令码:0x26】

当标签VICC接收到重置到准备命令时,标签应当返回到准备状态(Ready state)

3.9.1 命令格式

这里写图片描述

3.9.2 命令响应

这里写图片描述

3.10 写AFI命令(write AFI)【命令码:0x27】

当接收到写AFI命令时,标签应当将AFI的值写入到标签的内存中。
如果可选标志没有设置,当完成写AFI操作时,标签应当在规定的时间内返回响应。
如果设置了可选标志,标签应当等待帧结束标识才返回它的响应。

3.10.1 命令格式

这里写图片描述

3.10.1 命令响应

这里写图片描述

3.11 锁AFI命令(Lock AFI)【命令码:0x28】

当接收到锁AFI命令时,标签应当永久的锁定AFI值到它的内存。
如果没有设置可选标志,当完成锁AFI操作时,标签应当在规定的时间返回它的响应。
如果设置了可选标志,标签应当等到帧结束标识并且返回它的响应。

3.11.1 命令格式

这里写图片描述

3.11.2 命令响应

这里写图片描述

3.12 写DSFID命令(Write DSFID command)【命令码:0x29】

当标签接收到写DSFID命令时,标签应当将DSFID的值写入到它的内存。
如果没有设置可选标志,当完成写DSFID操作时,标签应当在规定的时间内返回它的响应。
如果设置了可选标志,标签应当等到帧结束标识并随后返回他的响应。

3.12.1 命令格式

这里写图片描述

3.12.2 命令响应

这里写图片描述

3.13 锁DSFID命令(Lock DSFID)【命令码:0x2A】

当标签接收到锁DSFID命令时,标签应当将DSFID的值永久锁定到内存。
如果可选标志没有被设置,当完成锁DSFID操作时,标签应当在规定时间返回它的响应。
如果设置了可选标志,那么标签应当等到帧结束标志后才返回它的响应。

3.13.1 命令格式

这里写图片描述

3.13.2 命令响应

这里写图片描述

这里写图片描述

3.14 获取标签系统信息命令(Get system information)【命令码:0x2B】

该命令用于获取标签系统的信息,包含各种属性。

3.14.1 命令格式

这里写图片描述
Get system info的定义如下表:
这里写图片描述

3.14.2 响应命令

这里写图片描述

3.15 获取多块的安全状态命令(Get multiple block security status)【命令码:0x2C】

当标签接收到获取多块安全状态命令时,标签应当返回块的安全状态。
块的序号从0x00到0xFF。

3.15.1 命令格式

这里写图片描述

3.15.2 命令响应

这里写图片描述

3.16 自定义命令

3.16.1 命令格式

这里写图片描述

3.16.2 命令响应

这里写图片描述

四、防碰撞

ISO15693的防碰撞有两种方式,一种是单时隙,一种是十六时隙。其中单时隙是一种面向比特位的的算法,它和ISO14443A的防碰撞算法类似,而十六时隙算法则是基于时隙,类似于ISO14443B的防碰撞算法。以后有时间介绍。待续……

  • 14
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值