基于MCF52235 的RFID 通用开发平台设计
节
//==================================
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 射频识别系统一般模型,提出
- 可的冷链物流周转箱的RFID解决方案(09-11)
- RFID在生产线自动化的应用(12-22)
- IBM中国银行业RFID VIP识别解决方案(01-10)
- 基于RFID的高速公路监控系统的解决方案(12-07)
- 大众汽车厂游乐园的RFID应用(10-06)
- RFID识别技术的企业生产线管理解决方案(02-22)