新闻中心

EEPW首页>嵌入式系统>设计应用> 基于ARM的嵌入式RIFD读写器设计

基于ARM的嵌入式RIFD读写器设计

作者: 时间:2012-11-26 来源:网络 收藏


  图 3 系统电源电路图

  4.3 SDRAM 接口电路

  在本系统中,采用了 HY57V641620 SDRAM 芯片,存储容量为 4 组×16M 位(8M 字节),工作电压为 3.3V,支持自动刷新和自刷新,16 位数据宽度。该芯片是通过行、列地址来定义存储器地址空间的,A11-A0 是列地址,A7-A0 是行地址,芯片管脚 BA0、BA1 用于片内 4 个存储器组的选择,将它与 ADDR21 和ADDR22 相连,利用地址高端进行相应的选择。

  在本系统中,采用该 JTAG 接口对程序进行调试和下载。标准的 JTAG 接口是 4 线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。

  5 读写器的软件设计

  根据 RFID 读写器的需要,移植了UC/OS-Ⅱ。嵌入式系统通信程序循环发送命令,检测是否有卡待读,如果接收到从 RFID 模块传来的卡号信息,则将卡号从信息中提取出来发送至 PC 机上的应用程序,由应用程序对它进行辨识。无论是与 RFID 模块的通信还是与 PC 机的通信,都采用了串口通信方式,所以首先应对串口进行设置。

  当嵌入式控制程序向 RFID 模块发送完读卡的相关命令后,就需要等待接收传回的卡号数据信息,由于系统串口采用的是查询方式,一旦发送端存在数据遗失,一直未能有数据传送回来,则程序将进入死循环,所以在程序中设计了自动终止功能。在系统设计中该部分子内容只接收来自 RFID模块的数据,故只考虑串口2。

  读卡程序如下:

  char recv_rfid()

  {

  char lm;

  int m,l;

  if(whichUart==1) // 串口 2,接收从 RFID 模块传来的数据

  {

  wh: for(;(!(rUTRSTAT1 0x1));){

  m=m+1; // 等待的同时对变量 m 计数

  if(m==500) // 判断 m 是否已累计到 500 还未接收到有效数据

  {err_flag=1; // 若是,则将标志 err_flag 置 1

  goto wh1; // 跳转到标记为 wh1 的程序处

  }}

  lm=RdURXH1(); // 若接收到有效数据,则将串口数据赋给变量 lm

  return(lm); // 返回 lm 的值

  }

  wh1: l=0; // 标记 wh1 处程序,实为跳出子程序

  }

  写卡的过程只需要将从应用程序处获取持卡人的相关信息然后发送至RFID 收发模块,由 RFID模块写入射频卡中,因为要验证写入信息是否正确,所以该程序还需要实现读取射频卡中的信息并返回给应用程序,由应用程序来判断写入信息的正误。持卡人的相关信息包括姓名、性别、年龄、工作单位、身份证号、发卡日期和发卡时间。

  6 结束语

  本文创新点:基于 S6700 的嵌入式的RIFD 读写器具有成本低廉,稳定性好等特点,完全支持ISO/ IEC15693 协议的全部命令,并且实现了同时识别,若设计出功率放大器,读写距离可以达到 1m左右,可满足门禁、校园一卡通等非高速识别应用场合的需要,在低成本应用领域有较广阔的应用空间。

参考文献:

[1].datasheethttp://www.dzsc.com/datasheet/_589522.html.
[2].PC datasheethttp://www.dzsc.com/datasheet/PC+_2043275.html.
[3].P89C58datasheethttp://www.dzsc.com/datasheet/P89C58_538826.html.
[4].P89C52 datasheethttp://www.dzsc.com/datasheet/P89C52+_538859.html.
[5].ES1datasheethttp://www.dzsc.com/datasheet/ES1_2344066.html.
[6].B1117 datasheethttp://www.dzsc.com/datasheet/B1117+_1097298.html.


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭