第一章,
读写器、电子标签的组成及各部分功能。
读写器
天线
产生电磁场,与电子标签通过电磁波交换数据信息。
射频接口
调制和发送到天线的信号,并接收和调解来自天线的信号。
控制单元
完成与上位机及电子标签之间的通行数据的处理。
应用接口
读写器与中间件或应用系统软件交换数据的通道。
电子标签
(1)天线
负责与读写器通讯,无源标签还通过天线获得能量。
(2)射频前端
射频前端对接收或发送的数据进行放大整形、调制解调,无源标
签还对天线的感应电压进行整流、滤波、稳压获得工作电源。
(3)控制与存储电路
存储部分存储电子标签数据,各种类型的非易失性存储器。
控制部分分为使用CPU的电子标签和不使用CPU的电子标签。
不使用CPU的标签使用专用集成电路(Application SpecificIntegrated Circuit,ASIC)执行地址和安全逻辑,通过状态机对所有的过程和状态进行控制。 使用CPU的标签通过运行片内操作系统(Chip Operating
System,COS)对相关读写过程和状态进行控制。
RFID系统按照工作频率、耦合方式、读写距离分类,
工作频率
(1)低频(Low Frequency,LF)。30-300kHz
(2)高频(High Frequency,HF)。为3-30MHz
(3)微波。300MHz-3000GHz,300MHz-3GHz也称超高频(Ultra High Frequency,UHF)。
耦合方式
电感耦合方式
反向散射耦合方式
读写距离
(1)密耦合系统。典型工作距离为1cm。
(2)近耦合系统。典型工作距离为10cm。
(3)疏耦合系统。典型工作距离为1m。
(4)远距离系统。典型工作距离为10m。
RFID通信发起方式,及其相应通信过程,
(1)RTF模式
RTF模式即“读写器先讲(Reader Talk First,RTF)”,通信的发起方是读写器。读写器每间隔一段时间就向其天线磁场中发送轮询命令,进入天线场的电子标签收到读写器的轮询命令后回送应答,读写器收到标签的应答后,开启后续的通信过程。
(2)TTF模式
TTF模式则是采用“标签先讲(Tag Talk First,TTF)”,即通信的发起方是电子标签。符合TTF协议的电子标签进入读写器天线场后,主动发送自身信息,而无需等待读写器发送命令。TTF通信协议简单,多用在读写器与只读电子标签的通信中。
(1)全双工通信
在读写器与电子标签的整个通信期间,读写器的天线磁场都是打开的,读写器与电子标签不同时向对方发送数据。
(2)半双工通信
在读写器与电子标签的整个通信期间,读写器的天线磁场并不都是打开的,从电子标签到读写器的信息传输期间,读写器的天线磁场是关闭的。比如无源半双工系统的工作过程如下。
①读写器先发射射频能量,给电子标签的储能元件充电。
②读写器停止发射能量,标签利用储能向读写器发送信号。
③能量传输与信号传输交叉进行,一个完整的读出周期由充电和读出两个阶段构成。
第二章。
RFID有哪几种调制类型。
1.幅移键控(Amplitude Shift Keying,ASK)
2. 频移键控(Frequency Shift Keying,FSK)幅度不变,载波的频率随调制信号的变化而变化
3. 相移键控(Phase Shift Key,PSK)幅度不变,载波的相位随调制信号的变化而变化
(1)按调制信号形式可分为模拟调制和数字调制。
(2)按被调信号种类可分为脉冲调制、正弦波调制和光波调制等
(3)按传输特性可分为线性调制和非线性调制。线性调制不改变信号原始频谱结构,而非线性调制则改变了信号原始频谱结构。
曼切斯特编码、差动双向编码方式、波形,
曼彻斯特编码
在半个位周期时的下降沿表示二进制“1”,正跳变表示二进制“0”。
差动双向编码
在两位相邻数据的交界处中有跳变,根中间是否有跳变来区分0和1,有是0,没有是1。
通信数据完整性(奇偶校验、CRC校验),
奇偶校验
循环冗余码校验法
(Cyclic Redundancy Check,CRC)利用除法及其余数来进行错误检测。
1.除数
一个由二进制位串组成的代码,称为生成多项式,应满足:
(1)生成多项式的最高位和最低位必须为1;
(2)当被传送信息任何一位发生错误时,被生成多项式做除后应该使余数不为0;
(3)不同位发生错误时,应该使余数不同;
(4)对余数继续做除,应使余数循环。一般根据余数的位数命名不同的CRC校验,命名形式为CRC-R,比如CRC-8、CRC-16等,除数比余数多一位。
2.被除数
由待发送数据右侧补充R个0得到。
3.除法
除式中的竖向运算不使用减法,而是使用模2加,即异或运算
4.余数
宽度不足R位,要在左侧补0凑足R位。例:待发送数据10110
非对称加密算法机密信息交换过程。
动态时隙ALOHA 算法防冲突过程,
动态帧时隙ALOHA算法中一个帧内的时隙数目随着区域内标签数目动态改变,或增加时隙数以减少帧中的碰撞数目。
步骤如下:
(1)进入识别状态,开始识别命令中包含了初始的时隙数N。
(2)由电子标签随机选择一个时隙,同时将自己的时隙计数器复位为1。
(3)当电子标签随机选择的时隙数与时隙计数器对应时,标签向读写器发送数据;若不相等,标签将保留自己的时隙数并等待下一个命令。
(4)当读写器检测到的时隙数量等于命令中规定的循环长度N 时,本次循环结束,读写器转入步骤(2),开始新的循环。该算法每帧的时隙个数N都是动态产生的,解决了帧时隙ALOHA算法中的时隙浪费的问题,适应标签数量动态变化的情形。
二进制树型搜索算法。
二进制树型搜索算法的实现步骤如下:
(1)读写器广播发送最大序列号查询条件Q,其作用范围内的标签在同一时刻传输它们的序列号至读写器。
(2)读写器对收到的标签进行响应,如果出现不一致的现象(即有的序列号该位为0,而有的序列号该位为1),则可判断有碰撞。
(3)确定有碰撞后,把有不一致位的数最高位置0再输出查询条件Q,依次排除序列号大于Q的标签。
(4)识别出序列号最小的标签后,对其进行数据操作,然后使其进入“无声”状态,则对读写器发送的查询命令不进行响应。
(5)重复步骤1,选出序列号倒数第二的标签。
(6)多次循环完后完成所有标签的识别。
第四章。
串联谐振回路、并联谐振回路主要参数的计算,
串联谐振
角频率: L:电感;C:电容
特性阻抗:
品质因数:
通频带:
并联谐振
角频率:同上
特性阻抗:
品质因数:同上
通频带:同上
串联谐振回路、并联谐振回路中Q值、选择性和通频带之间的关系
第八章。
RFID标准分类(图8.1)
ISO/IEC14443 TypeA协议工作状态转换,
(1)POWER OFF。断电状态,PICC未获取满足芯片工作所需的能量。
(2)IDLE。休闲状态,PICC进入磁场得电复位,等待来自读写器的请求命令。
(3)READY。就绪状态,PICC收到REQA或WAKE-UP命令,此状态下PICC可以执行防冲突循环。
(4)ACTIVE。激活状态,PICC的UID被PCD选中。
(5)HALT。停止状态,PICC收到HALT命令或其他不在ISO/IEC14443Type A规定范围内的命令,此状态下PICC仅接受WAKE-UP命令。
ISO15693防冲突(249面例子)。
EPC标准体系框架,各自功能。
(1)EPC物理对象交换
规范用户与带有EPC编码的物理对象进行交互。对物品所使用标签进行标识。
(2)EPC基础设施
EPCglobal体系框架定义了用来收集和记录EPC数据的主要设施部件接口标准。
(3)EPC数据交换
为用户提供了一种点对点共享EPC数据的方法和用户访问EPCglobal核心业务和其他相关共享业务的机会。
EPC编码类型。
EPC代码是由一个版本号加上另外三段数据,依次为域名管理(厂商) 、对象分类(产品) 、序列号
EPC信息网络系统组成,各部分的作用、功能,
(1)EPC中间件。
EPC中间件被称为Savant,是具有一系列特定属性的“程序模块”或“服务”,并被用户集成以满足他们的特定需求。
(2)对象名解析服务ONS。
类似于域名解析服务DNS,ONS则为Savant系统指明了存储产品相关信息的服务器。ONS设计与架构都以Internet域名解析服务为基础。
(3)XML与PML
EPC系统使用XML的为物理实体的远程监控和环境监控提供一种简单、通用的描述语言。在EPC系统中,XML用于描述产品、过程和环境信息,为软件开发、数据存储和分析服务。
(4)EPC信息服务EPCIS
EPCIS(Electronic Products Code Information Service,EPC信息服务)是EPC系统的重要部分,利用标准的采集和共享信息方式,为EPC数据提供标准接口,可与已有的数据库、应用程序及信息系统相连接,供各行业和组织灵活应用。
第十章,
RFID软件分类及各类软件作用、功能,
1.RFID前端软件
直接与电子标签交互的软件,包括读写器中的软件、设备驱动软件、接口软件等。前端软件的主要功能如下。
(1)读/写功能。从电子标签中读取和写入数据。
(2)防冲突功能。
(3)安全功能。采用加密、认证等措施确保电子标签和读写器双向数据通信的安全。
(4)检错纠错功能。保障数据完整性的措施。
2.中间件软件
3.后端软件
后端软件处理通过中间件上传的前端软件采集的数据信息,实现对信息的管理和系统的实际应用。主要功能如下。
(1)电子标签信息管理。电子标签的序列号存入数据库中,并完成数据库信息的实时更新。
(2)数据分析和储存。对整个系统内的数据进行统计分析,生成相关报表,对分析得到的结果进行存储、管理和备份。
(3)实现与前端软件的通信。通过中间件将应用系统软件的命令传送到前端的读写器。
(4)其他功能。比如应用系统参数设置以及系统用户信息和权限的管理,系统运行日志、报警日志的生成与管理等。
4.其他软件
为RFID系统服务的外围软件或辅助软件等。
(1)开发平台。开发RFID前端软件、中间件和后端软件的软件。
(2)测试软件。用来对系统的整体或部分功能进行测试。
(3)评估软件。用来对整个系统的硬件和软件性能进行评估,有时和测试软件合二为一,称为测试评估软件。
(4)演示软件。用来向目标用户演示模块或系统功能的软件。比如读写器的开发厂家通常配有该读写器的演示软件,可以展示读写器的读写功能、通信协议等。
(5)仿真软件。用计算机软件模拟RFID系统中的组成模块或工作环境要素,通过模拟实验来研究已经存在的或正在设计中的RFID系统。
RFID中间件特征
(1)独立于架构。
(2)数据流。具有数据的收集、过滤、整合与传递等特性,以便将正确的对象信息传递到后端的应用系统。
(3)过程流。具有数据排序与管理的能力。
(4)支持多编码标准。
(5)状态监控。监控连接到系统中的RFID读写器的状态等功能并可以自动向应用系统汇报。
(6)安全功能。在RFID中间件中配置安全模块,可以实现网络防火墙的功能,保障数据的安全性和完整性。
RFID中间件层次结构。
1.按网络框架分层
可以分为边缘层与业务集成层两个逻辑层次。
2.按数据流分层
自底向上依次为数据采集层、事件处理层和信息发布层
RFID测试分类
RFID测试的分类
(1)RFID技术测试
测试RFID产品的功能、性能、可靠性等,包括硬件和软件测试,具体又分为读写器、电子标签、中间件和应用系统软件的测试。
(2)RFID应用测试
RFID应用测试主要是在具体应用环境中所进行的测试。通过测试,检验和校核应用方案的可行性,降低应用项目的实施风险。
补充: STM32单片机串口初始化函数Uart2Init(),参考“实验3_STM32串口控制LED”例程。
/*********************************************
** 功能:串口初始化函数
** 输入:无
** 输出:无
*********************************************/
void Uart2Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
USART_ClockInitTypeDef USART_ClockInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
/* Configure USART2 Tx (PA2) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART2 Rx (PA3) as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
USART_Init(USART2, &USART_InitStructure);
// USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;
USART_ClockInitStructure.USART_Clock = USART_Clock_Enable;
USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;
USART_ClockInit(USART2, &USART_ClockInitStructure);
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
/* Enable USART2 */
USART_Cmd(USART2, ENABLE);
}