一 消费机系统概述
本设计的目的是开发出以单片机为核心的基于I2C总线的脱网版计时消费机,能在脱离网络和服务器的情况下独立运行,同时实现计时消费的功能。系统由控制器、读写器、EEPROM、IC卡等组成。单片机STC89C58控制整个系统,并实现对外围芯片的初始化和数据传送。考虑到该系统需要大容量数据存储,这里采用了ATMEL公司生产的24C256 EEPROM存储器。PCF8563是PHILIPS公司生产的低功耗的实时时钟/日历芯片,作用是产生年、月、日、时、分、秒等,用来记录采集数据的时间。
系统按13.56MHz的工作频率以半双工方式在读写器与IC卡之间双向传递数据。读写器将要发送的信号编码后加载在频率为13.56MHz的载波信号上经天线向外发送,进入读写器工作区域的IC卡接收此脉冲信号。一方面卡内芯片中的射频接口模块由此信号获得电源电压、复位信号、时钟信号;另一方面卡内芯片中的有关电路对此信号进行调制、解码、解密,然后对命令请求、密码和权限等进行判断。若为读命令,控制逻辑电路从存储器中读取有关信息,经加密、编码、调制后由卡内天线发送给读写器;若为修改信息的写命令,有关控制逻辑引起内部电荷泵提升工作电压,提供擦写EEPROM时所需的高压;以便对EEPROM中的内容进行改写;若经判断其对应的密码和权限不符,则返回出错信息。
二 硬件电路的设计
消费机硬件结构框图如图1所示,微控制器STC89C58负责整个窗口机的监控。RC50为MIFARE卡读写器模块,在MCU控制下,完成对卡片的非接触式读写等多种操作。PCF8563是一款低功耗的实时时钟/日历芯片,实现时钟模块的计时功能。EEPROM模块用于在脱网消费时保存大量的消费记录。
图1 消费机硬件结构框图
在对各模块进行操作的时候由电源模块向其供电,提供电压为+5V。EEPROM模块和读写器模块在没有进行操作的时候不需要外加电源,而时钟模块则需要外加电源供给能量,以保持时钟的持续和正确。各模块是通过I2C总线进行数据交换的,I2C总线最主要的优点是简单性和有效性。它由简单的双向通讯的两芯接口为集成电路之间提供有效的控制。一条线路用来传输时钟,另外一条用来传输数据。通过一个带有缓冲区的接口,数据可以被I2C发送或接收。控制和状态信息则通过一套内存映射寄存器来传送。
图2 IC卡读写器硬件电路
本文利用单片机的通用I/O口(P1.7和P1.6)来虚拟I2C总线接口,为了在使用虚拟I2C总线时有一个通用的界面,可设计出一个主方式下的虚拟I2C总线软件包,给出归一化操作指令即可。进行数据传输时则靠识别芯片地址来选择操作芯片。
1 IC卡读写器部分
IC卡读写器的电路如图2所示,由于采用了PHILIPS公司高集成度的TYPE A读写器芯片MF RC500,天线驱动电路仅需很少的外围元件,有效距离可达10cm。每次上电或硬启动后,芯片会复原其并行接口模式并检测当前的MCU接口类型,MF RC500可支持不同的微控制器接口,一个智能的自动检测逻辑可以自动适应系统总线的并行接口,使用信号NCS选择芯片。要使用独立的地址和数据总线与微控制器相连,必须将ALE引脚连接到DVDD。本设计使用复用的地址和数据总线与微控制器接口,所以必须将MF RC500的ALE引脚连接到微控制器的ALE信号。
2 存储器部分
计时消费机中存储的消费数据要求掉电不丢失,为此选用了ATMEL公司的24C256 EEPROM。24C256是一个256kb的支持I2C总线数据传送协议的串行CMOS EEPROM,可编程自定时写周期(包括自动擦除时间不超过10ms,典型时间为5ms),其地址分配如表1所示。
图3 数据信息写入流程图
串行EEPROM的数据读取正确与否和系统软件的设计紧密相关。系统软件要根据硬件电路确定数据传输位;建立数据区地址指针,按照串行EEPROM的工作时序设定读、写控制主程序。主程序分为以下两个部分。
1)数据端口初始化
根据串行EEPROM数据存取的特点,设立数据端口的工作方式,建立相应的数据指针DPTR,为地址和数据信息的存、取建立各自的子程序,为后一步数据信息的存、取做准备。
2)数据信息写入/读取
如图3所示,首先设立数据源的入口地址DPTP,然后调用串行EEPROM入口地址服务子程序,选通EEPROM数据区,启动读/写程序传输数据。
3 计时模块
计时模块的电路如图4所示。PCF8563是低功耗的CMOS 实时时钟/日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过I2C总线接口串行传递。在给PCF8563送入初始的日历信息后,PCF8563中的日历就会自动运行。由于PCF8563为实时时钟芯片,在没有外接电源时仍然要求连续供电,以保持时间的准确无误。因此,这部分电路还加了掉电保护功能,在主供电系统意外断电时,即Vcc为0V时,D1截止,3.6V备用电源通过D2继续给PCF8563供电,保证其正常运行。
图4 时钟电路
4 显示模块
消费机显示部分包括前后面板都有8位LED数码管,全部由74LS164驱动。显示部分采用的是普通的串行静态显示,由STC89C58的P1.6和P1.7构成模拟I2C串行口,通过P89LPC932将驱动信号分别送往前后显示面板。
5 数据通信部分
每台消费机在投入使用前,都可通过串口根据实际情况对消费机进行读写器密钥、消费机号和基准时间等参数进行设置。设置成功后,参数保存在消费机的EEPROM中。
本设计中采用RS232串行通信方式进行数据的传送。数据的采集存储由单片机系统完成,而数据的处理由PC完成,即将PC与单片机组成上位机、下位机分布式控件系统。下位单片机作为前端处理机,深入到现场,负责采集各种数据并记录,在需要时将各种数据传到上位机。
三 结束语
本文为一卡通系统脱网版提出了模块划分的蓝本,对一卡通系统中脱网版按键、按次等消费机的设计有指导意义,可以借鉴和参考。
这一系统采用了应用开发较为成熟的单片机STC89C58,其他芯片也均是市场上的主流产品,价格比较合理,因此整个系统的性价比较高。此外,本系统还具有以下优势:采用射频感应技术,可靠性高、保密性高、快速方便、使用寿命长;采用I2C总线简化了硬件电路结构;采用电子钱包的方法实现了联网与脱网消费机的并行运行;采用大容量的EEPROM,具有掉电后长期保存功能;具有自动识别非法卡并报警的功能;数据采集灵活。
数据通信方面,本系统采用的是RS232串口通信,在USB接口通信已经广泛使用的今天,根据应用需要还可以再增加USB接口,以大大提高传输速率。