来源:中国一卡通网 作者:不详 发布时间:2014-02-08 10:36:44 字体:[大 中 小]
摘 要:文中主要讨论射频卡实时消费记录系统的硬件和软件设计。硬件设计主要包括FPGA模块、蜂鸣器、FM1702SL模块、SD卡模块、液晶显示等模块。软件设计部分主要介绍射频读写模块的软件设计、SD卡的软件设计、FATFS文件系统移植、液晶显示和上位机对IC卡充值和加密操作。
2.3 SD卡的软件设计
在SOPC builder中对SPI核进行相应的配置后,通过写一些驱动函数就可以对外围的SD卡进行读写操作了,这些读写操作只是简单的对某个数据扇区进行读写操作,目的是测试底层通信是否正确。操作流程如图4所示。
SD卡的底层通信测试正确后,我们只是把SD卡当做一块大容量的Flash在用,为了让时序写入SD卡中的信息在PC中可以直接显示,我们就要移植文件系统。目前流行的FAT文件系统模块主要有:周立功公司的ZLG/FS、美国Micrium公司的UC/FS、SourceForge.net网站上发布的开源项目efsl(Embeded File System Library)以及日本电子爱好者设计并维护的FATFS文件系统模块。由于FATFS具有开源、免费、高效等特点,并且相对其他文件系统模块成熟一些。
在我们项目中用到了FatFS Module,FatFS Module是一个小型嵌入式系统下的FAT文件系统模块,其代码完全兼容ANSI C,而且与硬件平台无关,可以简单方便的移植到8051、PIC、AVR、SH、Z80、H8、ARM等MCU上,而不要做任何修改。FatFs有FatFs、Tiny-FatFs和Petit-Fat Fs 3个版本,FatFs适合比较大的RAM的设配;Ting-FatFs适合小RAM的系统,比如单片机,代价是更慢的读写速度和更少的API函数;Petit-FatFs适合8位处理器,占用极少的RAM,只对单文件进行读写操作。
各个层的作用:硬件抽象层完成NIOS2处理器对SD卡控制器相应寄存器的设置,把对SD卡的操作抽象为对相应的寄存器的操作;CRC校验层实现了CRC校验,对命令和响应使用CRC7校验,对数据采用CRC16校验;命令层定义了各种命令和响应,以向SD卡发送命令的函数为基础,实现了读写SD卡内部寄存器等功能;操作函数接口层向FatFS文件系统提供操作SD卡的函数,包括:SD卡初始化、读单块数据、读多块数据、写单块数据、写多块数据、获取SD卡信息等函数;Disk I/O层起到一个桥梁作用,提供的函数都是在SD卡的函数基础上编写的;FatFS Mod ule层为应用程序提供函数。
FatFS Moudle移植只需对diskio.c、ff.h和integer.h进行相应的修改。diskio.c需要对6个接口函数进行编程,Disk_initialize、Disk_statue、Disk_read、Disk_write、Disk_ioct1和Get_fattime;ff.h需要根据处理器的类型进行设置;integer.h需要对数据类型进行修改以匹配处理器。
2.4 射频卡实时消费记录系统软件设计
通过对上面各个模块的设计,结合各个模块的操作,我们就可以把各个模块整合成一个完整的系统。
3 上位机设计
上位机部分主要是对射频卡进行操作,图7为上位机的界面。
在我们项目中为了方便与上位机之间通信测试,在写FM1702SL的驱动函数时,设置默认密码为6个F,操作扇区为第1扇区(扇区号从0开始算起),对块1进行写操作。例如,对卡进行充值操作,前2个字节是任意的,第3个字节和第4个字节是金额,Ox****2710这个2710表示的十进制为10 000,对应的金额为100.00。
4 结束语
本系统采用FPGA为开发平台,对用户刷卡消费的记录写入到SD卡中,便于客户对消费记录的核对,具有实际商业价值。随着电子系统向SOC方向发展,采用FPGA的系统设计将得到更加广阔的发展。
推荐文章
论坛热帖