微波EDA网,见证研发工程师的成长!
首页 > 微波射频 > 射频工程师文库 > 基于MCF52235 的RFID 通用开发平台设计

基于MCF52235 的RFID 通用开发平台设计

时间:06-12 来源:3721RD 点击:

  //==================================

  SPI 构件接口函数说明如下所示:

  //==================================

  uint8 hw_spi_init (uint8 spiNo,uint8 master);//SPI 初始化

  uint8 hw_spi_send (uint8 spiNo,uint8 data [],uint8 len);//SPI 发送数据

  uint8 hw_spi_re(uint8 spiNo,uint8 data[]); //SPI接收数据

  uint8 hw_spi_enable_re_int (uint8 spiNo); //开SPI 接收中断

  uint8 hw_spi_disable_re_int (uint8 spiNo); //关SPI 接收中断

  //==================================

  GPIO 构件接口函数说明如下所示:

  //==================================

  uint8 hw_gpio_init (uint8 port,uint8 pin,uint8dir,uint8 state);//初始化端口为GPIO 引脚

  uint8 hw_gpio_set (uint8 port,uint8 pin, uint8state); //设置指定引脚状态

  uint8 hw_gpio_get(uint8 port,uint8 pin);//获取指定引脚状态

  uint8 hw_gpio_reverse(uint8 port,uint8 pin);//反转指定引脚状态

  //==================================

  高层构件包括三个部分:FreeRTOS 操作系统在MCF52235 上的移植[13-14],Shell 的实现,网络命令和信息的封装。 将FreeRTOS 移植到MCF52235主要是实现3 个底层汇编级的支持函数,tk_frame(task *tk, int (*entry)(), int arg)函数为tk 进程创建堆栈帧保存进程的各种状态;tk_switch (task *tk)函数用于把当前进程切换到tk 进程;tk_getsp()函数返回当前堆栈指针。 另外,在FreeRTOS 中运行一个Shell 进程,进程函数为int keyboard (int param),可调试或查看系统状态信息,比如各个进程的运行状态、ARP 表、IP 地址、MAC 地址、连接状态等。
Shell 实现的效果如图5 所示。  

  在实际应用中,通常一台PC 主机管理若干读卡器, 一个读卡器可以为若干PC 主机服务。 每个PC 主机和读卡器都具有不同的IP 地址, 一台PC主机可以控制读写器1 读写每个Type A 卡的某个块数据, 还可以同时控制读写器2 读写每个TypeA 卡的另一个块数据, 或者请求读取Type B 卡的UID, 整个网络关系比较复杂。 因此采用将主机发送的命令、网络信息、卡信息封装在如下所示的若干个数据结构中。

  //==================================

  struct invite_info //PC 主机发送的读卡请求

  { char del_or_add; //主机离开或加入

  uint8 type; //卡的类型

  uint8 block; //要访问的数据块

  uint8 password[6]; //块的密码

  };

  struct ip_arrays_B //读Type B 卡信息

  { ip_addr ipaddress; //IP 地址

  int port; //UDP 端口号

  };

  struct send_data_type //发送到主机的数据

  { uint8 sn[4]; //序列号

  uint8 block; //块号

  uint8 data[16]; //16 个字节块数据

  uint8 ret; //返回值

  };

  struct IC_ope //用于消费用途的RFID 应用

  {

  uint8 block; //总的金额数

  float fsub; //每次刷卡扣除的金额数量

  uint8 *pass;

  };

  struct record_info //记录卡信息

  { //此块引用计数,0 表示没有请求读这块数据

  uint8 ref; //引用计数

  uint8 block; //块号

  uint8 password[6]; //块的访问密码

  };

  struct ip_arrays_A //读Type A 卡信息

  { ip_addr ipaddress; //IP 地址

  int port; // UDP 端口号

  uint8 block [num_of_rf_structs]; //这个UDP连接要读取的所有块

  };

  struct net_cmd //发送到板子的命令

  { uint8 lenth; //请求数据长度

  uint8 cmdope; //操作码

  uint8 data[1]; //数据

  };//=================================

  3 RFID 通用开发平台应用

  基于此平台文中开发了学生机房上机刷卡系统。 在每个机房安装一台读卡器,PC 主机的数据库中存储了每个机房的课表、任课教师和学生的信息。 学生持卡到各个机房的读卡器上刷卡,读卡器将读到的信息通过网络传输到PC 主机上,统计学生人数和上、下课时间等情况, 相关信息显示在LCD 上并进行语音提示。 PC 端软件实现了网络通信功能和学生机房上机刷卡管理系统。 网络通信通过CManagerDlg:: m_skInfo 和CManagerDlg::

  m_skCmd 这2 个sokcet 接口完成。 学生机房上机刷卡管理系统开发软件采用VC++2012 和SQLServer 2012 关系型数据库管理系统。 学生机房上机刷卡管理系统界面如图6 所示。

  4 结语

现有RFID 系统开发基本是根据具体应用需求进行单独设计的。 而这些不同的应用系统在软、硬件部分具有很大的重复性,为提高软、硬件的可重用性,文中通过分析RFID 射频识别系统一般模型,提出

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top