基于ARM的双频RFID读写系统设计解析方案

发布者:温馨的家庭最新更新时间:2012-02-13 来源: 21IC关键字:ARM  双频RFID  读写系统 手机看文章 扫描二维码
随时随地手机看文章

引言

鉴于目前国内市场上应用最为广泛的射频卡和读写器实现方法,本文采用ARM 嵌入式系统作为微控制器,设计了能对低频125KHz 和高频13.56MHz 的二种频率RFID 卡操作的读写模块,实现了的双频RFID 读写系统。

2 系统设计

由于ARM 微处理器具有运行速度快,接口功能丰富,其应用越来越广泛。本文采用三星公司的S3C44B0X,它是ARM7 系列的低功耗的32 位RISC 处理器,具有ARM7TDMI内核,有丰富的内置部件,包括8K 字节Cache 和内部SRAM,带自动握手联络的2 通道UART,定时器,通用 I/O 口,ADC 和I2C-BUS 控制器等。尤其是它的内置液晶显示器接口,可直接连接LCD 显示器,无需专用LCD 显示器接口芯片,可使成本降低,很适合在本系统中使用。

整个系统由ARM 嵌入式系统,低频RFID 卡读写模块,高频RFID 卡读写模块,USB 接口,LCD 显示器以及蜂鸣器、状态指示灯等组成。RFID 模块是北京华闰得公司开发的具有串行数据通信接口的模块,低频读写模块是CR001,为工作于125kHz 的EM4001 卡;高频模块是CR013,为工作于13.56MHz的MF 卡。由于RFID 模块具有TTL 电平的串行通信接口,这样ARM 微处理器可直接通过片上的二个UART 接口与其连接,不需要电平转换即可轻松实现与RFID 模块的通信。嵌入式系统与PC 机的连接则通过USB 接口实现。

因为低频 RFID 卡一般都是只读卡,进入读卡器磁场范围后,就自动发出信号。ARM微处理器通过不断检测端口捕捉信号,一旦读到卡,就读取信息,并在LCD 上显示。对于高频卡,可根据需要进行读或写操作。

LCD 显示器采用320*240 点阵的STN 型彩色液晶模块,可直接与S3C44B0X 连接,成本也较低。对LCD 的显示控制直接使用S3C44B0X 内部的LCD 驱动控制器实现,它能自动产生LCD 驱动控制所需的信号。在这种接口方式下,LCD 显示缓冲区映射在系统的存储器空间上,程序只需将像素点内容写入存储器对应地址就可以实现对应LCD 屏上像素点颜色的显示刷新,控制十分方便。

键盘和状态指示灯的操作控制采用 ZLG7290 实现。ZLG7290 是一款功能较强的按键处理和7 段数码管显示专业芯片,提供了I2C 串行接口和键盘中断信号,可方便地与S3C44B0X连接。

在上位上,通过设计专门的软件实现对RFID 卡的读写操作,并对RFID 卡进行管理。由于PC 机功能强大,如再配上数据库系统,可以对大量用户的数据和信息进行存储和查询等处理,满足多种应用的需要。

3 系统的软件设计

3.1 RFID 模块操作

CR001 模块与S3C44B0X 的串口相连,在接收数据前首先要对UART0 进行初始化。根据CR001 的使用规范,设置波特率为9600Baud,数据位为8 位,1 位停止位,无校验位。为使ARM 对低频RFID 卡及时作出响应,软件采用中断方式接收数据,即当S3C44B0X 的UART0 接收到数据时,产生中断,在中断服务程序中接收CR001 模块的数据。

根据 CR001 射频读写模块的使用规范,CR001 模块输出的数据包有5 个字段,即起始符、数据、校验和、LD 和LF、结束符。因此在软件设计中,当收到UART0 的数据时,首先要判断一个数据包的起始符和结束符,以确定一个数据帧的起止位置,然后再检验数据的校验和是否正确。只有在接收的数据无误时,再将其中的数据取出、存储,并在LCD 上显示。

CR013 射频读写模块是采用Philips 公司的Mifare 技术设计的微型嵌入式、非接触式IC卡读写模块,内嵌ISO14443 Type A 协议解释器,并可直接驱动射频天线。这是一种以被动方式工作的卡,刚进入天线有效感应区的卡得电进入空闲状态,它只吸收感应区内的磁场能量,不会首先发出信号。当读卡设备发出请求信号,符合条件的卡才会响应

对 CR013 模块的读写过程相对较复杂,要执行一系列的操作指令,包括询卡、请求、防冲突、选卡、装载密钥、验证密码、读块、写块,这一系列的操作必须按固定的顺序。寻卡时,处理器需要执行请求、防冲突、选卡操作,与CR013 模块建立起通信关系,在通过装载密钥、验证密码操作后,才可进行读卡或写卡操作。[page]

1、防冲突

防冲突就是从多张卡中选出一张卡来操作,又叫防碰撞、防重叠。如果知道卡的序列号,则可跳过此步,直接执行下一步选卡命令。若不知道卡的序列号,则必须调用防碰撞函数,得到感应区内卡的序列号。若同时有多张卡在感应区内,防碰撞函数能检测到,并且从中选出一张卡的序列号来。

2、选择卡片

根据上一步收到的卡号,发出选卡命令。经过这一步后才真正选中了一张要操作的卡,以后的操作都对这张卡进行。

整个寻卡过程包括请求、防冲突、选卡三个步骤。当微处理器发出寻卡命令时,实际上微处理器执行了以上3 个步骤。为防止死锁,本文设置每步操作的最大次数为3 次,若3次不成功则寻卡失败。

3、密钥装载和验证密码

微处理器发出读、写命令后,在进行读写操作前必须先执行密钥装载和验证密码。验证密码又叫认证、证实。模块将装载到读卡芯片FM1702SL 中的密码与卡中指定扇区的密码进行认证,如果密码相同,则认证成功,卡允许进行读写操作。

3.2 LCD 显示软件设计

LCD 用于显示用户操作界面,为此需要在屏幕上绘制图形,显示数据和文字。在对LCD 控制器进行操作前,首先要对LCD 控制器的专用寄存器进行初始化,内容包括定义3个LCD 控制寄存器,3 个帧缓冲区地址寄存器和3 个颜色查找表寄存器。

为了在 LCD 上显示字符和图形,需要建立绘图和字符显示库函数。绘图函数包含一些基本的绘图功能。其中画点是最基本的函数,其它函数都可以调用画点函数实现。

为了在 LCD 上显示字符,还要建立ASCII 字符和汉字字符的点阵库和显示函数。显示ASCII 字符的原理是在特定的坐标位置画点,形成人们可以识别的字符图形。点的坐标根据建立的ASCII 字符点阵库来确定。ASCII 字符的点阵库可以根据字符的点阵位置生成点阵数组供调用。汉字的显示原理与ASCII 字符相同,事先也要建立汉字点阵字库,这一过程可通过专用的字库生成软件实现。另外,为了节省存储器空间,只需建立本系统要用到的汉字小字库。

3.3 键盘和指示灯的软件设计

对键盘和指示灯的操作控制是由 ZLG7290 实现的,由于S3C44B0X 具有I2C 接口,因此可直接与ZLG7290 连接。编程时首先要对I2C 总线进行初始化,然后打开键盘中断。当键盘有键被按下时,ZLG7290 的INT 引脚会产生一个低电平的中断请求信号。在ARM 的中断程序中通过I2C 总线读取键值,再根据键值完成相应功能。

3.4 USB 接口通信

为方便与 PC 机接口,本系统采用应用广泛的USB 接口与PC 机通信。因S3C44B0X 本身不带USB 接口,必须要进行扩展。但是,USB 接口协议非常复杂,固件编程和WDM 驱动程序的编写都是相当麻烦的工作。为降了设计难度,缩短开发周期,本文采用哈尔滨讯通公司的通用串行总线模块USB100。该模块内部封装了USB 协议和细节,即插即用,完全满足USB1.1 标准,对 USB 接口的操作如同对外部存储器操作一样方便,无需任何外接元件。

USB100 模块有2 根状态信号RXF 和TXE,用于与ARM 联络。RXF 为低表示模块有数据输出,ARM 可以读取数据;TXE 则表示USB100 发送缓冲区的状态,TXE 为低表示USB100 发送缓冲器未满,可以向发送缓冲区写数据。在编程时,可以采用查询方式实现数据的收发。

3.5 RTC 实时时钟显示功能

为了显示读卡和写卡的时间,需要使用实时时钟。S3C44B0X 具有一个独立的RTC 功能模块,能够像钟表和日历一样保存并自动计算时间。RTC 的寄存器保存了表示时间的8 位BCD 码数据,编程时主要是对这些参数进行初始化设置。在LCD 上显示实时时钟时,需定时地从上述的寄存器中取出相应的数据。由于LCD 上字符是根据ASCII 码显示的,而RTC 的寄存器中存放的时间参数都以BCD 码形式存储,因此在LCD 显示日期和时间之前,必须先对时间数据进行格式转换,即将BCD码转换为ASCII 码。

3.6 PC 机软件

PC 机软件基于windows 操作系统,采用Visual C# 2005 进行编程。该软件不但能再PC机上现实操作面,与ARM 嵌入式系统通信实现对RFID 卡的读写操作,将相关信息显示在PC机上,而且还能访问数据库并读取存入,或将取出的数据写入RFID 卡,供用户查询。数据库采用Microsoft office Access 数据库系统,并采用结构化查询语言对数据库访问。

4 结束语

本文以 ARM 微处理器S3C44B0X 为核心,设计实现了RFID 双频读写器系统。在对高频RFID 卡的寻卡过程中,通过对最大操作次数的限制,有效地防止了死锁。系统具有LCD 显示器,通过键盘操作便可对RFID 卡的进行读写。设计的USB 接口可方便地与PC机连接,在PC 机上实现对RFID 卡的操作。系统功能强,使用灵活,可满足多种应用场合。由于采用了低成本的ARM 微处理器,简化了硬件,提高了系统的性价比。

关键字:ARM  双频RFID  读写系统 引用地址:基于ARM的双频RFID读写系统设计解析方案

上一篇:基于ARM7内核和μC/OS-Ⅱ的数据采集装置设计
下一篇:基于ARM的Linux下LonWorks总线设备驱动设计

推荐阅读最新更新时间:2024-03-16 12:52

ARM 中main()和__main() 的区别
当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序,即呼叫主应用程序。最简单的一种情况是: IMPORT main B main 直接从启动代码跳转到应用程序的主函数入口,当然主函数名字可以由用户随便定义。 在ARM ADS环境中,还另外提供了一套系统级的呼叫机制。 IMPORT __main B __main __main()是编译系统提供的一个函数,负责完成库函数的初始化和初始化应用程序执行环境,最后自动跳转到main()。所以说,前者是库函数,后者就是我们自己编写的main()主函数; 因此我们用的B __main其实是执行库函数,然后该库函数再调
[单片机]
用GNU工具开发基于ARM的嵌入式系统
摘要:介绍如何利用GNU的工具开发基于ARM的嵌入式系统,以及使用编译器、连接器和调试工具的具体方法,为广大嵌入式系统开发人员提供一种低成本的开发手段。 关键词:ARM GNU MC928MX1 gcc gdb gdbserver 当前,ARM公司的32位RISC处理器,以其内核耗电少、成本低、功能强、特有16/32位双指令集,已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准,市场占有率超过了75 %。多家公司都推出了自己的基于ARM内核的处理器产品,越来越多的开发人员开始了针对ARM平台的开发。通常开发人员需要购买芯片厂商或第三方提供的开发板,还需要购买开发软件,如C编译器或者集成了实时操作系统的开
[嵌入式]
Arm推出首款多线程处理器Arm Cortex-A65AE
新闻摘要: • Arm推出安全就绪计划(Arm Safety Ready program)的最新补充,这是一款新型“汽车增强”处理器,旨在实现下一代安全驾驶体验 • 针对7纳米进行优化:Cortex-A65AE是Arm首款集成功能安全的多线程处理器,可在车载信息娱乐系统(IVI) /驾驶舱系统中处理自动和高处理量的传感器数据 • 同步多线程针对高处理量工作负载进行优化,并提供最佳的性能效率 北京 – 2018年12月21日 – Arm宣布推出首款集成功能安全的多线程处理器Arm Cortex-A65AE,它是Arm汽车增强版IP产品组合的最新补充,旨在更高效地处理下一代车辆中产生的多种传感器数据流,安全地实现创新
[汽车电子]
ARM之I2C总线协议介绍
I2C总线协议 概述:I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域挂规范采用的一种总线标准。是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。Exynos4412芯片包含8个通用I2C接口控制器。 I2C主从机设备连接 I2C总线物理连接 特点 半双工。 只要求两条总线线路:一条串行数据线SDA(Serial Data Address),一条串行时钟线(Serial Clock Address)。 每个连接到总线的器件都可以通过唯一的地址。 真正的多主机总线,支持冲
[单片机]
<font color='red'>ARM</font>之I2C总线协议介绍
适用于工业和物联网边缘的更安全更高效的i.MX处理器
在嵌入式世界大会2021上,恩智浦(NXP)发布了先进的i.MX 9应用处理器,该处理器在工业和物联网边缘的安全性,能效和可扩展性方面具有改进的性能。对其产品组合的更新通过集成EdgeLock安全区域来增强边缘处理器的安全性,EdgeLock安全区域是一个独立的,自我管理的芯片上的安全子系统,可简化尖端安全技术的部署。 在与EEWeb的采访中,恩智浦边缘处理业务和技术战略负责人Gowri Chindalore,恩智浦产品管理总监Amanda McGregor和边缘处理高级架构师Mohit Arora强调了EdgeVerse产品组合的扩展及其跨界应用,并通过Energy Flex架构最大化效率。 Chindalore表示:“
[嵌入式]
适用于工业和物联网边缘的更安全更高效的i.MX处理器
老查的ARM学习笔记:chapter-1(按键驱动程序设计)
前面的博客中,有一篇通过按键玩中断的文章,不过那里的程序是裸机,也就是没有加系统下设计的程序,也就和在单片机中设计的程序一样比较简单。现在我们来看看按键的驱动程序在linux系统下是如何设计的。 1 混杂设备驱动模型** 1 混杂设备驱动描述 首先我们先来了解一下什么是混杂设备驱动模型。混杂设备其实是字符设备中的一种,主设备号是10,次设备号不同的设备称为混杂设备,在linux中,用struct miscdevice来描述一个混杂设备,从内核源码中复制过来结构原型为 struct miscdevice { int minor; /*次设备号*/ const char *name; /*设备名*/
[单片机]
老查的<font color='red'>ARM</font>学习笔记:chapter-1(按键驱动程序设计)
采用Cortex-M原型系统建立Cortex-M3 DesignStart原型
ARM最近刚刚宣布了对DesignStart项目的升级,加入了ARM Cortex-M3处理器。现在,可以通过DesignStart Eval即时、免费地获取相关IP,对基于Cortex-M0或者Cortex-M3处理器的定制化SoC进行评估、设计和原型开发。 原型设计的重要性常常被忽视,我希望通过本文以更多的细节阐述原型开发的重要性以及Cortex-M原型系统(MPS2+)如何帮助你方便地开始对你自己的设计进行评估和原型开发。 DesignStart不仅仅有处理器IP。DesignStart Eval和Designstart Pro包括处理器IP、一个参考子系统、以及免费的在线社区支持。此外,还提供来自ARM和ARM合作
[单片机]
采用Cortex-M原型<font color='red'>系统</font>建立Cortex-M3 DesignStart原型
ARM微处理器上实现Rijndael加密算法
  引 言   2000年10月2日,美国国家标准局NIST宣布,比利时密码学家Joat Daemen和Vincent Rijmen设计的“RijndaeI算法”以安全性好、运算速度快、存储要求低、灵活性强最终当选AES。该算法对目前的各种威胁是免疫的。这标志着信息技术有了新的安全工具,为计算机网络和电子商务的发展提供了强有力的保障。   在当前数字信息技术和网络技术高速发展的后PC时代,嵌入式系统技术已经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术以及人们的日常生活等方方面面中,成为目前最热门的技术之一。   本文使用北京博创兴业科技有限公司研制的UP-NETARM300嵌入式开发板,在ARM SD
[单片机]
在<font color='red'>ARM</font>微处理器上实现Rijndael加密算法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved