打造国内最大的IC交易平台
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
基于S3C2410A和嵌入式Linux的税控收款机磁卡接口设计
类别:网文精粹  
 
The Interface Design of Magcard in Fiscal Cash Register Based on ARM

摘要:针对ARM CPU和税控收款机的特点,设计开发了用以实现消费交易功能的磁卡接口平台。给出了S3C2410A与磁卡的硬件接口电路连接,规划了驱动状态转换图,对核心驱动函数功能进行了细致描述。正向刷卡和反向刷卡的良好实现,充分说明了该设计方案的正确可行性。

关键词:ARM; 磁卡; 税控收款机

Abstract:The platform of magcard that realizes the function of trade is designed and realized in this paper, as to ARM CPU and the fiscal cash register. The connection of S3C2410A and magic card is introduced. At the same time we give and explain the every driving state. Finally we give the description of main driving functions. The stable running of trade remarks the correct and feasible design for hardware and the perfectible function for software.

Key Words:ARM; magcard; fiscal cash register

引言

税控收款机是指具有特定税控功能的电子收款机,所谓特定税控功能是指能够保证数据的正确生成、可靠存储、安全传输,并可实现税务管理和稽查等功能。税控收款机应具有多种付款方式选择、非交易支出收入、磁卡交易、退货、货币转换等功能。由于磁卡具有携带方便、使用方法简易、信息读出较容易、安全性能较好及制作成本较低等优势,因此常采用磁卡来实现消费交易功能。从整体上来看,磁卡仍具有相当强的竞争力,今后仍能在税控领域得到广泛应用。

1 磁卡硬件设计描述

1.1 磁卡阅读器工作原理

在物理设计上,本设计中磁卡阅读器与键盘、键盘锁是一体的。S3C2410A 内部没有自带的磁卡控制器,因此磁卡阅读器与系统的接口电路需要自行进行设计开发。

500)this.style.width=500;" border=0>

图1 磁卡工作过程

刷卡时磁卡以一定的速度通过装有线圈的工作磁头,磁卡的外部磁力线切割线圈,在线圈中产生感应电动势,从而传输了被记录的信号,该信号转换为数字信号后经系统接口传送给S3C2410A来进行处理。

1.2基于S3C2410A的磁卡接口

磁卡端口由一片74LS573芯片构成,74LS573芯片的控制信号由S3C2410A地址线的第6位、第7位和第8位及nGCS5经过74HC138译码产生,占用系统端口地址:vOUTPORT_BASE+0x08。74LS573的输入连接到磁卡阅读器用以接收从磁卡读出的信号。

500)this.style.width=500;" border=0>

图2 磁卡与S3C2410A CPU接口电路

CLS、CLK2、CLK3引脚连接于S3C2410A系统外部中断信号线。CLS线设置为双沿触发,CLS中断发生后,由软件读出磁卡端口状态,判断刚才发生的是上升跳变还是下降跳变。而在有的系统中,先将CLS线设置为下降沿触发,触发中断后启动读数据动作,并将CLS设置为上升沿触发,再次发生CLS中断时结束读数据动作;但是,在S3C2410系统中,不能在中断处理过程中改变中断触发模式,所以仍采用中断后查询状态的方法。CLK2和CLK3中断则设置为下降沿触发模式。

2驱动程序描述部分

2.1信号时序图

磁卡是只读外设,只发出信号,不接收命令。

500)this.style.width=500;" border=0>

图3 信号时序图

CLS:低电平有效。下降沿表示信号传输开始,上升沿表示信号传输结束。

CLKn:第n条磁轨的时钟线。

DTAn:第n条磁轨的数据线。时钟CLKn下降沿表示DTAn有效。

一般,应用于银行系统的磁卡上的磁带有3个磁道,分别为Track1,Track2 及Track3,每个Track都记录着不同的信息,这些信息有着不同的应用。由于少有支持1轨道的磁卡,所以硬件电路包含1轨,驱动程序中没有处理。

根据操作者刷卡速度的快慢,CLK和DTA输出并不匀速。所以驱动程序在CLS有效期间,需要随时响应CLK的变化,及时读取DTA信号。而且,操作者可能反方向刷卡。此时DTA信号将按照反向次序出现。对于反向刷卡,驱动程序应能够正确识别。

2.2驱动程序状态图

500)this.style.width=500;" border=0>

图4 驱动状态转换图

(1)当CLS信号变低,则将各磁道的stripX_stat(状态字)设置为S_START,这时,当CLK中断到来时,将开始记录DTA信号线上的数据。

(2)当CLS信号由低变高后,将stripX_stat设置为S_PROC状态,并启动中断处理的BH(底半部)。方法是开一个时间为0的系统定时器,当下次系统Timer到来时,即进行处理。在S_PROC状态下,CLK中断将被忽略。

(3)BH处理中,解析数据,包括正向解析和反向解析。解析成功则设置stripX_stat为S_END,失败状态为S_EXCPT。

(4)在S_END状态下,如果任务队列中有等待的任务,则唤醒任务并返回结果。否则返回错误信息-EFAULT。

2.3 驱动核心实现

开发中嵌入式操作系统选用标准的Linux2.4内核版本,并进行一定程度的裁剪。磁卡设备路径:/dev/char/magcard;主设备号:238;次设备号:5;创建设备节点的命令行:mknod /dev/char/magcard c 238 5

根据上述各个状态之间的转换关系,可将驱动动作分解为如下:

(1) 读取CLS线的状态

当CLS中断发生时(该中断设置为双沿触发),还需要通过端口读取CLS线状态,以判断是发生了上升跳变还是下降跳变。

(2) 读取DTA2和DTA3信号值

这里采用负逻辑,即DTAn信号低电平表示1,高电平表示0

(3) 检查磁轨数据的奇偶校验

(4) 将一个字节转换为7816格式

(5) 转换磁轨2/3数据

将读取的数据转换为7816协议规定的数据格式。

(6) 中断BH(底半部)处理

500)this.style.width=500;" border=0>

图5 中断(底半部)处理流程

(7) CLS中断处理

(8) CLK中断处理

在Linux的驱动中主要就是借助这些原子动作实现上述状态关系之间的合理转换。

此外,磁卡驱动因该是一个异步程序,即不论上层应用程序处于何种操作状态,驱动均应该能够响应用户的刷卡操作。

3 结语

本文以S3C2410A和嵌入式Linux平台为基础,设计并实现了磁卡接口及驱动模块,该接口及驱动模块有效实现了税控收款机的磁卡交易功能。运行测试的DEMO程序,以同步模式和异步模式进行上层应用程序和底层驱动程序的测试,均实现了良好的信息交互,正向刷卡和反向刷卡,可读取到了正确的数据。系统测试表明,该接口的设计是合理可行的,并能够稳定运行,对常规磁卡具有较好的兼容性。

本文创新点:S3C2410A内部没有内嵌的专用磁卡控制器,因此在以S3C2410A为硬件平台的嵌入式税控收款机中增设磁卡模块,必须自行设计接口电路并进行相应的驱动开发,本文对此进行了很好的探索和尝试。由于磁卡本身及磁卡交易的诸多优点,因此该设计方案具有很重要的参考价值,在嵌入式税控领域有很好的应用前景