![]() |
| 当前位置:RFID世界网 > 技术文章 > RFID阅读器的驱动程序撰写 |
RFID阅读器的驱动程序撰写
本文将介绍如何以MCU简单的设计一个RFID的阅读器,所示范的的程序模块是采用HOLTEK MCU HT49R50A-1的汇编语言,希望透过程序模块的分享以达到共同讨论的目的。 RFID是英文“Radio Frequency Identification”的缩写,中文名称为「无线射频身份识别」是为目前相当受到重用的感应式电子芯片或是近接卡、感应卡、非接触卡...等等,非接触式自动识别技术的一种。是一种内建有无线电技术的芯片,芯片中还可纪录一系列信息,如产品别、位置、日期等,最大的好处是能提高物品管理效率。 目前市面上以使用条形码,将物品的相关信息多记录在条形码上,而再以扫描仪扫瞄条形码取得信息,而RFID只需在一定范围内感应,并可一次读取大量讯息。射频识别系统(RFID)最早在1948年即被提出,利用无线电波传送识别数据,达到身分识别的目的。无须接触即可自动读取及收集资料的一种科技,乃属于自动资料搜集(Automated Data Collection, ADC)技术之一种,可无线读取卷标信息。传输频率分为低频(LF:125~134KHz),高频(HF:13.56MHz),超高频 (UHF: 400~ 1000MHz),微波(Microwave; 1GHz以上),其中以超高频之技术较先进且其稳定度与应用效果较佳。 于本文将介绍如何以MCU简单的设计一个RFID的接收器,所使用的是为高频(13.56 MHz)的频域,于本文中的程序模块是采用Holtek MCU HT49R50A-1的汇编语言来撰写,希望透过程序模块的分享以达到共同讨论的目的。 RFID的特性 条形码是一种只读式的、需要对准标的、一次只能读一个、且容易破损;而RFID是可擦写的、使用时不需对准标的、同时可读取多个、坚固全天候使用,可不需人力介入操作。RFID具有许多条形码所难以达成的下列特性:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> (一) 数据的读写(Read Write)机能:只要通过RFID Reader即可不需接触,直接读取讯息至数据库内,且可一次处理多个标签,并可以将物流处理的状态写入标签,供下一阶段物流处理的读取判断之用。 (二) 容易小型化和多样化的形状:RFID在读取上并不受尺寸大小与形状之限制,不需为了读取精确度而配合纸张的固定尺寸和印刷品质。此外,RFID TAG更可往小型化与多样型态发展,以应用在不同产品。 (三) 耐环境性:纸张一受到脏污就会看不到,但RFID对水、油和药品等物质却有强力的抗污性。RFID在黑暗或脏污的环境之中,也可以读取数据。 (四) 可重复使用:由于RFID为电子数据,可以反复被覆写,因此可以回收标签重复使用。如被动式RFID,不需要电池就可以使用,没有维护保养的需要。 (五) 穿透性:RFID若被纸张、木材和塑料等非金属或非透明的材质包覆的话,也可以进行穿透性通讯。不过如果是铁质金属的话,就无法进行通讯。 (六) 数据的记忆容量大:数据容量会随着记忆规格的发展而扩大,未来物品所需携带的资料量愈来愈大,对卷标所能扩充容量的需求也增加,对此RFID不会受到限制。为期
为避免各国无线电频率使用标准不一,造成使用上的混乱与困扰,国际上大多遵守国际电信联合会(ITU)的规范。目前RFID使用的频率有6种,分别为135KHz以下、13.56MHz、433.92MHz、860M~930MHz(即UHF)、2.45GHz以及5.8GHz,其各有特色和缺陷。135KHz以下传输距离短约10公分左右,通讯速度慢。此频段在绝大多数的国家属于开放,不涉及法规开放和执照申请的问题,因此使用最广,主要使用在宠物、门禁管制和防盗追踪。 13.56MHz薄化的效果最佳传输距离为1公尺以下,代表性应用为会员卡、识别证、飞机机票和建筑物出入管理,通讯距离10公分左右的近距离非接触式IC卡发展快速。 RFID系统的基本架构 RFID的基本组成组件及其主要的功能为:
图1 Tag的基本结构
表1 Tag的等级分类表
表2 Tag与频率的关系 RFID的应用领域
以下对几个应用作深入的介绍说明: 一般消费品 零售业 制药业 物流业 运输业 接收器的制作及程序
图2 RFID 接收器的实际电路图
图3 程序流程图 于图2所示为本文中所举RFID接收器范例的实际电路图,程序使用一组Timer及一组External Interrupt来搭配接收RFID Data,其中应特别注意的是所使用的外部Clock Sounce需要精准,以达到接收数据的稳定性及正确性。于图3所示为程序的设计流程,所设计的程序如图4所示。 . ODE .SECTION AT 00H 'CODE' ;------------------ ;--- START 开始副程式 --- ORG 00H JMP START ;------------------ ;--- INT0 中断0副程式 --- ORG 04H JMP EXTERNAL_INTERRUPT0 ;------------------ ;--- INT1 中断1副程式--- ORG 08H JMP EXTERNAL_INTERRUPT1 ;------------------ ;--- TIMER 0 计时器0副程式 --- ORG 0CH JMP TIMER0_INT ;------------------ ;--- TIMER 1 计时器1副程式 --- ORG 010H JMP TIMER1_INT ;------------------ ;--- TB --- ORG 014H RETI ;------------------ ;--- RTC --- ORG 018H RETI ORG 020H ;================================ ;= ;= INT PROGRAM ;= ;=============================== ;= ;= TIMER 0 INTERRUPT 100uS ;= ;=============================== TIMER0_INT: MOV S_ACC,A ;SAVE ACC&STATUS TO MEMORY MOV A,STATUS ;push pop MOV S_STA,A ;--------------------------- RL M_DATA_BUFFER ;EVERY 100uS SHIFT LEFT ONCE SNZ P_RFID_DATA JMP RFIDGETDATA0 RFIDGETDATA1: CLR M_DATA_BUFFER.0 ;RECEIVER DATA "1" JMP CHECK_RFID_LEADING_CODE RFIDGETDATA0: SET M_DATA_BUFFER.0 ;RECEIVER DATA "0" CHECK_RFID_LEADING_CODE: SZ F_RFID_1ST_OK JMP BIT8_RECEIVER MOV A,098H ;FIRST ID 98H XOR A,M_DATA_BUFFER ;CHECK LEAD CODE SNZ Z JMP RESET_TIMER0 SET F_RFID_1ST_OK MOV A,12 MOV M_RFID_BYTES_COUNT,A ;TOTAL DATA 12 BYTES MOV A,0F3H MOV MP0,A SAVE_RF_ID_DATA: INC MP0 MOV A,M_DATA_BUFFER MOV R0,A CLR M_DATA_BUFFER SDZ M_RFID_BYTES_COUNT JMP RESET_TIMER0 CLR F_RFID_1ST_OK ; CALL CRC_CHECK_PROCESS ;CHECK CRC SNZ ACC.0 ;ACC=FFH DATA OK JMP TIMER0_INT_END SET F_RFID_RX_OK JMP TIMER0_INT_END BIT8_RECEIVER: SDZ M_ROTATE_COUNT JMP RESET_TIMER0 MOV A,08 MOV M_ROTATE_COUNT,A JMP SAVE_RF_ID_DATA ; RESET_TIMER0: CLR TMR0C.4 ;TIMER0 COUNTING 100uS MOV A,154 ;TIMR0 100uS TIMEOUT FOR RFID MOV TMR0,A ;--------------------------- TIMER0_INT_END: MOV A,S_STA ;RELOAD ACC&STATUS MOV STATUS,A ;Pop acc Status Regiter MOV A,S_ACC RETI ;=============================== ;= ;= EXTERNAL_INTERRUPT 0 ;= ;=============================== EXTERNAL_INTERRUPT0: SNZ F_RFID_RX_OK SET TMR0C.4 ;Enable TIMER0 START COUNTING 100uS RETI ;============================================================= ;= ;= MAIN PROGRAM ;= ;============================================================= START: ;--- POWER ON RESET --- MOV A,11111111B ;I/O port initial MOV PA,A MOV A,11111111B MOV PB,A MOV A,11111111B MOV PC,A ;--- TIMER 0 --- MOV A,159 ;Initial TIMR0 100uS TIMEOUT FOR RFID Receiver MOV TMR0,A MOV A,10100000B MOV TMR0C,A
;--- TIMER 1 --- MOV A,56 ;TIMR1 FOR MAIN LOOP MOV TMR1,A MOV A,10110000B MOV TMR1C,A ;--- INT 0,1 --- MOV A,00001001B MOV INTC0,A ;Enable Mcu interrupt founction MOV A,00000101B MOV INTC1,A ;-------------------------------------------------- ;---- CLEAR WORK RAM ---- CALL CLEAR_RAM ;CLEAR MCU RAM ;========================== ;= MAIN ;========================== MAIN: ;------- MAIN LOOP 20MS --------- SNZ F_20MSTIMEOUT JMP MAIN CLR F_20MSTIMEOUT ;MAIN LOOP 20MS FOR CYCLE ;********************************* ;----- Make some function -------- ;ex: ; CALL KEY_SCAN ; CALL SHOW_LCD ; CALL BEEP_SOUND ; CALL SHOW_LED JMP MAIN ;=============================================== 图4系统程序语言
结语 整体看来,RFID无线射频身份识别系统在未来的发展在很多的产业都是相当被看好的,虽然目前该技术有一些潜在问题,但科技的发达日新月异,相信要克服RFID的种种隐忧,所需要的也只是时间上的问题而已。举例说隐私权问题,现正研发自毁型卷标或消磁型卷标来解决这问题;配合奈米技术所研发适用于特殊物品的超小型标签;还有WhereNet新版物流管理软件可支持物流业者使用RFID系统。因此我们可以预见RFID将会促使相当多产业产生一场大的变革。然而RFID对印刷产业有多大的影响呢?是否会为印刷产业带来重大的商机吗?从上述文章的内容,相信在可预见的未来,不论是各式产品包装盒、食物外包装或是图书杂志里,只要是目前有条形码标签的印刷品上,将来就会有RFID的身影,甚至没有条形码标签的也可能会有RFID。所以不论是印制包装外盒的业者(厚纸)或是印制书籍杂志的业者(薄纸)都应会产生影响,尤其是对目前专门印制条形码卷标或是条形码报表的业者所产生的影响更大。目前使用的RFID的天线部份,都是使用铜片制作,黏贴在一般自黏标签上,再转贴到所需的位置上。希望将来RFID的天线部份以印刷方式印上,就如同目前印制条形码一般。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||