专注工科类创新实验教学、科研开发20余年!方案覆盖嵌入式、IOT、AI、机器人、新能源等领域。
 
  当前位置:首页 >> 新闻动态 >> 产品资讯
 
公司新闻
 
培训与竞赛
 
行业新闻
产品资讯

点击排行(TOP 10)
  创新设计方案:手机便携式
  首届NAO机器人在线程序设计
  Altera官方视频教程
  中国EDA助力移动互联发展
  嵌入式微处理器选型的考虑
  在京高校专利申请去年首破
  无线充电时代即将普及
  英特尔挑战ARM移动市场
  日本三大电子巨头走下神坛
  德州仪器不再重点投资移动
  华为“网络天线”,颠覆传
 
ARM的双频RFID读写系统
     革新科技  来源:革新科技 日期:2011/5/20 8:46:13 阅读:3233 次
- 返回 -
 

 系统设计

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

  整个系统由ARM 嵌入式系统(包括S3C44B0X,SDRAM 存储器和FLASH 存储器),低频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连接。

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

   系统的软件设计

   RFID 模块操作

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

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

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

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

 防冲突

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

  选择卡片

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

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

  密钥装载和验证密码

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

   LCD 显示软件设计

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

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

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

   键盘和指示灯的软件设计

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

   USB 接口通信

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

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


 
 
   
销售电话:010-82608898     技术支持:82608898-800    Email:sales@gexin.com.cn
Copyright © 2012-2024 版权所有:北京革新创展科技有限公司   京ICP备20004067号-1