APP下载

手机音频读卡器在燃气缴费领域的应用*

2017-11-09

单片机与嵌入式系统应用 2017年10期
关键词:读卡器IC卡校验

, , , ,

(1.北京智芯微电子科技有限公司 国家电网公司重点实验室 电力芯片设计分析实验室,北京100192; 2.北京智芯微电子科技有限公司 北京市电力高可靠性集成电路设计工程技术研究中心)

手机音频读卡器在燃气缴费领域的应用*

姜帆1,2,郭飞1,2,杜君1,2,王于波1,2,庞振江1,2

(1.北京智芯微电子科技有限公司 国家电网公司重点实验室 电力芯片设计分析实验室,北京100192; 2.北京智芯微电子科技有限公司 北京市电力高可靠性集成电路设计工程技术研究中心)

基于预付费燃气表的IC卡查询与充值,提出一种手机音频读卡器解决方案,采用模块化设计思想。在采用的技术方案中创造性地融入曼彻斯特(Manchester Encoding)编解码技术,有效地克服了手机音频通信可靠性、适配性差的缺点。文中对项目研究的技术原理和读卡器的软硬件系统架构做了详细描述,并针对其中的一些技术难点提出解决思路。本项目达到了客户要求,技术上得到了积累和提高。

手机音频;读卡器;曼彻斯特编码;IC卡

引 言

近几年来市面上出现了很多以智能手机为核心的读卡器,如拉卡拉开发的一系列刷卡器,有蓝牙接口的、有手机音频接口的,还有其他厂家开发的,如乐刷、盒子支付等。这些读卡器都是应用在金融领域,主要针对的是磁条卡、芯片卡的转账、查询、刷单等,本文根据燃气缴费领域的需求,采用不同于其他厂家的音频口通信技术,研发了一款手机音频读卡器,该读卡器具有成本低、使用方便、即插即用的特点,使用该读卡器和智能手机可以实现对家用燃气表的购气充值。

1 基于手机音频口的音频读卡器

1.1 研究背景

在我们的日常生活中,每家每户都有许许多多的卡,如电卡、水卡、燃气卡、银行卡等。目前除银行卡外,很多行业的IC卡在用户需要充值或查询时,都需要去柜台或者自助值机,耗费了很多时间成本,浪费了很多社会资源,特别是遇到意外的突发的情况,比如在寒冷的冬天,夜里突然燃气没有了,而营业厅又比较远,或者已经关门,这时用于采暖的壁挂炉停止了工作,其结果可想而知。为方便群众购气,某燃气公司委托北京智芯微电子科技有限公司研发一款音频读卡器,要求该读卡器支持指定的燃气IC卡,提供支持Android和iOS的第三方lib库,音频口通信能适配市面主流手机。

1.2 系统架构与组成

燃气购气系统采用多层架构,有效分离应用、服务、数据[1],主要由销售管理数据库、销售管理应用服务器、系统接口、读卡器、表计等,其中销售管理分为客户管理、抄表管理、计费管理、收费管理、卡管理、欠费催缴、表具管理七类;系统接口包括设备接口、银行接口、财务系统接口和ERP接口;营业厅的终端读卡器上应能实现IC卡开卡、购气、冲正、补卡等业务;燃气表主要实现购气、计量、查询、提示和开关阀等功能[2]。本文所述便携式读卡器主要针对终端用户的购气应用,需要综合考虑兼容燃气行业常用的IC(如AT88SC102卡、SLE4442卡、CPU卡),按照统一的IC卡读写卡接口规范,编写支持Android和iOS的第三方lib库,供手机APP调用。图1是燃气购气移动终端系统的架构。

图1 系统架构与组成

2 读卡器设计

2.1 读卡器硬件设计

本读卡器的基本功能需求如下:① 智能卡接口为接触式IC卡接口,并符合ISO / IEC 7816-3标准;② 支持指定IC卡(AT88SC102,SLE4442卡,CPU卡),CPU卡支持T=0协议;③ 支持手机音频口通信,兼容音频口的国家和国际标准;④ 支持USB口充电和升级;⑤ 内置可充电锂电池,容量不小于200 mAh;⑥ Flash空间不小于128 KB,SRAM不小于48 KB;⑦ 带充电状态指示和通信状态指示。

基于以上功能需求,本读卡器选择ST公司的32位超低功耗MCU STM32L151C8T6作为硬件系统的核心MCU,该MCU硬件资源丰富,包含128 KB的Flash和16 KB的SRAM,空间足够用。MCU集成3路USART接口,其中任何一路都可复用为ISO7816主接口,支持与ISO/IEC 7816-3 标准T=0 和T=1 传输协议兼容的智能卡设备,发送和接收各自拥有4字节的FIFO数据缓冲区,支持硬件触点激活序列、硬件热复位时序和触点释放时序,更能自动监测卡移出序列。MCU集成USB2.0全速设备接口模块,可以实现USB通信,此外还支持 I2C总线、SPI、GPIO等通用接口[3]。

对于本项目,硬件设计的难点在于音频接口电路,手机音频信号由左声道、右声道、MIC和GND等4个信号组成,其中左右声道为音频信号输出信道,MIC信道为音频输入信道。对于手机的左右声道,最大输出信号频率通常不超过20 kHz。对于MIC信号,手机内部模数转换器(ADC)对MIC信号的采样频率最大为44.1 kHz。根据手机信道的特点,本设计使用手机的左声道作为手机发送数据给读写器的信道, MIC信道作为读卡器给手机的数据的信道,不过手机音频口有2种接口标准,一个是OMTP(开放移动终端平台)标准,国内的手机产品都需要支持OMPT标准;另一个是CTIA(移动通信行业协会)标准,国际市场上的手机大部分会使用该标准[4]。这2个标准的区别是MIC信号和GND的顺序不一样,因此设计上需要做MIC和GND的自适应电路,自适应的原理是利用MOS管、电阻等分立元件搭建一种电路,利用MOS管的开关特性,无论音频口遵循哪种标准,总能正确识别到MIC和GND信号。手机耳机接头定义如图2所示。

图2 手机耳机接头定义

此外手机与读卡器间的上下行通路设计是一个关键,读卡器接收手机的信号来自于手机的左声道,本设计采用的原理是手机左声道把待输出数据按照UART协议编码,一个起始位、8个数据位、无校验位、1个停止位的方式编码,通信速率为4 800 bps,这样在手机左声道输出一个近似符合UART协议的模拟信号,信号经过读卡器接收电路的隔直、滤波、放大、比较等,接入STM32L151 MCU的一个UART接口,在UART的接收中断处理函数中,对接收的数据进行解析。

读卡器发送数据到手机的信号通路涉及到STM32L151的GPIO口通信、定时器以及信号的曼彻斯特(Manchester Encoding)编码,以下简称Manchester编码,具体是把待发送数据转换为Manchester编码,然后在MCU的timer配合下,把Manchester编码转换成GPIO口的高低电平变化,从而在手机的MIC端产生高低变化的信号,手机内部则用高速率采样的办法,录到MIC的波形,通过波形分析获取数据。图3是读卡器硬件总体设计框图。

图3 读卡器硬件总体设计框图

2.2 读卡器软件设计

根据音频读卡器的功能需求,读卡器软件部分需要完成的主要功能有IC卡读写和音频口通信。对于IC卡,燃气表常用的有AT88SC102、SLE4442、CPU三种卡,客户要求必须兼容。读卡器软件部分主要完成,音频数据的收发处理以及根据业务需要操作IC卡。

2.2.1 音频数据的收发处理

读卡器接收数据,需要编写UART接收中断处理函数,在接收中断里处理接收的数据包,当完整接收完一包数据后,置接收成功标志flag=1,在mian()函数里检测flag是否置位。如置位,则按协议解析数据包并清标志flag=0。报文格式如下所示:

数据包帧头02地址(固定00)长度字命令字数据域校验数据包帧尾03

其中,长度字指明从长度字到校验字的字节数;命令字为本条命令的含义;数据域为该条命令的内容,此项可以为空;校验字为从模块地址到数据域最后一字节的逐字节累加值,即算数和。

读卡器发送数据,数据需要编辑成Manchester编码,Manchester编码采用的是沿跳变的方式来表示二进制的0和1,高电平向低电平跳变表示二进制1,反之低电平向高电平跳变表示二进制0,Manchester编码解决了数据传输没有时钟的问题,数据传输误码率比较小,在码元的传输速率方面有很大的优势[4]。

本项目Manchester编码规定每一帧(指每一字节)信息由数据同步、数据和校验位组成[5],其中数据同步低电平在先,高电平在后,高低电平各为1.5T,每个字节数据(16位)前都有一个数据同步,T为曼彻斯特编码位传输的位时钟周期,数据位共有16位,即1个字节转为Manchester编码是16位,高位在前,低位在后。

每帧的最后一位为奇校验位。每一个字节经过曼彻斯特编码后,在传输时是20T,即20个时钟传输一个字节, 在实际应用时,为减少MIC信道的波形畸变对数据的影响,在一个数据包(若干个字节)前加入位速率同步时钟,由于手机内部的最大音频采样速率为44.1 kHz,所以位速率同步时钟采用4.41 kHz,即一个时钟周期226 μs,手机10倍于位速率时钟,每个周期可以采样10个点,这样能比较精确地得到一个周期的波形。

手机数据解析时,通过位同步时钟的周期与数量关系,可取到数据同步,进而按照协议解析后面的有用数据,并通过校验来验证数据的正确性。单字节数据的Manchester编码格式如下所示:

数据同步数据(16bit)校验位

图4是示波器上看到的数据610C的Manchester编码波形示例。

图4 数据610C的Manchester编码波形示例

2.2.2 操作IC卡

读卡器并不知道会插入哪种IC卡,因此读卡器需要做卡类型识别, 识别办法是手机发送对卡初始化指令,读卡器收到指令后,对卡进行冷复位,根据IC卡返回的ATR值进行判断。注意,读卡器接收到来自手机的数据,采用CRC16校验,如校验失败则返错误代码给手机APP,卡类型识别约定如表1所列。

表1 IC卡类型判断方法

识别到卡类型后,根据卡的类型不同程序可以进入到不同IC卡的操作分支,本项目涉及到的对卡操作的主要功能函数有卡身份识别、读卡、写卡等。其中,SLE4442卡属于符合ISO-7816标准的同步型IC卡[6],读卡不需要核对用户密码,写卡需要核对用户密码。AT88SC102卡有密钥核对次数限制,读/写IC卡需要确认密钥[7], CPU卡安全性最高,采用明文+MAC校验方式,且读卡器内置3des软算法以支持明文+MAC校验方式[8]。根据每种IC卡的使用特性及厂家要求,分别作了对应处理,对个别厂家的诸如密钥算法等作了逻辑屏蔽处理,并通过约定的私有协议进行动态函数的调用。表2列举了SLE4442卡用到的几个主要功能函数,图5是音频读卡器读写IC卡程序流程图。

表2 读卡器音频口通信API接口函数

图5 音频读卡器读写IC卡程序流程图

3 手机lib库设计

为方便燃气公司的手机APP调用读卡器的动态库,本读卡器根据需求,分别设计可支持Android系统的第三方jar包和支持iOS系统的OCX类库。下文以Android为例,简要介绍本读卡器的第三方lib库。本项目Android第三方lib库是在jdk1.6+Eclipse的集成开发环境下开发的,该开发环境已经集成ADT(Android Development Tools)插件和Android SDK[9]。对于本项目的接口lib库的调试,Android代码规划为4个部分,分别如下:

① com.archermind.activity:该部分是自测用的界面和工具类,给客户的jar包不需要添加该包内容。

② com.archermind.utils:提供给客户的jar包(即lib库),内有需要的工具类和卡调试逻辑实现类。

③ com.archermind.vender:表厂的个性化处理接口。

④ com.example.testaudio:音频通信底层代码,处理音频数据的收发。

lib库作为手机APP与读卡器之间的一个桥梁,主要功能是接受APP的调用以及音频数据的收发处理,数据收发按照约定的协议规范进行,并形成接口API供APP调用,下面是本项目SLE4442卡的API示例。

图6 APP购气 业务流程

① public static intReset_GasCard(int cardtype){ },初始化,获取卡类型。

② public staticRead_GasCard_Data(int cardtype,byte[] data){ },读卡方法。

③ public static intWrite_GasCard_Data(int cardtype,byte[] data){ },写卡方法。

本项目经过系统测试,能够满足客户需求,并最终通过验收和成功上线。主要业务流程如图6所示。

结 语

[1] 许卓,赵山,黄有朋,等.智能终端音频读卡器在移动智能缴费系统的应用与研究[J].电测与仪表,2015(7):156-169.

[2] 张正兴,徐超,李正平.预付费燃气智能管理系统设计与实现[J].工业控制计算机,2008(7).

[3] 邓金伟,曹荀.基于STM32的智能燃气表方案设计[J].天然气与石油,2015(11).

[4] 李小云.手机音频口通信技术研究与实现[D].武汉:华中科技大学,2015.

[5] 李会银.用AT89C2051实现的曼彻斯特编码译码器及应用[J].山东:石油仪器,1999,13(5):5-8.

[6] 孔为民,范焱,武建德.SLE4442卡在单片机系统中的应用[J].电脑开发与应用,2001(8).

[7] 毛占根.新型IC卡AT88SC101/102及其应用[J].电子技术,1996(10).

[8] 马涛,高宇康,杨术明.基于CPU卡的燃气表控制系统设计[J].河北大学学报:自然科学版,2015(4).

[9] 王会林.嵌入式IOS和Android应用开发探讨 [J].信息与电脑:理论版,2012(11).

[10] 姜超.基于IOS的智能家居移动终端开发[J].电子技术与软件工程,2016(4).

ApplicationofMobilePhoneAudioCardReaderinGasPaymentField

JiangFan1,2,GuoFei1,2,DuJun1,2,WangYubo1,2,PangZhenjiang1,2

(1.State Grid Key Laboratory of Power Industrial Chip Design and Analysis Technology,Beijing Smart-chip Microelectronics Technology Co.,Ltd.,Beijing 100192,China;2.Beijing Engineering Research Center of High-reliability IC with Power Industrial Grade,Beijing Smart-Chip Microelectronics Technology Co., Ltd.)

Based on the inquiry and recharge of IC card for the prepayment gas meter,an audio reader solution for mobile phone is proposed.The project adopts the modular design ideas.In addition,the designer creatively integrates Manchester encoding and decoding technology into the design.It solves the shortcomings of the mobile phone audio communication reliability and the poor adaptability.The hardware and software system architecture and the principle of reading the project of the card reader are described in detail,and for some of these technical difficulties,the designer proposes the solutions.The project meets the customer requirements.

mobile audio;card reader;Manchester encoding;IC card

国家自然科学基金资助项目(60234030);国家973计划资助项目(2003CB716202)。

TM933

A

2017-07-04)

猜你喜欢

读卡器IC卡校验
工商业IC卡控制器改造为物联网控制器实践
与淘汰命运抗争 看懂笔记本的读卡器
在用电梯加装外接式IC卡运行控制系统设计改进
炉温均匀性校验在铸锻企业的应用
基于EMV非接通信规范的非接触读卡器设计
为二维码识别的献礼之作——评测平治二维码门禁读卡器
MATLAB实现组态王中TCP/IP读卡器监控方法
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法
锅炉安全阀在线校验不确定度评定