实验三 防冲撞协议原理实验
一、实验目的
通过本实验使学生了解 RFID 的防冲撞原理的实现方法,掌握时间槽、VICC 四种状态的含义以及状态的切换规律。
二、实验设备
TI TRF7960 读卡器一个、usb 连接线一条、电脑一台、HF RFID 实验 上位机软件、ISO15693标签若干张
三、实验知识预备及原理
1、VICC 状态
一个 VICC 可能处于以下 4 种状态中的一种:
l 断电
l 准备
l 静默
l 选择
这些状态间的转换在图 6.22中有规定。断电、准备和安静状态的支持是强制性的。选择状态的支持是可选的。
(1)断电状态
当VICC不能被VCD激活的时候,它处于断电状态。
(2)准备状态
当 VICC 被 VCD 激活的时候,它处于准备状态。选择标志没有置位时,它将处理任何请求。
(3)安静状态
当 VICC 处于安静状态,目录标志没有设置且寻址标志已设置情况下,VICC 将处理任何请求。
(4)选择状态
只有处于选择状态的 VICC 才会处理选择标志已设置的请求。
注 1:状态转换方法的意图是,某一时间只有一个 VICC 应处于选择状态。
注 2:VICC 状态转换图只图示出有效的转换。在所有的其它情况下,当前的 VICC 状态保持不变。当 VICC
不能处理一 个 VCD 请求(例如 CRC 错误,等等) ,它将仍然处于当前状态。
注 3:虚线表示的选择状态图示出 VICC 支持的选择状态是可选的。
2、上位机软件防碰撞算法实现流程
上位机界面打开默认设置:支持 ISO15693,高速率,数据编码 1/4 操作,寄存器会自动设置一些参数:
1).在询卡请求时检测标志位(B5)如果设置了,slots=1,如果没有设置,slots=16 同时使能不反应中断。
2). 初始化 mask length=0;mask value=0
3).初始化 slot 数指针为 0
4). 发送询卡请求命令带上 mask length,mask value 值
5). 等待发送完成中断
6).等待下一个中断,中断可能是以下情况:
a.接受完成
b.碰撞
c.没有反应
检测 IRQ 状态寄存器中断类型
如果是接收完成中断,就意味着没有错误/碰撞在 FIFO 接收 UID 过程中,从 FIFO中可以读出完整的 UID
如果是碰撞中断,在 slot 指针里记录碰撞位置,指针数值加 1
如果是标签没反应中断,忽略。
7). 复位 FIFO
8). 如果 slots 数是 16,发送 EOF;如果 slots 数是 1,退出。
9). 对以所有的 16 个 slots 重复步骤 5 和 6,在 16 个 slots 结束时,屏蔽不反应中断。
10). 检查 slot 指针数值,如果不为 0,计算新的 mask;如果为 0,退出。
a.增加 mask 长度 4 bits
b.new mask=slot 数(碰撞位置 slot 数)+old mask
11).返回到第 4 步骤(new mask value 和 length)
12) slot 指针加 1
13) 返回到第 10 步骤
四、实验过程及分析
1、确保 TI TRF7960RFID 与电脑连接正常,打开虚拟机软件,右击【我的电脑】---->【属性】---->【硬件】---->【设备管理器】,查看连接的端口,如下图:
2、将15693卡放在感应区,打开上位机软件无线龙 RFID,标签类型选择 15693,在端口处输入COM3,点击【选择端口】,显示命令:
08:29:23.781 --> 0108000304FF0000
08:29:23.953 <-- 0108000304FF0000
TRF7960 EVM
08:29:23.953 **** COM Port found! ****
如下图:
3、选择【询卡】命令,点击【设置协议】---->【执行】,窗口输出命令如下:
08:38:18.278 --> 010C00030410002101000000
08:38:18.278 \.COM3
08:38:18.590 <-- 010C00030410002101000000
Register write request.
08:38:18.590 --> 0109000304F0000000
08:38:18.715 <-- 0109000304F0000000
08:38:18.715 --> 0109000304F1FF0000
08:38:18.840 <-- 0109000304F1FF0000
08:38:27.996 --> 010B000304140401000000
08:38:28.200 <-- 010B000304140401000000
ISO 15693 Inventory request.
[,40]
[,40]
[,40]
[,40]
[,40]
[F58E8E75000104E0,66]
[,40]
[,40]
[,40]
[,40]
[,40]
[,40]
[,40]
[,40]
[,40]
[,40]
4、保持等待[Stay quiet(0x02)]
当接受到 Stay quiet 命令时,芯片将进入 quiet 状态,而且不会返回响应。对于 Stay quiet 命令是没有响应的。
操作:
(a)选择保持等待命令
(b)在 UID 下拉框中选择标签,如果只有一个标签默认选择
(c)选择执行命令
结果如下:
08:40:04.437 --> 010A0003041800020000
08:40:04.656 <-- 010A0003041800020000
Request mode.
[]
分析:
5、选中命令[Select(0x25)]
当收到 Select 命令,如果 UID 等于芯片的 UID,则进入 selected 状态,并返回响应。如果
UID 不相等,芯片返回 Ready 状态,不发出响应。Select 命令只能在 Addressed 模式下执行。
操作:
(a)选择保持等待命令
(b)在标签标志位中选择 Addressed 命令
(c)在 UID 下拉框中选择标签,如果只有一个标签默认选择
(d)选择执行命令
结果如下:
08:45:40.661 --> 0112000304182025F58E8E75000104E00000
08:45:40.802 <-- 0112000304182025F58E8E75000104E00000
Request mode.
[00]
分析:
6、复位到准备状态位[Reset to ready(0x26)] 收到 Reset to ready 命令,芯片将返回到 Ready
状态。
操作:
(a)选择复位到准备状态命令
(b)在标签标志位中选择高数据率命令(一般可以不选择)
(c)在 UID 下拉框中选择标签,如果只有一个标签默认选择
(d)选择执行命令
结果如下:
08:50:03.470 --> 010A0003041800260000
08:50:03.626 <-- 010A0003041800260000
Request mode.
[00]
分析:
7、单槽模式读卡(非防冲撞模式)
操作:
a) 在标签标志位窗口中 选择“单槽模式”
b) 选择执行命令。
(当读卡器上方只有一张标签时,可正常读卡。但是当放置多张标签时,则会出现标签冲撞情况,造成无法正常读取卡)实验时放两张ISO 15693的卡在感应区,再进行单槽模式操作,结果如下图,UID处无法显示卡号,若不选择单槽模式,则可以显示卡号。
08:53:28.409 --> 010B000304142401000000
08:53:28.566 <-- 010B000304142401000000
ISO 15693 Inventory request.
[z{00},76]