曼彻斯特解码原则 125K EM4100系列RFID卡解码源程序分析资料
曼彻斯特解码程序
曼彻斯特解码1、变量定义 (2)2、Manchest初始化 (2)3、Manchest解码信号翻转 (3)4、过滤错误的卡号 (4)5、获取正确的卡号 (5)6、Manchest获取卡号数据 (6)7、通过中断采样获取刷卡数据 (9)1、变量定义#define TH1_370US_H 0XFE //晶振11.0592MHZ,12T模式#define TL1_370US_L 0XAB#define SIGNAL_FLIP_TIME 10 //每隔100ms翻转一次读卡信号#define REPEAT_TIME 5 //500ms后重复读卡#define CLEAR_CARD_TIME 20 //2S后清除卡号数据#define MANCHEST_TIME 5sbit PULSE = P3^2;sbit RFEN = P3^5; //曼彻斯特解码脉冲信号sbit MANCHEST0= P3^2; //wiegand0sbit MANCHEST1= P3^3; //wiegand1uchar code CheckingTab[32]={ //接收到10组卡号的偶校验0X00,0X01,0X01,0X00,0X01,0X00,0X00,0X01, //这里数值是低五位的偶校验值0X01,0X00,0X00,0X01,0X00,0X01,0X01,0X00,0X01,0X00,0X00,0X01,0X00,0X01,0X01,0X00,0X00,0X01,0X01,0X00,0X01,0X00,0X00,0X01};uchar WGCardBuf[5]; //卡号uchar CopyCardBuf[5]; //备份卡号uchar ManchestBuf[11]; //暂存接收到的11组数据uchar idata g_ucManchestTime = MANCHEST_TIME; //uchar idata g_ucDWithCardTime= 0; //隔500ms处理该卡号uchar idata g_ucPreambleFlag = 0;uchar idata g_ucERAgainTimer = 0; //每隔100ms翻转一次RFENuchar idata g_ucStoreGroupCnt= 0; //接收到几组数据,这里为11组才可能正确uchar idata g_ucEGroupBitCnt = 0; //每组数据有5个为,5=4位卡号+1位偶校验uchar idata g_ucPreambleCount= 0; //9位为1的引导码uchar idata g_ucRemvoeCardTime=0; //隔多久清除以前的卡号数据,这里为3s2、Manchest初始化/******************************************************************** 函数原型:ManchestInit功能:曼彻斯特解码变量初始化输入:无输出:无说明:无*-------------------------------------------------------------------- *修改时间| 修改者| 备注*-------------------------------------------------------------------- *2012-02-14 Oscar First********************************************************************/ void ManchestInit(void) //初始化读卡参数{RFEN = 1;g_ucPreambleFlag = 0;g_ucStoreGroupCnt = 0;g_ucEGroupBitCnt = 5;g_ucPreambleCount = 9;g_ucERAgainTimer = SIGNAL_FLIP_TIME;}3、Manchest解码信号翻转/******************************************************************** 函数原型:ProcessManchestSignal功能:manchest解码的翻转信号输入:无输出:无说明:无*-------------------------------------------------------------------- *修改时间| 修改者| 备注*-------------------------------------------------------------------- *2012-02-14 Oscar First********************************************************************/ void ProcessManchestSignal(void){if((g_ucDWithCardTime!=0)&&(--g_ucDWithCardTime==0)){}if((g_ucRemvoeCardTime!=0)&&(--g_ucRemvoeCardTime==0)){CopyCardBuf[0] = 0; //清除卡号缓冲区CopyCardBuf[1] = 0;CopyCardBuf[2] = 0;CopyCardBuf[3] = 0;CopyCardBuf[4] = 0;}RFEN = ~RFEN;g_ucPreambleFlag = 0;g_ucPreambleCount= 9;if(RFEN){EX0 = 1;EX1 = 1;}else{EX0 = 0;EX1 = 0;}}4、过滤错误的卡号/******************************************************************** 函数原型:CalibrationCardData功能:一张卡号,如果出现全部相同的数字或者该卡号只有两种数据,则认为是错误的卡号。
一种RFID的曼彻斯特解码技术
一种RFID的曼彻斯特解码技术康文广;王辉映【摘要】对射频芯片输出的数据进行解码是射频卡应用系统中的关键问题.通过分析EM4095的工作原理和EM4100的编码机制,得出射频芯片输出64位曼彻斯特码的特点,并给出了软件实现算法.利用中断捕获脉宽的方法进行解码,不但硬件接口简单,而且解码速度快,准确率高,同时也为曼彻斯特解码算法提供了一种新的思路.【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2010(000)012【总页数】3页(P20-22)【关键词】RFID;曼彻斯特码;解码【作者】康文广;王辉映【作者单位】珠海优特电力科技股份有限公司,珠海,519070;珠海优特电力科技股份有限公司,珠海,519070【正文语种】中文【中图分类】TP311射频识别(Radio Frequency Identification,RFID)应用是目前发展最为迅速、潜力最大的新兴技术之一,其利用射频信号和空间耦合(电磁耦合或电磁传播)传输特性,实现对被识别物体的自动识别。
RFID技术正在逐步应用于物流管理、产品生产线、零售业、安保等诸多领域[1]。
本文以EM 4095和EM 4100芯片为例阐述曼彻斯特解码方法。
1 RFID读卡系统的构成如图1所示,系统由读卡器和非接触式智能卡(下文简称RFID卡)组成。
读卡器主要由微控制器、芯片EM 4095和天线组成;智能卡由芯片EM 4100和天线组成。
图1 RFID读卡系统的构成读卡器不断向周围发射固定频率为125 kHz的电磁波,RFID卡内有一个LC串联谐振电路,其工作频率与EM 4095相对应,也为125 kH z,这样当RFID卡进入该磁场空间时,在电磁激励下LC谐振电路产生共振。
通过共振为RFID卡(EM 4100)提供了能量,于是RFID卡通过电磁耦合将自身的ID信息调制后按顺序发送到EM 4095,芯片EM 4095获得此信息后通过解调从引脚DEMOD_OUT输出曼彻斯特码到微控制器。
125kHz低频RFID读写器设计
125kHz低频RFID读写器设计作者:张建文王怀平来源:《软件工程师》2014年第04期摘要:本文介绍一种基于基站芯片EM4095和AT89S52单片机的低频RFID读写器设计方案。
论文首先对读写器硬件功能框图进行说明,并给出了读写器硬件接口电路。
在分析了EM4095解调、输出的曼彻斯特编码数据波形后,根据该曼彻斯特码编码特点,提出了利用计算曼彻斯特码的下降沿间隔的载波数的方法进行解码的思路,并给出了软件流程图,此解码方法提高了解码的速度和准确性,实验证明,读写器读卡稳定可靠,效果好。
关键词:射频识别;EM4095;曼彻斯特码;读写器中图分类号:TP334 文献标识码:A1 引言(Introduction)射频识别(Radio Frequency Identification,RFID)属无线电通信范畴,基本物理原理就是电磁场感应。
射频识别系统由两部分组成:一部分是识别对象(标签);另一部分是识别器(读写器)[1]。
读写器模块是由微控制器、射频基站芯片、线圈和一些外围阻容器件组成。
本文所设计的125kHz低频RFID读写器能够准确可靠的读取标签的内存信息,并送入计算机终端进行管理,实现非接触式门禁考勤、动物识别等系统的核心管理功能。
2 硬件电路设计(The hardware circuit design)125kHz读写器主要是由射频模块、控制模块,通信模块和电源模块等部分电路组成的,其硬件功能框图如图1所示。
我们选用的EM4095是EM公司设计生产的低频RFID读写器专用芯片,它集成的PLL系统能达到载波频率自适应天线的共振频率,而不需外接晶振,工作频率100kHz—150kHz。
EM4095与微控制器接口简单,由EM4095构成的读写器电路图如图2所示,芯片供电后,SHD应先为高电平,对芯片进行初始化,然后再接低电平,芯片即发射射频信号,解调模块将天线上AM信号中携带的数字信号取出,并由DEMOD_OUT端输出。
125k_RFID技术
e5551芯片写模式与EEPROM块0的PWD, AOR,STOP位的关系如下表所示:
PWD AOR 1 1 STOP 在Rest/POR后e5551芯片的工作 模式 0 防碰撞模式
1
0 0
0
1 0
0
0 0
口令模式
AOR模式 标准写和直接访问模式
4、e5551芯片的防碰撞技术
STOP命令 用于停止芯 片的调制, 使其进入休 眠状态,不 再向外发送 数据,直至 POR出现。
000 RF/8 001 RF/16 010 直接 RF/32 000 011 PSK1 RF/40 001 100 PSK2 RF/50 010 00 011 直接 101 RF/64 PSK3 RF/100 01 110 曼彻斯特 100 FSK1 111 RF/128 10 101 Biphase FSK2 FSK1a 11 110 保留 111 RF/2 FSK2a 00 01 RF/4 10 RF/8 11 保留
125KHz RFID技术
125KHz RFID系统采用 电感耦合 方式工 作,由于应答器成本低、非金属材料和水 对该频率的射频具有较低的吸收率,所以 125KHz RFID系统在动物识别、工业和民用 水表等领域获得广泛应用。
一、e5551应答器芯片
1、e5551芯片的性能和电路组成 (1)主要技术性能 e5551芯片是Atmel公司生产的非接触 式、无源、可读写、具有防碰撞能力的 RFID器件,中心工作频率为 125K 。具有 以下主要特性:
命令的构成
命令 命令码 后续位构成
标准写
口令模式
10
10
AOR唤醒模式 10 直接访问 停止STOP 10 11
锁存位L+32位数据位+3 位块地址号 32位口令+锁存位L+32位 数据位+ 3位块地址号 32位口令
物联网项目二125KHz物联网射频卡应用_门禁系统
1、EM4100芯片引脚设置
EM4100芯片只有4个引脚,引脚设置如图2-7所示。4个 引脚分别为电源VDD、电源地VSS、天线线圈连接端 COIL1、 COIL2。
2.3 125KHz射频卡门禁系统原理
射频卡门禁系统包括软件和硬件两部分,本项目设计的门 禁系统功能框图如图2-14所示。
RFID卡
STN 显示
电源及本地 数据备份
125KHZ RFID 阅读器
NXP LPC1114
有线或者 无线连接
PC 机 控制软件 和数据库
键盘控制
蜂鸣器, LED指示
电子锁控制
门 磁:用于检测门的安全/开关状态等。 电 源:整个系统的供电设备,分为普通和后备式(带蓄 电池的)两种。
6.传输部分 传输部分主要包含电源线和信号线。如门禁控制器、读 卡器、电控锁都需要供电;门禁控制器同读卡器、门磁 之间的信号线;等等。
2.1.2 门禁系统设计目标
通过RFID技术,验证电子钥匙(射频门禁卡)的合法性, 控制电子门锁的开启;对射频门禁卡信息进行管理;对 用户信息进行管理。同时记录出入信息作为考勤管理. 实 现自动,安全的射频门禁管理目标。
数据编码器
串行数据输出
2.2.3 EM4100编码描述
EM4100提供多种选项,定义编码类型和数据速率。编码数 据bit的发送速率可以是64,32或者16个载波周期;数据编 码方式可以是曼切斯特编码(Manchester),双相编码 (Biphase)或者相移键控(PSK)。
射频卡应用中的曼彻斯特码解码技术
66 万凹 方凹数凹据ci。s棚a口④④圆④圃
通信技术
Communl catl on S;善j瀑鞋eI.1nol091 es
根据以上的分析,解码过程如下: 首先,搜索含9个“l”的同步头。由图5可知,同步头 之前是上一帧数据的停止位,加上随后出现的9个1,就会形 成连续8个宽度为T的下降沿间隔,这时,我们可以认为已 经搜到同步头中的8个l,而第9个“l”只出现了一个“H” 电平,要等待与后续电平结合。
可咀椅删到连续8个亩度为T的下降沿间隔
由于信号发送
方EM4100与接收
方EM4095采用耦
合方式传输信息,
所以,实际在天线
上的调制信号如图3
所示,这样,在
图3发送方和接收方的幅度调制信号
EM4100的载波上用
高电流代表逻辑0,而在EM4095载波上用低电流代表逻辑0。
2 曼彻斯特码解码
根据曼彻斯特码(以下简称M码)的特点:在每一个数据 位的“中间”发生由低到高的跳变代表“l”、发生由高到低 的跳变代表“O”。又由图3可知,由于信号耦合的原因,实 际上由EM4095芯片送给单片机的64位M码的数据是反过 来的,即:用数据位中间发生高到低的跳变代表“1”、发生 由低到高的跳变代表“0”。另外,在本系统中,64位数据中 的每一位在天线上的持续时间,即位宽时间是载波周期的64 倍,当载波频率为125KHz时,每一位的持续时间是(1/125K)
பைடு நூலகம்
器…。大多数射频卡将卡内的身份辨识号码(ID号码)编码为曼 彻斯特码,然后由单片机进行解码。
125KHz非接触式IC卡原理与应用(全)
125KHz非接触式IC卡原理与应用第一部分:基本知识一、简介IC卡(Integrated Circuit Card)经过20多年的发展,已广泛应用于金融、电信、保险、商业、国防、公共事业等领域。
IC卡按外部接口设备的连接方式可分为接触式IC卡和非接触式IC卡(又称射频卡,RFID)两类。
接触式IC卡,就是IC卡与外界进行数据通讯时,芯片的电极触点必须与IC卡读写设备直接连接;非接触式IC卡在使用时则无须与IC卡读写器设备直接连接,而是通过无线电波或电磁感应的方式实现与IC卡读写设备的数据通讯。
在刷卡速度要求高,用卡环境恶劣,污染严重等环境下,非接触式IC卡有着它特有的优势。
非接触式IC卡成功地解决了无源(卡中无电源)和免接触这一难题,是电子器件领域的一大突破,由于其高度安全保密、通信速率高、使用方便、成本日渐低廉等特点而得到广泛使用,主要应用于智能门禁控制、智能门锁、考勤机以及自动收费系统等。
射频卡与接触式IC卡相比有以下优点:●可靠性高,无机械接触,从而避免了各种故障;●操作方便,快捷,使用时没有方向性,各方向操作;●安全和保密性能好,采用双向验证机制。
读写器验证IC卡的合法性,同时IC卡验证读写器的合法性。
每张卡均有唯一的序列号。
制造厂家在产品出厂前已将此序列号固化,不可再更改,因此可以说世界上没有两张完全相同的非接触IC卡。
射频卡根据使用频段的不同可分为低频卡和高频卡、超高频卡:●低频卡与读写器间通信使用的频段为低频段, 常用频点有125kHz、134kHz;●高频卡、超高频卡与读写器间通信使用的频段为高频段, 如13.56MHz、915MHz、2.45GHz等。
按工作距离的不同也可分为近距离卡和远距离卡:●近距离卡与读写器之间的有效作用距离为几厘米到几十厘米以内;●远距离卡与读写器之间的有效作用距离可达一到十几米以上。
按操作类型又可分为:低/高频只读型、低/高频无加密读写型、低/高频可加密读写型、多扇区独立加密应用型以及用户自定义分区应用型等。
一种简易的EM 125khz读卡器设计原理
等时间间隔指令分组并行处理的只读型射频卡读卡器的设计徐寅林,倪维柱,朱松盛南京师范大学物理科学与技术学院,江苏南京2100972008-07-17摘要:传统只读射频卡读卡器的设计一般采用U2270B或P4095读写基站芯片加MCU模式,其成本高、功耗大。
本文介绍一种仅采用一片89C2051加少量普通元件构成的读卡器电路以及独特的等时间间隔指令分组并行处理的程序设计方案,电路简单、功耗小、成本低。
关键词:射频卡读卡器等时间间隔指令分组并行处理非接触式只读型IC卡又称只读射频卡(RFID),经过多年的发展和推广,已经广泛应用于身份识别和寻址控制,如门禁、保安、考勤、食堂等领域。
目前已逐步扩展应用到展览会、公园、旅店、餐厅等公共场所的门票、优惠卡以及生产过程、邮政包裹、航空铁路运输、产品包装、交通等部门的物流、电子标签、防伪标志、一次性票证等众多领域。
低频卡的工作频率为125kHz,高频卡的工作频率为13.56MHz。
其中瑞士EM微电子公司的EM4100低频卡及兼容系列由于价格低、读卡距离远、读卡器简单而应用最为广泛。
传统的低频射频卡读卡器的设计一般采用U2270B或P4095读写基站芯片+MCU模式,电路相对复杂,成本较高。
本文介绍一种新颖的射频卡读卡器,该读卡器采用独特的等时间间隔指令分组并行处理的程序设计方案,充分利用89C2051的潜在功能,舍去了读写基站芯片,因而硬件电路大大简化。
该类型的读卡器读卡距离与采用读写基站芯片的读卡器相当,但电路功耗低、硬件成本仅为传统读卡器的一半左右,因此多年来已生产大量产品,运行使用情况良好。
1 EM4100射频卡简介EM4100是一种广为使用的只读射频感应卡,其内部ROM保存着10位十进制卡号数据。
当它被放在一个频率125kHz交变电磁场时感应获得能量驱动,射频卡内置天线环路等效负载的改变,势必造成射频卡对交变电磁场能量吸收数量的改变。
如果这个天线环路等效负载是按照一定时序变化的,就可以对该外部交变电磁场实现反调制,从而将其内部芯片数据反馈传递给读卡器。
曼彻斯特编码的解码及其应用
曼彻斯特编码的解码及其应用郗大海;李中跃【摘要】本文介绍了一种抗干扰能力较强而且也是比较常用的编码形式-曼彻斯特编码,针对这种编码形式的特点.给出了两种在单片机中的解码方法,并对这两种方法进行了简单的比较.最后在文章中给出了曼彻斯特编码在实际中的应用例子-ID卡的解码程序,主要针对的是现在国内比较常见的ID卡EM4100和基站芯片U2270B.【期刊名称】《辽宁省交通高等专科学校学报》【年(卷),期】2010(012)004【总页数】3页(P24-26)【关键词】曼彻斯特编码;解码;ID卡;EM4100;U2270B【作者】郗大海;李中跃【作者单位】辽宁省交通高等专科学校,辽宁,沈阳,110122;辽宁省交通高等专科学校,辽宁,沈阳,110122【正文语种】中文【中图分类】TP3681 曼彻斯特编码1.1 曼彻斯特编码定义曼彻斯特编码(以下简称曼码)是将码元分成两个相等的间隔:编码位的1/2位处,若被编码数据位为“1”,则负跳,反之为正跳;编码位的开始处,若被编码数据位为“1”,则为高电平,反之为低电平。
1.2 曼码的优点由于曼彻斯特编码每一个码元的正中间时刻出现一次电平的转换,这对接收端的提取位同步信号是非常有利的。
但是可从曼彻斯特编码的波形图看出其它所占的频带宽度比原始的基带信号增加了一倍。
曼码需要较复杂的技术,但可以获得较好的抗干扰性能。
1.3 曼码的具体时序与编码实例图1 曼码的编码形式由图1[1]中我们可以很清晰的发现曼码的特点:1)编码信息是靠边延识别,其中下跳(10)表示1,上跳(01)表示0,这种方法抗干扰性比较好,而且信息的有效跳变是出现在0.5T的位置。
2)当出现两个连续的1或两个连续的0时就会出现一次空跳,且空跳发生在T的位置。
2 曼码的解码方案根据曼码的编码特点,我们提出了两个解决编码的方案。
在这里分别命名为间隔读取法,连续检测法,两种方法在下面分别进行说明。
2.1 间隔读取法所谓间隔读取法,就是通过定时器控制每隔一段时间对数据进行一次读取。
运用AVR单片机的125kHz简易RFID阅读器设计
运用AVR单片机的125kHz简易RFID阅读器设计运用AVR单片机的125kHz简易RFID阅读器设计无线射频识别(Radio Frequency Identification,RFID)是利用感应、电磁场或电磁波为传输手段,完成非接触式双向通信、获取相关数据的一种自动识别技术。
该技术完成识别工作时无须人工干预,易于实现自动化且不易损坏,可识别高速运动物体并可同时识别多个射频卡,操作快捷方便,已经得到了广泛的应用。
目前存在的一些读卡器,都需要读卡芯片作为基站,成本较高。
本文介绍了一种采用分立元件构成的125kHz RFID阅读器,电路结构简单,成本极低,用于读取EM4100型ID卡。
1RFID系统的分类RFID系统的分类方法有很多,在通常应用中都是根据频率来分,根据不同的工作频率,可将其分为以下四种:(1)低频(120~135kHz)。
该频段具有很强的场穿透性,使用不受限制,性能不受环境影响,价格低廉,最大识别距离一般小于60cm,主要应用于门禁、“一卡通”消费管理、车辆管理等系统;(2)高频(10~15MHz)。
该频段与低频相比,具有防冲撞、能同时识别多个标签的优点,但其性能受环境影响,识别距离一般小于100cm,主要应用于图书管理、物流等系统;(3)超高频(850~960MHz)。
该频段较高频相比,具有可实现长距离识别的的优点,最大识别距离可达10m,但其性能受环境影响较大,价格也较贵,主要应用于铁路车辆识别、集装箱识别等系统;(4)微波(2.45~5.8GHz)。
该频段可实现远距离识别,识别距离可达100 m,但其价格也最贵,主要应用于智能交通系统中。
2RFID系统的组成射频识别系统一般由阅读器、电子标签、天线三部分组成。
(1)阅读器:读取或读/写电子标签信息的设备,主要任务是控制射频模块向标签发射读取信号,并接收标签的应答,对标签的标识信息进行解码,将标识信息连带标签上其他相关信息传输到主机以供处理。
射频卡应用中的曼彻斯特码解码技术
器…。大多数射频卡将卡内的身份辨识号码(ID号码)编码为曼 彻斯特码,然后由单片机进行解码。
然而,目前的很多单片机解码程序采用定时查询或考察 信号的边沿状态的方式解码,这些解码方法对天线上的载波 频率要求比较高,对定时的准确度要求也比较高,当载波稍 微偏离规定的范围内时将不能正确读卡。本文介绍了一种新 的解码技术,载波频率的偏移对解码没有任何影响,而且不 用检测信号的边沿状态,从而更加可靠、快速地读卡。
调制到此载波信号上面,通过信号的耦合,EM4095的天线
上也产生带有64位ID号码的调制信号,然后通过EM4095
的解调系统,滤除载波卜”,将64位数据传送给单片机,由
单片机再解码出其中的ID号码。
射频卡内的EM4100芯片内部有预先存储的不可改写的
64位数据,当其通过天线向外输出时,格式如图2所示f2J。
5结语
经过实际的应用,采用这种解码方法可以在读曼彻斯特 码的同时进行同步解码,速度比较快,而且由于对载波频率 的变化不敏感,故读卡成功率非常高。
曼码
上一帻
图5 曼彻斯特码解码分析图 在同步头形成的连续8个T间隔之后,随后的下降沿间 隔可能是T、1.5T或2T。当这个间隔为T时,电平为“LH”, 其中“L”电平要与同步头中第9个l的“H”电平结合,解 出第9个1,同时余下另一个“H”电平等待与后续电平结合; 同理,如果宽为1.5T时,只能解为“LLH”,这样也可以找 到同步头的第9个l,同时可以解出随后的第一位数据“0”。 当间隔为2T时,电平为“LLHH”,除第一个“L”与前面剩 余的“H”结合外,还可以解出一位数据“0”,同时,余下 一个“H”电平等待与后续电平结合。 依照这样的规则,继续对检测到的每一个下降沿间隔进 行解码。在解码过程中,当遇到T时,上次解码必然剩余一
125kHzRFID读卡器研究报告
海南师范大学第六届“挑战杯”作品编号:大学生课外学术科技作品竞赛参赛作品作品题目:125kHz频段下RFID读卡器设计二〇一三年三月二十日目录摘要-------------------------------------------------31.引言-----------------------------------------------42.系统电路设计---------------------------------------52.1 125kHz方波发生电路设计------------------------52.2 功率放大与检波电路-----------------------------62.3 滤波放大电路-----------------------------------72.4 系统供电电源设计-------------------------------72.5 控制电路设计-----------------------------------83.系统软件设计----------------------------------------93.1 EM4100s数据存储格-----------------------------93.2 Manchester码编码方式-------------------------103.3 Manchester码解码算法-------------------------114.系统测试-------------------------------------------124.1 波形测试-------------------------------------124.2 卡片识别测试---------------------------------145.总结-----------------------------------------------16 附录1:参考文献--------------------------------------17附录2:元件清单--------------------------------------18附录3:系统PCB截图----------------------------------19附录4:系统代码--------------------------------------21摘要本系统使用Freescale半导体公司微控制芯片MC9S12XS128作为Manchester码解码和控制芯片。
基于曼彻斯特码解码的125KHZ射频卡设计
基于曼彻斯特码解码的125KHZ射频卡设计科技应用日新月异,射频技术开始涌入到人们日常生活中各个方面,文章介绍一种基于曼彻斯特码解码的125KHZ射频卡设计方案,以STM8为核心控制器,通过谐振、检波、滤波放大等硬件电路来完成ID卡号的编码过程,利用软件程序计算曼彻斯特码高低电平的时间来确定有效跳变,成功实现解码;本设计的最大优点是充分保证系统的可靠性和稳定性。
标签:STM8;125K;射频卡;曼彻斯特码解码1 系统总体结构系统整体框图如图1所示,首先将信号通过三极管推挽电路进行功率放大,提高发射的距离,信息承载在125K的载波频率上,载波是由STM8提供方波的信号,再将检波和滤波放大后的信号送入单片机进行解码,最终通过PC机显示出ID卡号。
2 曼彻斯特码介绍曼彻斯特码,是一种用电平跳变来表示1或0的编码方式,即每个码元均用两个不同相位的电平信号表示,也就是一个周期的方波,但是1和0码正好相反;如波形从高电平跳变到低电平表示“1”,从低电平跳变到高电平表示“0”,由于每个码元均由两个不同的相位表示,所以曼彻斯特码有非常丰富的时钟信号,即使有多个相同码元连续出现,也可以根据跳变找到同步信号,减少了在解码过程中的误码率;信号在传输过程中没有直流分量,因此具有较强的抗干扰性能,但是数据传输速率只有调制速率的一半。
3 硬件设计硬件电路如图2所示,主要由推挽功率放大电路、谐振电路、检波电路、滤波放大电路组成。
推挽功率放大电路:STM8产生125KHZ的载波信号经过限流电阻送入三极管推挽功率放大电路,再通过线圈发送出去。
谐振电路:线圈与电容组成谐振电路,谐振频率f=1/2为125KHZ,谐振电路的作用是使线圈上获得更大的电流,尽可能获得最大的能量,使发射距离达到最远。
检波电路:主要用来滤除125KHZ的载波信号,还原原始数据信号,电路由检波二极管、电阻和电容组成。
滤波放大电路:滤除外界干扰噪声,并将信号进行放大,放大电路采用LM358集成运放,放大倍数根据电阻电容参数来确定,放大后的信号从输出脚送到单片机进行解码。
曼彻斯特解码原则+125K EM4100系列RFID卡解码源程序分析
曼彻斯特解码原则+125K EM4100系列RFID卡解码源程序分析曼彻斯特解码原则1.曼彻斯特编码曼彻斯特编码(Manchester Encoding),也叫做相位编码(PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。
曼彻斯特编码被用在以太网媒介系统中。
曼彻斯特编码提供一个简单的方式给编码简单的二进制序列而没有长的周期没有转换级别,因而防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。
在这个技术下,实际上的二进制数据被传输通过这个电缆,不是作为一个序列的逻辑1或0来发送的(技术上叫做反向不归零制(NRZ))。
相反地,这些位被转换为一个稍微不同的格式,它通过使用直接的二进制编码有很多的优点。
曼彻斯特编码,常用于局域网传输。
在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示"1",从低到高跳变表示"0"。
还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示"0"或"1",有跳变为"0",无跳变为"1"。
对于以上电平跳变观点有歧义:关于曼彻斯特编码电平跳变,在雷振甲编写的<<网络工程师教程>>中对曼彻斯特编码的解释为:从低电平到高电平的转换表示1,从高电平到低电平的转换表示0,模拟卷中的答案也是如此,张友生写的考点分析中也是这样讲的,而《计算机网络(第4版)》中(P232页)则解释为高电平到低电平的转换为1,低电平到高电平的转换为0。
清华大学的《计算机通信与网络教程》《计算机网络(第4版)》采用如下方式:曼彻斯特编码从高到低的跳变是0 从低到高的跳变是1。
两种曼彻斯特编码是将时钟和数据包含在数据流中,在传输代码信息的同时,也将时钟同步信号一起传输到对方,每位编码中有一跳变,不存在直流分量,因此具有自同步能力和良好的抗干扰性能。
实验 02----RFID实验系统 ----125kHz
一、标签(EM4100)
1.主要特性:
芯片尺寸非常小、方便移植应用;
卡芯片一般采用普通的CMOS工艺,具有省电、廉价的特点;
工作频率00-150Khz,典型值为125Khz;
工作频率不受无线电频率管制约束;可以穿透水、有机组织、木 材等;非常 适合近距离的、低速度的、数据量要求较少的应用。
2.片上芯片
封套(常规封装) 容量:64bits 异型封装
只读
L:
Typical 21.9mH for fo=125kHz
COIL1 :Coil terminal/clock input,EM4100芯片电路以一个处于交变磁场内的外部天线 线圈为电能驱动,并经由线圈终端COIL1从该磁场得到它的适中频率。 COIL2:Coil terminal,由芯片内部调制器的驱动,输出卡内信息。
滤波放大整形:滤波放大电路采用集成运放LM358 对检波后的信号进行滤波整形放大,放大后的信号 送入单片机,由单片机对接收到的信号进行解码, 从而得到ID卡的卡号。
滤波放大整形 检波
载波产生 及 功率放大电路
2.TTL Interface RS232 Data output format
1)9600bps,N,8,1 2)CHECKSUM: card 10byte DATA entire do XOR operation
02
10ASCII Data Characters
Checksum
03
1.Pin definition (TTL interface P1: PIN1 TX PIN2 RX PIN3 PIN4 GND PIN5 +5V( P2: PIN1 ANT1 PIN2 ANT2 P3: PIN1 LED PIN2 +5V(D PIN3 GND
125K非接触IC卡读卡头
125K非接触IC卡读卡头125K读卡头的工作电压为12V/5v,电流为30——40MA 读卡距离最远15CM 。
如要低功耗最有效是读卡头工作时供电,不工作时断电。
读卡距离与卡和天线有关,可以读各种125K曼彻斯特编码的只读ID卡(4001,EM4100等等)和含E2PROM的RF卡。
如E5550。
读卡头(OUT)输出信号为原卡的曼彻斯特码,(用示波器接读卡头输出可以观测ID卡的输出波形)它和其它公司的125K读卡头(输出信号为原卡的曼彻斯特码)是兼容的,可以相互替换,不用修改程序。
读卡头也可以读可擦写的125k非接触IC卡,如当读E5550时,卡的用来控制是否启动AOR位应置0,(当置1时IC卡不主动发射数据,需读卡头先发送口令。
我的读卡头是只读,不能发数据,当AOR位置1时不能读IC卡的数据)。
天线的设计:天线电感值=345Uh线径φ0.29mm圆形(内径):直径6CM 58圈直径8CM 40圈直径3CM 83圈直径2CM 115圈长方形:9.5*7 CM 38圈4.7*6.3 CM 50圈非接触式IC卡简介:非接触式智能卡以其高度安全保密性,通信高速性,使用方便性,成本日渐低廉等而受到广泛使用,给我们的生活质量带来了很大的提高。
非接触式IC卡简介又称射频卡,成功地解决了无源(卡中无电源)和免接触这一难题,是电子器件领域的一大突破。
主要用于智能门禁控制器,智能门锁,考勤机, 自动收费系统等.射频卡与接触式IC卡,TM卡相比有以下优点:1 可靠性高,无机械接触,从而避免了各种故障;2 操作方便,快捷,使用时没有方向性,个方向操作;3 安全和保密性能好,采用双向验证机制。
读写器验证IC卡的合法性,同时IC卡验证读写器的合法性。
每张卡均有唯一的序列号。
制造厂家在产品出长前已将此序列号固化,不可再更改,因此可以说世界上没有两张相同的非接触IC卡;只读ID卡的资料非接触ID卡主要有台湾4001卡和瑞士H4001卡,EM4100。
51单片机曼彻斯特码译码源程序
C51 Manchester译码源程序C51曼彻斯特码译码源程序2009-04-30 11:14/*manchester编码方式:0为10 1为01,如果与其相反则需要做相应的修改。
适用于125KHz非接触式ID卡,EM4100兼容格式ID卡(64bits, Manchester编码)MCU:stc12c54xxcrystal:11.0592M使用资源:外部中断0(INT0)+PCA0*/#include <stc12c5410ad.h>#include <stdio.h>#include<intrins.h>#define Channe256uS_H 0x00 //模块60mS 定时常数高位#define Channe256uS_L 0xEC //模块60mS 定时常数低位#define uint8 unsigned charsbit RFID_DATA = P3^2; //外部中断口接收数据/*/函数申明 */void start_Read() ;void Data_reveice() ;void Lmove_bite() ;uint8 find_head() ;uint8 Data_L_check() ;uint8 Data_R_check() ;void get_data();uint8 Data_Sever() ;void Get_EffectData(uint8 edata) ;void Init_PCA0();void DAT_Change(uint8 dat[]);void init_dev(void);uint8 tcount ;// 定时中断计数uint8 count ;//接收数据位数计数uint8 t_count ;//获得数据及校验变量。
uint8 temp ;// 临时变量uint8 temp_buf[16] ;//128个Machester位 55个数据位缓冲区。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
曼彻斯特解码原则+125K EM4100系列RFID卡解码源程序分析曼彻斯特解码原则1.曼彻斯特编码曼彻斯特编码(Manchester Encoding),也叫做相位编码(PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。
曼彻斯特编码被用在以太网媒介系统中。
曼彻斯特编码提供一个简单的方式给编码简单的二进制序列而没有长的周期没有转换级别,因而防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。
在这个技术下,实际上的二进制数据被传输通过这个电缆,不是作为一个序列的逻辑1或0来发送的(技术上叫做反向不归零制(NRZ))。
相反地,这些位被转换为一个稍微不同的格式,它通过使用直接的二进制编码有很多的优点。
曼彻斯特编码,常用于局域网传输。
在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示"1",从低到高跳变表示"0"。
还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示"0"或"1",有跳变为"0",无跳变为"1"。
对于以上电平跳变观点有歧义:关于曼彻斯特编码电平跳变,在雷振甲编写的<<网络工程师教程>>中对曼彻斯特编码的解释为:从低电平到高电平的转换表示1,从高电平到低电平的转换表示0,模拟卷中的答案也是如此,张友生写的考点分析中也是这样讲的,而《计算机网络(第4版)》中(P232页)则解释为高电平到低电平的转换为1,低电平到高电平的转换为0。
清华大学的《计算机通信与网络教程》《计算机网络(第4版)》采用如下方式:曼彻斯特编码从高到低的跳变是0 从低到高的跳变是1。
两种曼彻斯特编码是将时钟和数据包含在数据流中,在传输代码信息的同时,也将时钟同步信号一起传输到对方,每位编码中有一跳变,不存在直流分量,因此具有自同步能力和良好的抗干扰性能。
但每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。
就是说主要用在数据同步传输的一种编码方式。
【在曼彻斯特编码中,用电压跳变的相位不同来区分1和0,即用正的电压跳变表示0,用负的电压跳变表示1。
因此,这种编码也称为相应编码。
由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟,因此,这种编码也称为自同步编码。
】2. 曼彻斯特编码(Manchester Encoding),也叫做相位编码(PE);常用于局域网传输。
在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号。
但在不同的书籍中,曼彻斯特编码中,电平跳动表示的值不同,这里产生很多歧义:1、在网络工程师考试以及与其相关的资料中:位中间电平从高到低跳变表示"0";位中间电平从低到高跳变表示"1"。
2、在一些《计算机网络》书籍中:位中间电平从高到低跳变表示"1";位中间电平从低到高跳变表示"0"。
在清华大学出版的《计算机通信与网络教程》《计算机网络(第4版)》也是这么说的,就以此为标准,我们就叫这为标准曼彻斯编码。
至于第一种,我们在这里就叫它曼彻斯特编码。
但是要记住,在不同的情况下懂得变通哦,否则会被老师扣分数的哦。
这两者恰好相反,千万别弄混淆了。
现在我们要讲的就是差分曼彻斯特编码:在信号位开始时不改变信号极性,表示辑"1"在信号位开始时改变信号极性,表示逻辑"0" ;【注意】:如果在最初信号的时候,即第一个信号时:如果中间位电平从低到高,则表示0;如果中间位电平从高到低,则表示1;后面的(从第二个开始)就看每个信号位开始时有没有跳变来决定:下面我们来举个例子,来比较标准曼彻斯特编码、曼彻斯特编码、差分曼彻斯特编码:EM4100系列用的是:曼彻斯特编码!125K;EM4100系列RFID卡解码源程序分析1.我们知道了曼彻斯特编码原则,那么反过来的过程就是解码了。
EM4100系列用的是:曼彻斯特编码!2.传统只读射频卡读卡器的设计一般采用U2270B或EM4095读写基站芯片加MCU模式,其成本高、功耗大。
本文介绍一种采用一片74HC4060+LM258/358加少量普通元件构成的读卡器电路和处理的程序设计方案,电路简单、功耗小、成本低。
74HC4060+LM258/358 电路为市面上已非常成熟RFID-125KHZ-I卡且广泛采用的低功耗、低成本方案。
该方案在门禁、保安、考勤、展览会、公园、旅店、餐厅等公共场所的门票、优惠卡以及生产过程、邮政包裹、航空铁路运输、产品包装、交通等部门的物流、电子标签、防伪标志、一次性票证等众多领域上占据半壁江山。
3.推挽式放大电路输出後接LC串联谐振电路,当回路固有谐振频率与输入讯号频率相等时,电路发生串联谐振。
本文只要求对125kHz 频率的讯号放大,所以根据串联谐振公式计算电路中元件参数,可得L=737uH,C=2200pF。
4.包络检波电路感应线圈产生谐振电压约有20V,所以载波讯号的电压也约为20V。
对输入电压高於500mV检波,称为「大讯号检波」,利用二极体单向导电特性及检波负载RC充放电过程实现。
RC参数的确定需要满足两个条件:1.不产生隋性失真,一般工程上按计算,f为载波频率。
2.不产生负峰切割失真,即,m为调幅系数,R1是交流阻值,R0是直流阻值。
联立上述两个条件,确定检波电路中R12、C36分别为470kΩ、4700pF。
5.波形整形电路在单晶片处理之前,整形电路将检波後的讯号变成单片机可以识别的高低电平。
LM358 (LM258) 内部整合两个运放,经过两次整形後可以得到很好的方波讯号。
电路中R16、R17、R18、R19起到分压作用,确定输出翻转门限为2.5V;R15、R21将同向输入的电压叠加在反向输入端;C54、C55为耦合电容,能够隔离直流分量,传递交流讯号。
当U+大於U-+2.5V时,输出高电平;当U+小於U-+2.5V时,输出低电平。
6.读卡程序是根据EM4100、EM4001系列射频卡的特点量身定做的一段程序,射频卡以曼彻斯特编码,传输一个资料的时间t=64/125kHz=512μs。
实际使用中,一般传输时间为,230μs<0.5t<280μs。
280μs<定时器取样时间<512μs。
所以本文中取样波形时,定时器时间设定为400μs,保证为取样留有足够的时间。
原程序分析:1. 定时器时间设定为400μs#define TH0_H 0xfe// 定时器0 取样定时值设定为400us#define TL0_L 0x8f//8f2.定时器0中断优先级最高:PT0=1;3.//曼彻斯特码同步头检测,9个1采用逐个前移检测法//逐个前移检测法,即每检测到一个数据,如果是"1",并向数据库写入1, //如果是"0",就放弃当前检测的数据,并向当前数据流方向移动一位, //这样一来,就保证了不管数据流是在何种状态下,都能正确无误地抓取9个1,//同步头9个1的提取成功,曼彻斯特码译码器即和当前的数据流保持了同步,//并把余下的55位数据全部译完。
4.uchar REM_Buffer[14];//曼彻斯特码解码后得到最终数据的缓存0~13/*曼彻斯特码解码后的数据放在REM_Buffer[0~13];REM_Buffer[0]=0xff 数据格式:1111 1111 同步头,8个1REM_Buffer[1]=0x8x 数据格式:1xxx xxxx 同步头,1个1,x表示无意义REM_Buffer[2]= 数据格式:D00D01D02D03 P0xxx 八个版本位或厂商信息的前四位,x表示无意义;P0为行效验位REM_Buffer[3]= 数据格式:D10D11D12D13 P1xxx 八个版本位或厂商信息的后四位,x表示无意义;P1为行效验位REM_Buffer[4]= 数据格式:D20D21D22D23 P2xxx 三十二个数据,x表示无意义;P2为行效验位REM_Buffer[5]= 数据格式:D30D31D32D33 P3xxx 三十二个数据,x表示无意义;P3为行效验位REM_Buffer[6]= 数据格式:D40D41D42D43 P4xxx 三十二个数据,x表示无意义;P4为行效验位REM_Buffer[7]= 数据格式:D50D51D52D53 P5xxx 三十二个数据,x表示无意义;P5为行效验位REM_Buffer[8]= 数据格式:D60D61D62D63 P6xxx 三十二个数据,x表示无意义;P6为行效验位REM_Buffer[9]= 数据格式:D70D71D72D73 P7xxx 三十二个数据,x表示无意义;P7为行效验位REM_Buffer[10]= 数据格式:D80D81D82D83 P8xxx 三十二个数据,x表示无意义;P8为行效验位REM_Buffer[11]= 数据格式:D90D91D92D93 P9xxx 三十二个数据,x表示无意义;P9为行效验位REM_Buffer[12]= 数据格式:PC0PC1PC2PC3 0xxx 四个列效验位,x表示无意义;0为停止位原程序://2008.10.15//125K;EM4100系列RFID卡解码//#include <reg52.h>//使用AT89S51/52等系列单片机头文件#include <STC12C5410AD.h>//stc系列单片机专用头文件#include <intrins.h>#define uint unsigned int//定义#define uchar unsigned char//定义#define ulong unsigned long//定义sbit REM=P2^1;// 曼彻斯特编码输入端sbit CLK=P3^3;//产生125KHZ 时钟信号端sbit LED=P2^5;// 红灯sbit SPP=P1^0;// 喇叭bit REM_BIT;// 曼彻斯特码高、低边沿跳变标志位,bit Efficacy_BIT; //待效验标志位,bit P_PC_BIT; //行,列效验标志位bit YES_NO_BIT; //效验正确,或效验错误标志位,//YES_NO_BIT=1 表示效验正确;//YES_NO_BIT=0 表示效验错误。
#defineTH0_H 0xfe// 定时器0 取样定时值设定为400us#defineTL0_L 0x8f//8f//350~420us//375~450usuchar U_D_Buffer[5];//User_Data//用户数据缓存,ulong long_D;//方法1,卡号在long_D 中,不足10位,则在高位前面加0uchar char_D;//方法2,前两位卡号在char_D 中,uint int_D;//方法2,卡号后4位卡号在int_D 中,uchar volue;//volue 为曼彻斯特码译码时的临时运算缓存uchar REM_Buffer[14];//曼彻斯特码解码后得到最终数据的缓存0~13 /*曼彻斯特码解码后的数据放在REM_Buffer[0~13];REM_Buffer[0]=0xff 数据格式:1111 1111 同步头,8个1REM_Buffer[1]=0x8x 数据格式:1xxx xxxx 同步头,1个1,x表示无意义REM_Buffer[2]= 数据格式:D00D01D02D03 P0xxx 八个版本位或厂商信息的前四位,x表示无意义;P0为行效验位REM_Buffer[3]= 数据格式:D10D11D12D13 P1xxx 八个版本位或厂商信息的后四位,x表示无意义;P1为行效验位REM_Buffer[4]= 数据格式:D20D21D22D23 P2xxx 三十二个数据,x表示无意义;P2为行效验位REM_Buffer[5]= 数据格式:D30D31D32D33 P3xxx 三十二个数据,x表示无意义;P3为行效验位REM_Buffer[6]= 数据格式:D40D41D42D43 P4xxx 三十二个数据,x表示无意义;P4为行效验位REM_Buffer[7]= 数据格式:D50D51D52D53 P5xxx 三十二个数据,x表示无意义;P5为行效验位REM_Buffer[8]= 数据格式:D60D61D62D63 P6xxx 三十二个数据,x表示无意义;P6为行效验位REM_Buffer[9]= 数据格式:D70D71D72D73 P7xxx 三十二个数据,x表示无意义;P7为行效验位REM_Buffer[10]= 数据格式:D80D81D82D83 P8xxx 三十二个数据,x表示无意义;P8为行效验位REM_Buffer[11]= 数据格式:D90D91D92D93 P9xxx 三十二个数据,x表示无意义;P9为行效验位REM_Buffer[12]= 数据格式:PC0PC1PC2PC3 0xxx 四个列效验位,x表示无意义;0为停止位*/uchar code DispTab[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};uchar code Data[]={"Data: "};//数据uchar code UserData[]={"User Data: "};//用户数据uchar code Card_1[]={"Methods 1 Decimal Card Number: "};//方法1:掐头留尾法提取10位十进制卡号:uchar code Card_2[]={"Methods 2 Decimal Card Number: "};////方法2:前两位+后4位的微根格式,段间以小数点或豆号隔开uchar code DispTab_2[]={' ','H',','};void init()//{TMOD=0x21;TH1=0xfd;//11.0592MHz 波特率: 9600TL1=0xfd;PCON&=0x80;SCON=0x40;//AUXR=0x40;//波特率倍增//11.0592MHz 115200TH0=0x00;//TL0=0x00;//EA=1;ET0=1;TR0=0;TR1=1;ES=0;REN=1;PT0=1;//PT0H=1;//定时器0中断优先级最高:第三//PT0H是stc单片机特有的寄存器REM=1;CLK=1;SPP=1;LED=1;REM_BIT=1;}void delay1(uint z)// delay(10); 10次为1ms { uchar x;for(;z>0;z--){for(x=0;x<160;x++){}}}/*void delay()//{_nop_();_nop_();_nop_();}*/void Time_interrupt(void) interrupt 1 //定时器0中断{TR0=0; //关闭定时器0,为曼彻斯特码提取数据定时器}void RS232_in(void) interrupt 4//串口中断{EA=0;if(RI==1)//接收{RI=0;//SBUF_RI_Buffer[0]=SBUF;//RS2323接收缓冲区}//////////////////else //if(TI==1)//发送TI=0;EA=1;}void RS232()//通信转输数据,发给PC{uchar i;ulong mm;//ES=0;if((REM_Buffer[0]==0xff)&&(REM_Buffer[1]==0x80))//同步头9个1的判断,同步头正确,进入数据发送,否则退出{for(i=0;i<6;i++){SBUF=Data[i];//" "while(TI==0);TI=0;}for(i=0;i<13;i++){SBUF=DispTab[(REM_Buffer[i]/16)];//SBUF=REM_Buffer[i];//给PC 发送REM_Buffer[0~13]个数据while(TI==0);//TI=1,表示数据发送完毕,TI=0;//TI清零,并把余下的数据继续发送,直到13个数据全部发送完。