防冲撞协议原理实验报告

实验三  防冲撞协议原理实验

一、实验目的

通过本实验使学生了解 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]

 

原文地址:https://www.cnblogs.com/jasmine-95/p/4972084.html