低频RFID阅读器设计课件_第1页
低频RFID阅读器设计课件_第2页
低频RFID阅读器设计课件_第3页
低频RFID阅读器设计课件_第4页
低频RFID阅读器设计课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 低频RFID由于频率较低,带宽有限,所以不适合传输大数据量以及数据写入。 因此低频RFID标签通常是以ID卡的形式出现,即在标签中固化一串ID号,阅读器仅可以阅读,不能写入和更改。 ID卡仅提供一个ID卡号,通常用来做身份识别,更多的功能需要依赖于阅读器。 阅读器读取ID号后进行比对后执行相关处理或者传入上位机或网络进行处理。 低频ID卡通常采用无源设计,将ID芯片和天线封装在一起,做成卡片或标签的样式。其结构如图4- 1所示。 常见的ID芯片有EM公司的EM4100及其兼容的TK4001系列、HID系列和摩托罗拉等几种。 目前市场上使用较多的为前两种,其读取方法也不尽相同: EM4100系

2、列ID卡芯片可用同一个公司配套的EM4095读卡芯片,方便读取其ID号。 HID系列卡有自己的加密协议和读取方法,并且不公开,所以EM4095读卡芯片无法读取其ID号,只能使用专用HID类读卡器。 因此本书中将不详细讲解此系列卡。 注意注意 本章后续章节,将以AVR单片机为核心,EM4095芯片为收发通道实现一个对EM4100系列芯片(及其兼容卡)的ID卡解码的低频RFID阅读器。 EM4100是EM公司生产的只读型非接触ID卡芯片,典型频率为125kHz,内部固化64个bit数据 一旦进入阅读器范围内,则受到阅读器天线发出的载波耦合后,将64个bit的数据不断发回阅读器。 EM4100内部6

3、4bit相关定义如图4- 2所示。 64个bit数据共分为五部分,其含义下所述: 同步头,共由9个1组成,用于识别数据开始传送。 版本信息和客户ID,共由D00-D13,8个bit组成,记录版本信息和客户ID号。 数据,共由D20-D93,32个bit组成,存储ID卡号。 校验位,P为每一行数据的偶校验,例如,P0为0行校验,即D00-D03四位比特的偶校验。 PC为每一列数据的偶校验,例如PC0为D00-D90 10个bit的偶校验。 停止位,S0为停止位,即单bit0。 对EM4100进行解码时,判断一帧完整数据的开始,需要判断同步头,因为数据中的行列校验会保证数据中不会连续出现9个1。

4、由于只要在阅读器范围内,EM4100会循环送出内部的64bit数据,并且最后一个停止位为数据0。 因此判断同步头的方法是当第一次读取数据时,遇到0至1的跳变开始计数,如果读到连续9个1,则为同步头,从同步头往后可顺序读取剩余的bit位。 EM4100内部的64bit数据采用时钟(典型频率为125kHz)64分频的速率进行发送,每位bit的传送时间为: (1s/125000)*64=512us 数据采用曼彻斯特码编码,即每个bit被分为两位传输,每两个曼彻斯特码宽度为512us。如表4- 1所示。 原码原码曼彻斯特码曼彻斯特码110001 EM4095是EM微电子公司生产的一款低频AM调制解调芯

5、片,常用作低频RFID阅读器的模拟前端。 EM4095是EM公司生产的一款CMOS芯片,与MCU接口简单,在RFID阅读器中可用于天线驱动和调制解调。 除此之外,还有其他特性如下所述: 内置的PLL锁相环可自适应天线谐振载波。 无需外部振荡器。 100到150kHz载波频率范围。 数据发送采用OOK(100%AM调幅)方式,使用桥路激励器。 数据发送通过调幅方式,可使用单芯片通过外部调节。 睡眠模式电流1uA。 兼容USB供电范围。 40到85度温度范围。 SO16封装。 EM4095共有16个引脚,其芯片引脚图如图4- 3所示。 EM4095芯片引脚定义如表4- 2所示。 管脚管脚名称名称描

6、述描述类型类型1 1VSSVSS电源地电源地地地2 2RDY/CLKRDY/CLK就绪标志和时钟输出,就绪标志和时钟输出,AMAM调幅驱动调幅驱动输出输出3 3ANT1ANT1天线驱动天线驱动输出输出4 4DVDDDVDD天线驱动正电源天线驱动正电源电源电源5 5DVSSDVSS天线驱动负电源天线驱动负电源地地6 6ANT2ANT2天线驱动天线驱动输出输出7 7VDDVDD正电源正电源电源电源8 8DEMOD_INDEMOD_IN天线探测电压天线探测电压模拟信号模拟信号9 9CDEC_OUTCDEC_OUTDCDC电容输出电容输出模拟信号模拟信号1010CDEC_INCDEC_INDCDC电容

7、输入电容输入模拟信号模拟信号1111AGNDAGND模拟地模拟地模拟信号模拟信号1212MODMOD天线高电平调制天线高电平调制上拉输入上拉输入1313DEMOD_OUTDEMOD_OUT数字解调数据输出数字解调数据输出输出输出1414SHDSHD高电平驱动电流进入休眠态高电平驱动电流进入休眠态上拉输入上拉输入1515FCAPFCAPPLLPLL滤波电容滤波电容模拟信号模拟信号1616DC2DC2DCDC去耦电容去耦电容模拟信号模拟信号 EM4095内部结构比较简单,原理框图如图4- 4所示。 1. SHD1. SHD EM4095的引脚SHD和MOD用来操作设备,SHD的功能如下所述: 当S

8、HD为高电平的时候,EM4095为睡眠模式,电流消耗最小。 在上电的时候,SHD输入必须是高电平,用来使能正确的初始化操作。 当SHD为低电平的时候,回路允许发射射频场,并且开始对天线上的振幅调制信号进行解调。 2. MOD 引脚MOD是用来对125KHz射频信号进行调制的,其功能如下所述: 在MOD引脚上施加高电平时,将把天线驱动阻塞,并关掉电磁场。 在MOD引脚上施加低电平,将使片上VCO进入自由运行模式,天线上将出现没有经过调制的125KHz的载波。 EM4095用作只读模式,引脚MOD没有使用,推荐将它连接至VSS。 3. 3. 锁相环 锁相环由环路滤波、采样器和比较模块等组成。 通过

9、使用外部电容分压,DEMOD_IN引脚上得到天线上的真实的高电压。 这个信号的相位和驱动天线驱动器的信号的相位进行比较。 所以锁相环可以将载波频率锁定在天线的谐振频率上。 根据天线种类的不同,系统的谐振频率可以在100kHz到150kHz之间的范围内。 当谐振频率在这一范围内的时候,它就会被锁相环锁定。 4. DEMOD_IN DEMOD_IN引脚做接收链路的输入信号。 接收模块解调的输入信号是天线上的电压信号。 DEMOD_IN输入信号的级别应该低于VDD-0.5V,高于VSS+0.5V。 通过外部电容分压可以调节输入信号的级别。 分压器增加的电容必须通过相对较小的谐振电容来补偿。 5. R

10、DY/CLK5. RDY/CLK RDY/CLKRDY/CLK这个信号为外部微处理器提供这个信号为外部微处理器提供ANT1ANT1上信上信号的号的同步时钟同步时钟以及以及EM4095EM4095内部状态内部状态的信息。的信息。 ANT1ANT1上的同步时钟表示上的同步时钟表示PLLPLL被锁定并且接收链路被锁定并且接收链路操作点被设置。操作点被设置。 其状态受到其状态受到SHDSHD和和MODMOD的影响,如下所述:的影响,如下所述: 5. RDY/CLK5. RDY/CLK 当当SHDSHD为高电平时,为高电平时,RDY/CLKRDY/CLK引脚被强制为引脚被强制为低低电平电平。 当当SHD

11、SHD上的电平由高转低时,上的电平由高转低时,PLLPLL为锁定状态,为锁定状态,接收链路工作。接收链路工作。 经过时间经过时间TsetTset后,后,PLLPLL被锁定,接收链路操作被锁定,接收链路操作点已经建立。点已经建立。 这时候,传送到这时候,传送到ANT1ANT1上的信号同时也上的信号同时也传送传送至至RDY/CLKRDY/CLK,提示微处理器可以开始观察,提示微处理器可以开始观察DEMOD_OUTDEMOD_OUT上的信号和于此同时的时钟信号。上的信号和于此同时的时钟信号。 5. RDY/CLK5. RDY/CLK 当当MODMOD为高电平时,为高电平时,ANTANT驱动器关闭,但

12、此时驱动器关闭,但此时RDY/CLKRDY/CLK引脚上的时钟信号仍然在引脚上的时钟信号仍然在继续继续。 当当SHDSHD引脚上的电平从高到低之后,经过时间引脚上的电平从高到低之后,经过时间TsetTset后,后,RDY/CLKRDY/CLK引脚上的信号被引脚上的信号被100k100k的下的下拉电阻拉低。拉电阻拉低。 这样做的原因是为了标签的这样做的原因是为了标签的AMAM调制低于调制低于100100情况下情况下RDY/CLKRDY/CLK的指示。的指示。 6. DVDD6. DVDD和和DVSSDVSS DVDDDVDD和和DVSSDVSS脚应该分别和脚应该分别和VDDVDD以及以及VSSV

13、SS连接。连接。 为了使通过管脚为了使通过管脚DVDDDVDD和和DVSSDVSS流过的驱动器电流造流过的驱动器电流造成的电压降不会引起成的电压降不会引起VDDVDD和和VSSVSS上的电压降,上的电压降, 在在DVSSDVSS和和DVDDDVDD脚之间应该加一个脚之间应该加一个100nF100nF的电容的电容,并使其尽量靠近芯片。并使其尽量靠近芯片。 这将防止由于天线驱动器引起的电源尖峰。对管这将防止由于天线驱动器引起的电源尖峰。对管脚脚VSSVSS和和VDDVDD进行隔离也是有用的。进行隔离也是有用的。 6. DVDD6. DVDD和和DVSSDVSS 所有和管脚所有和管脚DC2/AGND

14、/DMOD_INDC2/AGND/DMOD_IN相关的电容都应该相关的电容都应该连接到相同的连接到相同的VSSVSS线上。线上。 这条线应该直接和芯片上的管脚这条线应该直接和芯片上的管脚VSSVSS相连。相连。 该线不能再连接其他元件或者成为为该线不能再连接其他元件或者成为为DVSSDVSS供电的供电的线路的一部分。线路的一部分。 AGNDAGND管脚上的电容值可以从管脚上的电容值可以从220nF220nF上升到上升到1uF1uF。电。电容越大将越明显的减小接收噪声。容越大将越明显的减小接收噪声。 AGNDAGND的电压可以通过外部电容和内部的的电压可以通过外部电容和内部的2k2k的电的电阻进

15、行滤波。阻进行滤波。 7. ANT7. ANT EM4095EM4095不限制不限制ANTANT驱动器发出的电流值。驱动器发出的电流值。 这两个输出上的最大绝对值是这两个输出上的最大绝对值是300mA300mA。 对天线谐振回路的设计应该使最大的尖峰电流不超对天线谐振回路的设计应该使最大的尖峰电流不超过过250mA250mA。 如果天线的品质因数很高,这个值就可能超过,则如果天线的品质因数很高,这个值就可能超过,则必须通过必须通过串联电阻串联电阻加以限制。加以限制。 增加增加Cdc2Cdc2电容值,将增加接收带宽,进而增加斜坡电容值,将增加接收带宽,进而增加斜坡信号的接收增益。信号的接收增益。

16、 Cdc2Cdc2的推荐范围是的推荐范围是6.8nF6.8nF到到22nF22nF。 CdecCdec为为33nF33nF到到220nF220nF。 电容值越高,开始上升时间电容值越高,开始上升时间越长越长。 8. FCAP8. FCAP FCAPFCAP引脚上的引脚上的偏置电压偏置电压。 这个偏置电压补偿了外部天线驱动器引起的相位偏这个偏置电压补偿了外部天线驱动器引起的相位偏移。移。 EM4095EM4095管脚较少,结构简单,与管脚较少,结构简单,与MCUMCU的接口如图的接口如图4- 4- 5 5所示。所示。 EM4095EM4095通过跳线分别于通过跳线分别于ATmage16AATma

17、ge16A的相关引脚相的相关引脚相连。跳线如图连。跳线如图4- 6 4- 6 所示。所示。 ATmage16A的相关引脚如图4- 7所示。 分析电路图可知,EM4095的管脚与ATmega16A管脚的对应关系如表4- 3所示。 EM4095EM4095ATmega16lATmega16l管脚管脚名称名称管脚管脚名称名称2 2RDY/LCKRDY/LCK3 3PB7PB71212MODMOD4343PB3PB31313DEMOD_OUTDEMOD_OUT2 2PB6PB61414SHDSHD1 1PB5PB5 低频RFID阅读器程序,主要工作便是能够正确的读取标签的ID号码 一般分为三部分:初始

18、化程序、驱动程序和主程序。 初始化程序用于各种管脚和器件的初始化,以便能够正常进行解码。 基于模块化和移植的考虑,可将本例中GPIO设置子程序单独封装成为子函数gpio_config(),具体源码如下所示: 【描述【描述4.D.14.D.1】gpio_config( )gpio_config( ) /gpio配置 void gpio_config(void) /PD7、PC7和PD2管脚配置DDRD |= (1PD7);PORTD |= (1PD7);DDRC |= (1PC7);PORTC |= (1PC7);DDRD &= (1PD2); EM4095相关管脚设置子程序单独封装成为子函数E

19、M_config(),具体源码如下所示:【描述【描述4.D.14.D.1】EM_config( )EM_config( )/em4095配置void EM_config(void)/em4095相关管脚配置DDRB |= EM_SHD | EM_MOD;DDRB &= EM_DM_OUT;EM_PORT |= EM_SHD ;/定时器1配置,实现精确定时TCCR1B &=(1CS10)|(1CS12);TCCR1B |=(1CS11);/TCNT1=600;OCR1A =64600;TCCR1A &=(1WGM11)|(1WGM10);TCCR1B &=(1WGM13);TCCR1B |=(1

20、WGM12);TIMSK |=(1OCIE1A);SREG |= (1 7); 串口设置子程序单独封装成为子函数串口设置子程序单独封装成为子函数uart_configuart_config(),(),具体源码如具体源码如下所示:下所示:【描述【描述4.D.14.D.1】uart_config( )uart_config( )/串口设置串口设置void uart_config(void)void uart_config(void) /串口相关寄存器配置串口相关寄存器配置UCSRA |=(1U2X);UCSRA |=(1U2X);UCSRB |=(1RXCIE); UCSRB |=(1RXCIE)

21、; UCSRC |=(1URSEL)|(1UCSZ1)|(1UCSZ0);UCSRC |=(1URSEL)|(1UCSZ1)|(1UCSZ0);UCSRC &=(1UMSEL)|(1UPM1)|(1UPM0)|(1USBS);UCSRC &=(1UMSEL)|(1UPM1)|(1UPM0)|(1USBS);UBRRH &=(1URSEL);UBRRH &=(1URSEL);/波特率波特率115200115200UBRRH =0;UBRRH =0;UBRRL =7;UBRRL =7;UCSRB |=(1RXEN)|(1TXEN);UCSRB |=(1RXEN)|(1TXEN); 驱动程序是驱动程

22、序是EM4095EM4095能够正确解码的相关演示程序、解码能够正确解码的相关演示程序、解码子程序等。子程序等。 因本例中曼彻斯特码有严格的码元间隙,所以需要因本例中曼彻斯特码有严格的码元间隙,所以需要512us512us的延时子函数,该函数单独封装成为子函数的延时子函数,该函数单独封装成为子函数delay_512usdelay_512us(),(),具体源码如下所示:具体源码如下所示: 【描述【描述4.D.14.D.1】delay_512us( )delay_512us( ) /512us/512us延时子函数延时子函数 void delay_512us(int x)void delay_5

23、12us(int x) /使用定时器实现定时使用定时器实现定时TIFR|=(1OCF1A);TIFR|=(1OCF1A);TCNT1=0;TCNT1=0;while(TCNT1x);while(TCNT1505&TCNT1505&TCNT1520) /判断随后是否连续判断随后是否连续8 8个个1 1for(i=0;i8;i+)for(i=0;i8;i+) /以以512us512us四分之三的位置判断逻辑电平四分之三的位置判断逻辑电平delay_512us(380);delay_512us(380);c_l=PINB&EM_DM_OUT;c_l=PINB&EM_DM_OUT;if(c_l!=0)

24、if(c_l!=0) codei=1;codei=1; elseelse codei=0;codei=0;code_st=0;code_st=0; while(PINB&EM_DM_OUT);while(PINB&EM_DM_OUT); elseelsecode_st=0; code_st=0; /返回判断同步头情况返回判断同步头情况if(code_st=1)if(code_st=1)return 1;return 1;elseelsereturn 0;return 0; 本例中曼彻斯特解码功能单独封装成为子函数本例中曼彻斯特解码功能单独封装成为子函数read_idread_id(),具体源码

25、如下(),具体源码如下所示:所示:【描述【描述4.D.14.D.1】read_id( )read_id( )/曼彻斯特解码曼彻斯特解码char read_id(void)char read_id(void) char st=0;char st=0;char i=0;char i=0;char c_L;char c_L;EM_PORT &= EM_SHD ;EM_PORT &= EM_SHD ;st=read_id_start();st=read_id_start();/如果读到同步头如果读到同步头if(st=1)if(st=1) /顺序读取剩余顺序读取剩余bitbitfor(i=8;i63;i

26、+)for(i=8;i63;i+) /以以512us512us四分之三的位置判断逻辑电平四分之三的位置判断逻辑电平delay_512us(384);delay_512us(384);if(PINB&EM_DM_OUT)if(PINB&EM_DM_OUT) codei=1;codei=1;while(PINB&EM_DM_OUT);while(PINB&EM_DM_OUT); elseelse codei=0;codei=0;while(!(PINB&EM_DM_OUT);while(!(PINB&EM_DM_OUT); return 1;return 1; elseelsereturn 0;r

27、eturn 0; 本例中曼彻斯特解码功能单独封装成为子函数本例中曼彻斯特解码功能单独封装成为子函数read_idread_id(),具体源(),具体源码如下所示:码如下所示:【描述【描述4.D.14.D.1】read_id( )read_id( )/曼彻斯特解码曼彻斯特解码char read_id(void)char read_id(void) char st=0;char st=0;char i=0;char i=0;char c_L;char c_L;EM_PORT &= EM_SHD ;EM_PORT &= EM_SHD ;st=read_id_start();st=read_id_st

28、art();/如果读到同步头如果读到同步头if(st=1)if(st=1) /顺序读取剩余顺序读取剩余bitbitfor(i=8;i63;i+)for(i=8;i63;i+) /以以512us512us四分之三的位置判断逻辑电平四分之三的位置判断逻辑电平delay_512us(384);delay_512us(384);if(PINB&EM_DM_OUT)if(PINB&EM_DM_OUT) codei=1;codei=1;while(PINB&EM_DM_OUT);while(PINB&EM_DM_OUT); elseelse codei=0;codei=0;while(!(PINB&EM_

29、DM_OUT);while(!(PINB&EM_DM_OUT); return 1;return 1; elseelsereturn 0;return 0; 【描述【描述4.D.14.D.1】 main.cmain.c/ /* * *宏定义宏定义 * * */ /开启比特定义开启比特定义#define ENABLE_BIT_DEFINITIONS 1 #define ENABLE_BIT_DEFINITIONS 1 #define EM_SHD (1PB5)#define EM_SHD (1PB5)#define EM_DM_OUT (1PB6)#define EM_DM_OUT (1PB6)#define EM_MOD (1PB3)#define EM_MOD (1PB3)#define EM_PORT PORTB#define EM_PORT PORTBchar code64=0;char code64=0;char char * *p;p;/ /* * * 头文件头文件 * * */ /#include #include / /* * * * * * * * * * * * * * * * * * * * * 子函数子函数 *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论