兼容常用卡种的读写接口模组设计与实现
Design and Implementation of Read-Write Interface Module Compatible with Common Cards
摘要: 本文围绕基于燃气行业售气系统的卡片兼容性问题进行了研究。本文对当前行业内存在的售气系统存在的问题进行深入的分析和探讨,针对当前系统中存在的问题,提出了对应的改进方法,最终制定出了一套行之有效的安全解决方案。针对卡片兼容性的问题,采用自研安全读卡器来进行多卡种的识别判断,最终实现一个读卡器自动识别多种卡片。最后,对所做的研究进行软硬件研发,对其所有的功能进行实现与测试。实验的结果验证了本文提出的设计方案在卡片的兼容性上能够满足设计需求。本文的研究工作,最终在燃气行业上对应的系统上得到了实现,本文的研究成果对燃气行业售气系统的架构具有一定的指导意义与对应的实际价值。
Abstract: This paper focuses on the card compatibility of gas sales system in gas industry. This paper deeply analyzes and discusses the problems existing in the current gas sales system in the industry, puts forward corresponding improvement methods for the problems existing in the current system, and finally formulates a set of effective safety solutions. Aiming at the problem of card compatibility, the self-developed security card reader is used to identify and judge multiple cards, and finally one card reader can automatically identify multiple cards. Finally, the software and hardware of the research are developed, and all its functions are realized and tested. The experimental results verify that the design scheme proposed in this paper can meet the design requirements in terms of card compatibility. The research work of this paper is finally realized in the corresponding system in the gas industry. The research results of this paper have certain guiding significance and corresponding practical value for the architecture of gas sales system in the gas industry.
文章引用:杨大为, 张伟. 兼容常用卡种的读写接口模组设计与实现[J]. 计算机科学与应用, 2021, 11(9): 2357-2368. https://doi.org/10.12677/CSA.2021.119241

1. 引言

当前系统的多卡种兼容性问题主要是有多种卡片,且每个卡片购气系统互相不兼容导致。因为燃气表具的安装不是一蹴而就的,是有一个过程,每年安装更换固定数量的表具,长时间的气表迭代造成了厂商数量的多样性,同一个厂商在不同阶段又有可能提供不同种类的表具,对应的问题就是系统中卡片的多样性。当前系统中的表具大致分为以下几种:不含任何智能化结构的纯机械式燃气表、使用存储卡的IC卡燃气表、使用逻辑加密卡的IC卡燃气表和使用CPU卡的智能燃气表,使用NB-IOT技术的物联网燃气表。

因为系统中不同的表具对应着不同种类的卡片,且购气系统由厂家提供,所以不同种类的卡片是在不同的购气系统中购气。比如厂商A提供的是使用AT24C0X卡片的表具,对应着使用A购气系统,且配备的A读卡器能适配AT24C0X卡片;厂商B提供的是使用SLE4442卡片的表具,对应着使用B购气系统,且配备的B读卡器能适配SLE4442卡片;厂商C提供的是使用CPU卡片的表具,对应着使用C购气系统,且配备的C读卡器能适配CPU卡片。不同的系统不能兼容不同的读卡器,不能兼容不同的卡片,不同的系统形成了一个个孤岛,为操作人员操作购气系统带来了较大的不便。

鉴于以前多卡种的情况,本文设计了一套有别于普通卡的一套体系,其中包括CPU卡技术规范,密钥管理系统,加密机使用规范,工具卡使用规范,表具开发规范等一系列的规范。本文只讨论CPU用户卡部分,别的部分不在本文的讨论范畴。规范规定的CPU卡为符合中国金融集成电路(IC)卡规范的卡片,由燃气公司定义卡片的卡文件结构、钱包文件大小、密钥的生成规则以及导入规则。卡片发行后,会提供给表商,表商根据对应的规范进行表具研发。规范由燃气公司制定,表商根据相同的规范进行研发,这样所有的表商提供给燃气公司的表具都是遵循统一规范,卡片只需使用一种卡片,即可适配所有表具,推广以后即可解决当前系统中多卡种并存的问题,以某燃气公司为例,有五家表商对新型的卡片规范进行适配,以后提供给燃气公司的表具都会适配最新的CPU卡。随着时间的推进,存量的IC卡表用户会越来越少,最终全部更换成CPU卡表。

上面提供了多卡种问题的解决方案,但是当前系统中还是几种卡片并存的局面,所以安全读卡器也是需要对当前系统中存量的IC卡进行适配。

2. 兼容模组的设计

兼容性模组是基于蓝牙读卡器实现的,是在蓝牙读卡器上设计一套流程来识别对应的卡片。需要识别的卡片根据当前系统中的卡片类别分为三种卡片,分别是AT24C0X卡、SLE4442卡、CPU卡。AT24C0X卡是第一代的IC卡,属于存储卡,此类IC卡的特点是存储数据方便,使用比较简单,价格比较便宜,但是安全性很低;SLE4442卡是第二代的IC卡,属于逻辑加密卡,相对于AT24C0X这种存储卡,此卡内部在存储区外增加了控制部分,在写存储区前需要做3字节的密码认证,安全性较高;CPU卡是最新一代的智能IC卡,相对于别的IC卡,安全性更高,内置了操作系统和对应的算法单元,具有存储容量大,处理能力强,信息存储安全等特点。三种卡片具体信息如表1所示。

Table 1. Comparison of three cards

表1. 三种卡片的对比

2.1. 兼容模组设计概述

兼容模组的设计是为了让安全读卡器识别三种卡片,当插入对应卡片时,读卡器自动判断出当前插入的卡片,并把卡片种类反馈到应用端。应用端接收到卡片种类的反馈后,再根据不同的卡片,进入不同的操作流程:当识别到AT24C0X卡,则发送AT24C0X的读写指令来进行操作,参考文献 [1] 和文献 [2];当识别到SLE4442卡,则发送SLE4442的读、写、密码校验、密码修改等指令来进行操作,参考文献 [3]、文献 [4] 和文献 [5];当识别到CPU卡,则发送CPU的读、写、圈存、消费等指令来进行操作;当识别到的卡片不是这几种卡片,则返回非法卡,至此,兼容模组设计完成,参考文献 [6] 和文献 [7]。

兼容模组设计如图1所示。此架构通过对不同种类卡片的判断,能够有效的解决卡片兼容性的问题。

Figure 1. Compatible module design

图1. 兼容模组设计

2.2. 存储卡在本系统中的应用

AT24C01卡是一种1K bit (128字节)的非逻辑加密卡,也就是行业内俗称的存储卡,片内无分区,无需任何密码认证操作即可以明文的方式对数据进行读写操作。AT24C02卡和AT24C01卡对比区别AT24C02卡的卡容量是AT24C01卡的一倍,为2K bit (256字节)。

该卡片使用的是I2C总线规范,I2C (Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。也可以简单地理解为I2C是微控制器与外围芯片的一种通讯协议。在不同的书籍中,可能会称为I2C,IIC,或者I方C,但是概念也是一样的,只是叫法不同。如图2所示I2C总线的总线控制逻辑。

Figure 2. I2C bus control logic

图2. I2C总线控制逻辑

此类卡片属于第一代卡片,单纯的存储卡,用户不需要做任何安全认证即可以任意的读写卡内数据,对于想要破解卡片的人员来说,没有任何技术难度,现在除了存量用户以外,新安装的表具不会再使用此种卡片,而存量用户也会逐渐的淘汰掉,但是现在还有不少的存量用户,所以在短时间内还是在系统中处于并行的状态。系统在设计的时候就得考虑此种卡片的兼容性问题。

2.3. 逻辑加密卡在本系统中的应用

SLE4442卡是一种2K bit (256字节)的逻辑加密卡,片内无分区,读操作无需密码认证即可读出明文,写操作需要进行3字节的密码认证操作才可以往存储区中写入数据。256字节用户不能全部使用,前8字节的数据为制造商固化区,出厂时就已经写入了数据,用户没办法修改,只能读取,后448字节为用户操作区,经过密码认证后可以写入数据。

此类卡片属于第二代卡片,属于逻辑加密卡,用户不需要做任何安全认证即可以任意的读取卡内数据,但是写入卡片需要进行密码校验,相对于AT24C0X来说安全性要高一点,对于想要破解卡片的人员来说,技术难度有所提高,现在除了存量用户以外,新安装的表具也不会再使用此种卡片,而存量用户也会逐渐的淘汰掉,但是现在也是还有不少的存量用户,所以在短时间内还是在系统中处于并行的状态。系统在设计的时候也得考虑此种卡片的兼容性问题。

2.4. 智能卡在本系统中的应用

CPU卡也叫智能卡,卡内的集成电路中带有微处理器CPU、存储单元(包括随机存储器RAM、程序存储器ROM (FLASH)、用户数据存储器EEPROM以及芯片操作系统COS。装有COS的CPU卡相当于一台微型计算机,不仅具有数据存储功能,同时具有命令处理和数据安全保护等功能,所以业内约定俗成的把智能卡叫做CPU卡。

此类卡片属于第三代卡片,它的安全性是最高的,每一个文件目录都是可以设置对应的读写权限,如果需要安全认证的读写权限,就得去加密机计算外部认证报文,经过外部认证来进行读操作,去加密机进行安全认证,计算安全报文,来对数据进行写操作,因为每次操作前都会从卡片中获取一个随机数,而参与运算的时候也是需要随机数参与的,故而报文不会被重放写入,安全性大大的提高了,因为其安全性最高,银行、社保、公共服务等各种行业都广泛使用此类卡片,很多燃气公司也都选择具有此类卡片的表具,故而现在新安装的表具基本都是应用此种卡片的表具。CPU卡表系统在燃气公司是有一个完整的系统的,故而在系统设计之初就得考虑把旧有系统集成进去的问题。

2.5. 从技术层面对多卡种兼容模组的设计

当前系统中所用到的几种卡片,都是基于同样标准定义的卡片,虽然通讯协议不一样,但是外观都是符合ISO 7816-2的标准,这个标准规定了相应的卡片大小,芯片触点的位置,VCC、GND、CLK、I/O等主要管脚的定义都是一样的,这样读卡器才能在物理上识别多种卡片,如图3表2所示即是相关触点的定义。

Figure 3. Card ISO7816-2 standard

图3. 卡片ISO7816-2标准

Table 2. Card contact definition

表2. 卡片触点定义

系统想要实现对多种卡片进行兼容,首先要解决的问题是对插入读卡器的卡片进行判断,当前插入的卡片是哪一种卡。卡片插入时,系统自动上电,进行一系列自检后,即进入卡片判断程序,卡片插入时,卡片不会主动的告诉你,当前插入的是什么类型的卡片,只能通过读卡器自己去判断。

读卡器系统在判断卡片的时候使用的是试错法,先假设插入的卡片为某一种卡片,根据这种卡片的特性对这种卡片进行检测,系统先对底层波特率进行分析,当读卡器开始上电工作的时候,会同步在CLK和IO上发送数据,当IO从上升沿跳变到了下降沿,为触发开始,每一个clock的高电平捕获一个数据,根据捕获到的数据,是否满足于A卡种的条件,如果不满足,尝试3次后切换到下一卡种的判断。同第一种卡的判断逻辑,是否满足B卡种的条件,如果不满足,尝试3次后切换到下一卡卡种的判断。同第二种卡的判断逻辑,是否满足C卡种的条件,如果不满足,尝试3次后则判断插入的卡片为无法识别的卡种,把对应的卡类型缓存到相应的变量中。因为插入的卡片,不单单会插入正常的卡片,也有可能是坏卡,或者单纯的插入的是异物。

在应用端对读卡器端进行调用的时候,会发送卡片复位指令,如果插入的是非法卡,则会在返回数据的时候返回对应的错误代码,应用端解析为非法卡。如果插入的是正常的卡片,则会返回对应卡片的复位信息,而应用端根据返回的卡片类型,发送对应类型的操作指令。

如果判断出来是某SLE4442卡,则发送SLE4442卡的读写卡校验密钥修改密钥指令,读卡器端接收到指令后会进入到SLE4442卡的处理流程;

如果判断出来是某ATMEL24C0X卡,则发送ATMEL24C0X卡的读写卡指令,读卡器端接收到指令后会进入到ATMEL24C0X卡的处理流程;

如果判断出来是某CPU卡,则发送CPU卡的指令,读卡器端接收到指令后会转发给CPU卡,由CPU卡自行处理,因为CPU卡有自己的规范和自己的处理机制,读卡器只需要把指令转发即可。

基于以上分析,读卡器对3种卡片在技术层面的识别理论上完全可行。

3. 兼容模组的实现

兼容模组的实现是根据IO和CLK上对应波特率的解析来实现对应的判断,在二进制数据的传输的方向中,一共有两种传输方向,一种是数据从低位开始传输,最后再传输高位,全称为Least Significant Bit,在二进制数中意思是最低有效位,简称LSB,一种是数据从高位开始传输,最后再传输低位,全称为Most Significant Bit,在二进制数中意思是最高有效位,简称MSB,以下涉及到传输方向的描述都以LSB和MSB进行描述。读卡器系统平时是处于断电状态,当插入卡片后,系统进行自检,自检通过后基于3.2.5章节的分析,判断插入的什么类型卡片,并把对应的卡片类型缓存到对应的内存中。

3.1. 存储卡识别功能的实现

首先假如插入的卡片是AT24C0X卡,系统上电成功后发起对AT24C0X的判断逻辑,卡片上电后,VCC端拉高为高电平,CLK端拉高为高电平,IIO端拉高为高电平,开始准备发起开始信号,在CLK端持续为高电平的状态下,IIO拉低成低电平,即为开始信号,此时对IIO发起数据,后续CLK连续发起波形,每一个CLK的高电平时发送1bit的数据,8bit为1字节,发送完8字节后,设备把IIO置为高电平,卡片则会发起一个应答信号(ACK),把当前的电平拉低,也就是每个字节有9bit的数据传输,此时判断ACK的电平值,如果为高电平,则表示当前卡片没有响应,则会停止当前传输,如果为低电平,则会继续发送下一字节,读卡器发送的第一字节用来选相应的器件,此处即为当前卡片,其中前7bit为地址码,最后1bit为方向位,方向位的0表示发送,1表示接收。此处因为是需要发送,方向位为0。

接着发起第二个字节为读取卡片数据的偏移地址,因为此处为复位信息,默认读取是前4字节,故而偏移地址为0x00,在后续8个CLK高电平处拉低IIO即可,接着拉高IIO,等待第9个应答信号拉低IIO,拉低后进行下一步操作。读卡器会再一次发起开始信号,发送8bit数据,因为此处为需要接收数据,所以方向位为1,等着应答信号后,开始接收数据,每接收8bit,读卡器需要向卡片发送一个应答信号,当需要读取的数据读卡完毕后,则不需要再向卡片发送应答信号,则卡片会停止发送数据。如图4所示,即为兼容模组对AT24C0X的自动识别。

Figure 4. Compatible module identification AT24C0X card

图4. 兼容模组识别AT24C0X卡

3.2. 逻辑加密卡识别功能的实现

如果插入的卡片不是AT24C0X卡,则假设插入的卡片为SLE4442,系统上电成功后发起对SLE4442的判断逻辑,卡片上电后,VCC端拉高为高电平,CLK端拉低为低电平,IIO端上电为高电平,开始发起判断,拉高CLK端一个时序,并且在波形的低电平的时候对IIO发起监控,后续连续发起32个时序的波形,如果在前面第一个时序的低电平时IIO由高电平转向了低电平,则表示卡片有了响应,会往外进行数据交互,则后面32个时序分别获取对应IIO上的值,由LSB进行解析,即完成了SLE4442卡的判断,此卡片即为SLE4442卡;如果监控到的IIO电平一直为高电平,则第一次判断的卡片未识别为SLE4442卡,为防止卡片自身体质问题上电速度较慢等造成的判断失误,系统预留了足够的卡片启动时间,因为卡片的上电时间是在微秒级,而系统预留3毫秒作为卡片上电时间,为防止因为干扰而造成IIO电平波动的问题,系统提供了3次复位判断操作,如果3次判断一致,则正式判断当前卡片为SLE4442卡,如果3次判断都不是SLE4442卡,则进入下一个判断流程。

SLE4442使用的是类I²C的通讯方式,和I²C一样是2线制通讯,一根线是时序线,一根线是数据通讯线,数据的收和发都是通过一根线实现,属于半双工模式。此处的判断用到的是卡片的上电复位返回来判断卡片是否是SLE4442卡,数据的解析方式是根据时序线上每一个Clock的上升沿时,获取同时间数据线上的电平来识别当前值为1或者0,这里高电平为1,低电平为0。8个bit为1个字节。如图5所示,即为兼容模组对SLE4442的自动识别。

Figure 5. Compatible module identification SLE4442 card

图5. 兼容模组识别SLE4442卡

3.3. 智能卡识别功能的实现

如果插入的卡片不是上述两种卡,则假设插入的卡片为CPU卡,系统上电成功后发起对CPU卡的判断逻辑,卡片上电后,VCC端拉高为高电平,CLK端拉高为高电平,IIO端拉高为高电平,开始准备发起复位信号,把RST和CLK由高电平拉低为低电平一段时间后,拉高VCC和IIO,等待一段时间后再拉高RST一段时间,再拉低RST,即完成一次卡片复位,接着CLK会发起一定波特率的波形,CPU卡会针对根据发起的频率来决定返回的波特率,读卡器等待对卡片复位后的数据进行接收,卡片完成复位后会返回卡片的遵循ISO 7816-3规范的ATR信息。

CPU卡的通讯协议是用的半双工模式的UART串口协议,复位完成后把IIO置为接收模式,等待卡片的数据返回,卡片的一个字节的传输包括1bit的起始位,IIO置为低电平,表示数据正式开始传输,后续8bit的数据位,根据对应的值置为高低电平,数据位后是1bit的偶校验位,数据位加上这一位后,使得1的位数应为偶数个,比如前8bit有5个1,则校验位应该置为1,让1的个数达到6个,校验位后是1bit的停止位,是把IIO置为高电平,接着就是空闲位,当IIO上没有数据传输的时候,电平置为1,等待着下一个起始位的判断,等着下一个字节的返回,读卡器接收到所有的复位信息后即完成了对卡片的判断。如图6所示,即为兼容模组对CPU卡的自动识别。

Figure 6. Compatible module identification CPU card

图6. 兼模组识别CPU卡

3.4. 非法卡识别功能的实现

如果上述3种判断流程都不能判断出插入的卡片类型,则该卡片不是系统允许的卡片,判断为该卡片是非法卡,置对应标志位。如图7所示,即为兼容模组对非法卡的自动识别。

Figure 7. Compatible module identification of illegal card

图7. 兼模组识别非法卡

4. 兼容模组实验分析

本章实现了读卡器端兼容模组的程序设计以及程序开发。读卡器端兼容模组以C语言为开发语言,Keil uVision为开发平台实现对应功能开发,PulseView为逻辑分析仪软件实现抓取对应波形数据。

4.1. 存储卡识别功能的测试

当读卡器中插入AT24C0X卡时,读卡器系统自动上电,经过一系列自检后,进入兼容模组判断流程,系统在CLK和IO上的波特率如图8图9所示,根据复位波特率能解析出对应的数据,进而能够判断出当前插入的卡片为AT24C0X卡。

Figure 8. The first, second and third bytes of reset baud rate of AT24C0X card

图8. AT24C0X卡片复位波特率第一、二、三字节

图8所示:

第一字节8bit解析出来的二进制值为:1010 0000,根据MSB进行识别,高低位不变,转换为十六进制为:0xA0,等待1bit的应答信号。

第二字节8bit解析出来的二进制值为:0000 0000,根据MSB进行识别,高低位不变,转换为十六进制为:0x00,等待1bit的应答信号,接着重新发起开始信号。

第三字节8bit解析出来的二进制值为:1010 0001,根据MSB进行识别,高低位不变,转换为十六进制为:0xA1,等待1bit的应答信号,再等待接收卡片发送到读卡器的数据。

Figure 9. The fourth, fifth, sixth and seventh bytes of reset baud rate of AT24C0X card

图9. AT24C0X卡片复位波特率第四、五、六、七字节

图9所示:

第四字节8bit解析出来的二进制值为:0010 0000,根据MSB进行识别,高低位不变,转换为十六进制为:0x20,发送1bit的应答信号。

第五字节8bit解析出来的二进制值为:0001 1001,根据MSB进行识别,高低位不变,转换为十六进制为:0x19,发送1bit的应答信号。

第六字节8bit解析出来的二进制值为:0001 0000,根据MSB进行识别,高低位不变,转换为十六进制为:0x10,发送1bit的应答信号。

第七字节8bit解析出来的二进制值为:0010 1000,根据MSB进行识别,高低位不变,转换为十六进制为:0x28,发送1bit的应答信号。

最终返回的四字节复位信息为20191028,和卡片内的存储信息的前4字节一致,判断出插入的卡片为AT24C0X卡后,置对应标志位。

4.2. 逻辑加密卡识别功能的测试

当读卡器中插入SLE4442卡时,读卡器系统自动上电,经过一系列自检后,进入兼容模组判断流程,系统在CLK和IO上的波特率如图10所示,根据复位波特率能解析出对应的数据,进而能够判断出当前插入的卡片为SLE4442卡。

Figure 10. SLE4442 card reset baud rate

图10. SLE4442卡片复位波特率

图10所示:

第一字节8bit解析出来的二进制值为:0100 0101,根据LSB进行识别,高低位对调,即为1010 0010,转换为十六进制为:0xA2。

第二字节8bit解析出来的二进制值为:1100 1000,根据LSB进行识别,高低位对调,即为1100 1000,转换为十六进制为:0x13。

第三字节8bit解析出来的二进制值为:0000 1000,根据LSB进行识别,高低位对调,即为0001 0000,转换为十六进制为:0x10。

第四字节8bit解析出来的二进制值为:1000 1001,根据LSB进行识别,高低位对调,即为1001 0001,转换为十六进制为:0x91。

最终返回的四字节复位信息为A2131091,和卡片内的存储信息的前4字节一致,判断出插入的卡片为SLE4442卡后,置对应标志位。

4.3. 智能卡识别功能的测试

当读卡器中插入CPU卡时,读卡器系统自动上电,经过一系列自检后,进入兼容模组判断流程,系统在CLK和IO上的波特率如图11所示,第一字节波特率能解析出0x3B,如图12所示,后续波特率能解析出对应的数据,进而能够判断出当前插入的卡片为CPU卡。

图11所示,第一字节1bit起始位为0,8bit数据位解析出来的二进制值为:1101 1100,根据LSB进行识别,高低位对调,转换为十六进制为:0x3B,1bit偶校验位为1,1bit停止位。

图12所示:

第二字节1bit起始位为0,8bit数据位解析出来的二进制值为:1001 0110,根据LSB进行识别,高低位对调,转换为十六进制为:0x69,1bit偶校验位为0,1bit停止位。

第三字节1bit起始位为0,8bit数据位解析出来的二进制值为:1001 0110,根据LSB进行识别,高低位对调,转换为十六进制为:0x69,1bit偶校验位为0,1bit停止位。

第四字节1bit起始位为0,8bit数据位解析出来的二进制值为:1001 0110,根据LSB进行识别,高低位对调,转换为十六进制为:0x69,1bit偶校验位为0,1bit停止位。

后面的返回数据以此类推,当读卡器等待一定的时间卡片没有返回任何数据,则认为卡片复位信息数据返回完成,最终返回的四字节复位信息为3B690000……,CPU卡规定ATR复位信息必须以3B开头,后续都是遵循ISO 7816-3标准而定,判断出插入的卡片为CPU卡后,置对应标志位。

Figure 11. The first bytes of reset baud rate of CPU card

图11. CPU卡片复位波特率第一字节

Figure 11. The second, third and four bytes of reset baud rate of CPU card

图11. CPU卡片复位波特率第二、三、四字节

4.4. 实验小结

本节针对多种卡片在读卡器上的自动识别进行了兼容性验证,通过对AT24C0X卡的识别,结果和预期相符;通过对SLE4442卡的识别,结果和预期相符;通过对CPU卡的识别,结果和预期相符;通过对非法卡的识别,结果和预期相符。实验表明,兼容模组能很好的对多种卡片进行识别,并且甄别当前插入的卡片是否是非法卡,实验达到了设计要求。

5. 结束语

本文针对多卡种的识别,设计了一种兼容模组。该模组针对不同的卡种设计多种识别方法。本文主要讨论了对AT24C0X卡、SLE4442卡、CPU卡这三种卡片的兼容性测试。从当前系统卡片的兼容性进行分析,引出当前系统存在的兼容性问题,解决兼容性问题的必要性,最后完成兼容模组的设计与实现的这几点进行了阐述。整体看来,兼容模组可以有效地识别当前系统中的卡片,能够大幅度提升系统对卡片的兼容性,为下一步建立整套系统提供有力的支持。

NOTES

*通讯作者。

参考文献

[1] 张戈, 陈旻, 水云. AT24C01卡的应用设计[J]. 计算机时代, 2003(10): 28-30.
[2] 张义. AT24C0XIC卡的结构及使用[J]. 国外电子元器件, 1996(9): 33-36.
[3] 黄振中. PIC单片机对SLE4442卡的操作实现[J]. 工业控制计算机, 2012, 25(7): 98-100.
[4] 刘振民, 左莉, 崔琳. PIC16F73单片机与SLE4442卡的接口电路与控制程序设计[J]. 南开大学学报(自然科学版), 2010, 43(6): 94-98.
[5] 李清. 80C51单片机与IC卡SLE4442的接口设计[J]. 南通工学院学报(自然科学版), 2003, 2(2): 67-71.
[6] 常国权. 基于CPU卡的饮料销售机控制系统设计[J]. 电子世界, 2021(2): 196-197.
[7] 董文润, 黄书成. CPU卡预付费多声道超声波流量计的研究[J]. 仪器仪表用户, 2020, 27(9): 14-17.