(1)电源。主要是为整个读写器提供稳定的5 V和3 V的电源电压。5 V电源通过USB口由上位机直接提供,可以作为读写器内微处理器、蜂鸣器电路、光电指示电路的电源。5 V电源电压通过LM1117-3.3芯片的转换后可以得到稳定的3.3 V的电平,为后续的SN74TVC3010接口电路、卡座提供电源电压。具体的电路如图2所示。
(2)数据交换。PC机与读写器的数据交换也即是与ATMEGA32单片机之间的数据交换,PC机通过上位机软件向单片机发送命令以实现对卡片的读写操作。本读卡器采用RS232串口与PC机进行通信,由于接口电平的不同,在读卡器内部应用MAX232芯片实现了不同电平间的转换[2]。
(3)读写器与CPU卡的通信。在读卡器上有一个常闭型接触卡座,这是读写器与CPU卡进行通信的接口,通过符合ISO 7816标准要求的8个触点实现与CPU卡的连接[3]。
SN74TVC3010为一双向电平转换器件,在转换过程中不需要方向控制信号。SN74TVC3010芯片包含由11个N 沟道导通晶体管组成的晶体管阵列,阵列中的所有晶体管都具有相同的电气特性,它们的门在内部连接在一起,因此,其中的任一个晶体管都可以作为参考晶体管,其他的作为导通晶体管,每个导通晶体管的低压端上的最大正电压限制为由参考晶体管设置的电压。由于晶体管是对称制造的,且I/O 信号是双向经过每个晶体管,所以每位的任一端口连线可用作低压端[4]。
本文设计的读写器中参考晶体管的一端通过1个200 kΩ电阻接5 V电源,另一端接3.3 V电源,如图3所示。当数据从卡座向单片机传输时,电压达到3.3 V,导通晶体管关闭,单片机管脚上的电平通过上拉电阻拉至5 V。当数据从单片机向卡座传输时,卡座端的电压被钳位在3.3 V左右。这样可准确地实现单片机与卡片之间的正常通信。
2 底层固件设计
本读写器固件编程采用C语言编写,编程环境为IAR Embedded Workbench,仿真及下载底层固件在AVR Studio 4中完成。固件的整体结构如图4所示。