已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业设计论文题目:IC卡煤气表的设计 软件设计 院 (系): 电子信息工程学院 专 业: 自动化 班 级: * 学 生: 王* 学 号: 070411334 指导教师: 谭宝成 苗苗 2011年 06月53 / 48IC卡煤气表的设计软件部分摘 要 IC卡智能家用燃气表是以IC卡为信息载体的智能型机电一体化的家用燃气表。它能够实现自动计量收费、自动控制用气,它和售气管理系统配合可实现预付费,从而免去人工入户抄表带来的诸多不便。本文详细论述了IC卡智能家用燃气表的软件设计开发过程。该系统是基于AT89S52单片机实现的。先对IC卡家用燃气表的功能要求进行分析,提出IC卡燃气表的整体设计方案。设计采用模块化,将一个功能作为一个模块,各部分程序都独立的设计,最后主程序通过调用各模块程序来运行。最后完成各模块的设计。以及对程序进行调试。使各功能满足设计要求。关键词:IC卡 燃气表 单片机 IC Card Intelligent Gas MeterSoftware Part AbstractIC Card Intelligent Household Gas Meter IC Card as the information carrier is based on intelligent mechatronics domestic gas meter. It can automatically metering and charging, automatic control of gas, and gas sales management system which can be achieved with pre-paid, eliminating manual meter reading to bring home a lot of inconvenience.朗读显示对应的拉丁字符的拼音字典This article discusses the IC card intelligent household gas meter software design and development process. The system is based on the AT89S52 SCM realizing. First to IC card household gas table function requirement analysis, some IC card overall design scheme of gas meter. Design USES modular, will a function as a module, each part program are independent design, final main program by calling each module program to run. Finally finish each module design. And debugging of program. Make every function and meet the design requirements. Keywords :IC Card Gas Meter Microcontroller1 绪论1.1课题研究背景随着我国国民经济的发展,大中小型企业规模扩大,房地产业蓬勃发展,人民生活水平日益提高,企业和各种居民燃气设施逐渐增多,用气量大增。而长期以来,在燃气供应方面,一直是实行先用气,后交费的政策。原始的人工抄表工作量大,收费时间长,收费困难,效率低,资金回笼周期长等问题长期困扰着燃气公司,造成企业资金负担过重,给企业带来了损失。近几年来,随着IC卡应用技术的日益成熟,利用IC卡设计的智能燃气表应运而生。1.2课题研究意义作为“金卡工程”主导的IC卡,是一种包含了微电子技术和计算机技术的高科技产品,是当今世界科技发展的必然趋势。IC卡的优越性有:容量大,可靠性高,抗电磁干扰,抗恶劣使用环境,保密性好,对卡上的数据不能任意读/写,信息保存期长,读写方便,读写次数可高达10万次以上。但IC卡本身并不能单独直接使用,只能将IC卡与其它电子设备(如煤气表)结台起来,才能共同构成满足某种社会需要的应用系统。现在城市管道煤气已经基本普及,煤气用户的数量也随之有了很大的增长。作为煤气计费依据的煤气表数量与日俱增,有的城市达几十万甚至上百万用户。面对如此庞大的煤气表用户,抄表、收费工作将是一项十分繁琐的工作,同时由于用户各种客观情况的存在,例如生活水平、居住环境、生活习惯等不一样,给收费工作带来了很大的困难。针对这种现状,设计的IC卡智能煤气表,可以很好的解决传统仪表的抄表和收费等问题。该表实现了先进的IC卡计费功能,并且具备完善的防作弊功能。采用了多种方法提高该表在实用中的可靠性。设置了可燃气报警功能,提高了用户用气的安全性。随着社会的进步,人民生活水平的不断提高,城市管道煤气已逐渐进入千家万户。煤气作为一种清洁和高效的能源已经有越来越多的用户在使用,特别是西部大开发“西气东输”计划的启动,管道煤气将向更多的大,中,小城市扩展,用户更会大幅增长,管道煤气已经和水,电一样成为城市的基本设施,给人们的日常生活带来极大的方便。1.3智能卡表及系统数据交换的安全性分析 在智能卡表和预付费管理系统之间,信息的传递是通过IC卡作为传输介质进行的,安全性的主要内容是如何保证IC卡中信息的安全性。在智能卡表及系统中所使用的都是集成电路卡(IC卡),集成电路卡的核心是采用集成电路芯片来进行数据的存储。目前广泛使用的IC卡使用的是电可擦除数据存储芯片(EEPROM),这种芯片读写速度快,掉电后数据可以长期保存,并且数据可以反复进行擦写。 安全认证:安全认证用来在读写设备(包括智能卡表)与IC卡进行数据交换之前,首先进行必要的安全认证,用来确认双方身份的合法性。只有双方身份确认后,才能建立相互之间联系的通道进行必要的数据交换。如果双方不能确认身份的合法性,则不能建立进行数据交换的通道。 安全认证有两种方式可以实现,一是通过密码进行安全认证;一是通过密钥进行安全认证。 (1)读写设备发送密码到IC卡 (2)IC卡进行密码比较 (3)IC卡将比较结果返回读写设备 IC卡在进行密码比较时,如果读写设备发来的密码与IC卡中存储的密码相同,IC卡向读写设备返回密码认证通过的结果,并打开IC卡数据与外部进行交换的权限。如果密码不同,则返回错误结果,IC卡数据与外部进行交换的权限被关闭。在逻辑加密卡中使用的就是这种认证方式,密码认证的方式比较简单实用,是一种常用的安全认证手段。综合上面所讨论的内容,在智能卡表及系统中要具备高的数据安全性,采用安全级别高的IC卡即智能卡(CPU卡)作为传输介质,进行数据的安全认证和有效传输。 1.4本课题的分析1.4.1IC卡燃气表的功能作为供气计量,自动计费的IC卡智能煤气表应具有以下功能:1.预付费功能:用户向煤气资源管理管理公司预交一定费用后,奖金额存入IC内,获得相应的可使用的没气量。2.报警功能:当IC卡中剩余金额低于一定值时,煤气表发出声光报警,提醒用户去预交煤气费,给IC卡充值。3.显示卡中余额功能:煤气表可随时显示IC卡中剩余金额,便于用户了解使用煤气情况。4.加密功能:对IC卡进行加密,使系统不易被仿制,或者在IC卡丢失后不可被他人使用。5.掉电保护功能:当系统由于供电设备或其他问题而断电时,会将程序正在运行中产生的重要数据保存到外置存储器中,例如用户当前用气量,计算产生的数据等,保护用户和煤气公司的利益。6.自动控制供、停煤气:当卡内余额用完时驱动电磁阀关闭煤气管道中的阀门,停止供气。7.可对购气量进行累积1.4.2.整体设计方案智能气表本质上是一种微机自动检测系统,由硬件和软件两部分组成。根据以上功能要求,确定系统整体方案如下:智能IC卡燃气表系统由单片机、IC卡、电磁阀、传感器、LCD显示器、报警器、存储器等组成。各部分电路各司其职,共同完成整体功能。设计主要采用单片机作为主要的芯片,当用户购买一定数量煤气后,供气公司即把所购买的气量存储在IC卡上。把IC卡插入气表的卡座,系统在程序的控制下将卡内数据信息传送到单片机内并保存在存储器中,并将此卡内数据清零,以确保一卡对一机,防止多次使用此卡。液晶屏幕将立即显示购气的数量。如果原来的气表中尚有上次剩余的煤气,则新购的气将叠加在原来的数据上并且在屏幕显示。随着煤气用量屏幕显示数值将减少。当IC卡中的金额不足时,会报警响铃;同时关闭电磁阀;续费后,电磁阀开启,功能正常。1.4.3软件设计方案本人主要负责软件部分,即相关模块程序的编写。为能够完成IC卡智能燃气表的功能,设计中的程序设计采用模块化设计,各部分程序都独立的设计,最后主程序通过调用各模块程序来运行。程序设计部分模块包括主程序模块、掉电存储模块、液晶显示模块、IC卡读写模块、功能按键等部分。2 程序设计2.1主程序模块 当系统开机后,开始运行主程序,在主程序中调用相应的显示子程序、键值的判断和输出操作、流量的采集、计费、现金额的读取以及是否进行读卡的操作等,无论是从性价比上还是从系统可靠性上,以及对于软件调试上来说主控芯片的选择至关重要。2.1.2主控芯片的选择 主控芯片MCU采用AT89S52, 该单片机是美国ATMEL公司生产的低电压,高性能COMS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256k bytes的随机数据存储器(RAM),控制器采用11.0592MHz的晶体振荡器使时钟更加精确,具有三个16位定时器/计数器,八个中断源,一个全双工UART串行通道和看门口定时器。并且能用下载线进行在线编程以及调试。2.2.1AT89S52芯片优点1.AT89S系列单片机是以MCS-8051单片机为内核,结合ATMEL公司自身的技术特色构成的,所以AT89S52单片机与MCS-8051单片机是兼容的。2.ATMEL公司把EEPROM和FLASH技术巧妙相结合形成特殊的存储器电路,使其应用领域扩大,在开发应用过程中可以非常方便的进行程序设计和修改程序。在系统工作过程中能有效的保存数据信息不丢失。也就是说,系统掉电不会丢失数据。3.AT89S52单片机采用静态时钟方式可节电。4.可反复进行应用系统程序的调试,因为AT89S系列单片机具有通信下载功能,可现场在线编程、修改、调试带来了极大的方便5.技术性能高,AT89S52单片机适应温度范围宽,抗干扰能力强。AT89S52单片机是AT89系列的增强型产品,功能有了较大的增加。功能增强包括FLASH、工作频率、SPI、看门狗定时器(WDT)等。其中WDT是一种需要软件控制的复位方式。WDT 由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。WDT 在默认情况下无法工作;为了激活WDT,户用必须往WDTRST 寄存器(地址:0A6H)中依次写入01EH 和0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT溢出,它将驱动RSR引脚一个高个电平输出。2.1.3 WDT的使用为了激活WDT,用户必须向WDTRST寄存器(地址为0A6H的SFR)依次写入0E1H和0E1H。当WDT激活后,用户必须向WDTRST写入01EH和0E1H喂狗来避免WDT溢出。当计数达到8191(1FFFH)时,13 位计数器将会溢出,这将会复位器件。晶振正常工作、WDT激活后,每一个机器周期WDT 都会增加。为了复位WDT,用户必须向WDTRST 写入01EH 和0E1H(WDTRST 是只读寄存器)。WDT 计数器不能读或写。当WDT 计数器溢出时,将给RST 引脚产生一个复位脉冲输出,这个复位脉冲持续96个晶振周期(TOSC),其中TOSC=1/FOSC。为了很好地使用WDT,应该在一定时间内周期性写入那部分代码,以避免WDT复位。a.掉电和空闲方式下的WDT在掉电模式下,晶振停止工作,这意味这WDT也停止了 工作。在这种方式下,用户不必喂狗。有两种方式可以离开掉电模式:硬件复位 或通过一个激活的外部中断。通过硬件复位退出掉电模式后,用户就应该给WDT 喂 狗,就如同通常AT89S52 复位一样。通过中断退出掉电模式的情形有很大的不同。中断应持续拉低很长一段时间,使得晶振稳定。当中断拉高后,执行中断服务程序。为了防止WDT在中断保持低电平的时候复位器件,WDT 直到中断拉低后才开始工作。这就意味着WDT 应该在中断服务程序中复位。为了确保在离开掉电模式最初的几个状态WDT不被溢出,最好在进入掉电模式前就复WDT。在进入待机模式前,特殊寄存器AUXR的WDIDLE位用来决定WDT是否继续计数。默认状态下,在待机模式下,WDIDLE0,WDT继续计数。为了防止WDT在待机模式下复位AT89S52,用户应该建立一个定时器,定时离开待机模式,再重新进入待机模式。2.1.4软件看门狗程序软件看门狗(WATCH DOG)也叫做程序运行监视系统。当程序运行受到干扰,程序飞到一个临时构成的死循环中时,系统将完全瘫痪,软件陷阱也无能为力了,这时就需要人工复位或硬件复位;如果没有人工操作和硬件复位系统,我们采用软件看门狗技术同样也能使系统复位,恢复正常。watchdog.h:#include void wdtclear(void)WDTRST=0x1E;WDTRST=0xE1;void delay_nms(unsigned int n)unsigned int i;unsigned int ii;for(i=0;in;i+)for(ii=0;ii1000;ii+);wdtclear();watchdog.c:#include watchdog.hmain()unsigned int i;WDTRST = 0x1E; /开看门狗,包含两条指令。一旦开看门狗就没有办法关闭。WDTRST = 0xE1;while(1)delay_nms(100); /超过16毫秒不喂狗,看门狗溢出复位。delay_nms(100);2.1.5AT89S52单片机的初始化当系统上电后,主程序开始执行。它首先完成系统的初始化工作,如开中断,使外部中断0和外部中断1均为边沿触发方式,设置T0,T1为定时器并赋予初值等初始化后再从AT24C02中读取剩余金额,并进行判断处理等。初始化程序如下:void zinit()famen=1;/开阀门TMOD=0x11;/定时器0和1为模式1TL0=0xb0; /赋初值TH0=0x3c; TL1=0x80; /赋初值TH1=0x3e;ET0=1; /开T0中断ET1=1; /开T1中断IT0=1; / 外部中断为边沿触发方式IT1=1; /EX0=1; / 开外部中断0EX1=1; / 开外部中断1ES=1;/开串行口中断PS=1;/串口中断位高优先级PX0=1; /外部中断0为最高中断优先PX1=1;/ 外部中断1为次最高中断优先TR0=1;/1开始计数,0停止计数EA=1;/开总中断xianshdy=1;/显示电源关闭xianshi1=0;sbjing=1;/声报警2.1.6主程序流程图单片机控制着整个系统的运行,包括流量累计,费用计算,显示,开/关阀门,声光报警,读卡。在主程序中调用相应模块实现功能。当系统开机后,开始运行主程序,我们要实现的功能是实现自动计费,根据是否有余额来决定是否开启阀门。实际中当煤气阀门开启后,煤气就在不断地使用,设计中我们必须去定时的去计算累积使用的煤气量,并且在总钱数中减去使用的钱数得到此时的剩余金额,防止出现余额已用完,而依然在供应煤气。所以主程序应该为一个在判断余额是否足够的死循环,根据余额情况,若不足则关闭阀门,并且声光报警,若还有则开阀门,并根据用户按键情况作相应的显示。开始读取现金余额和总金额余额是否足够计费读取现金余额报警显示余额初始化是是否按键端口扫描打开阀门是否进行读卡充值操作进行读卡操作是否结束循环进入掉电模式键值输出操作流量采集读上次关机保存数据显示子程序 图2.1主程序流程图2.2 IC卡读写模块IC卡的主要功能就是作为一种数据载体。将用户所购煤气金额存储在IC卡内,用户回到家后将卡插入,通过读卡程序将卡内金额传送到单片机内并保存在存储器中,在通过写卡程序将卡内数据清零,以确保一卡对一机 , 防止多次使用此卡。 2.2.1芯片的选择 本设计采用的IC卡芯片为SLE4442卡,SLE4442是由德国西门子(Siemens)公司设计的逻辑加密存储卡。具有2 Kb(256 B)的存储容量,它采用多存储器结构,包括三个存储器:2568 b的EEPROM型主存储器,321 b的PROM型保护存储器和48 b的EEPROM型加密存储器。主存储器可重复擦除使用,按字节操作,可分为保护数据区和应用数据区,读出均不受限制,但保护数据区的擦除和写入受保护存储器熔丝状态的保护,而应用数据区的擦除和写入则受加密存储器中的密码及密码计数器保护。SLE4442卡是一种按字节操作的多存储器逻辑加密卡。它具有2 Kb的存储容量和完全独立的可编程加密代码(PSC,Programmable SecurityCode)存储器。内部电压提升电路保证了芯片能够以单+5电压供电,较大的存储容量能够满足通常应用领域的各种要求。因此是目前国内应用较多的一种IC卡芯片。2.2.2SLE4442芯片的特点SLE4442卡芯片的特点如下:(1) 采用多存储器结构。(2) 2线连接协议,复位响应满足ISO/IEC 7816-3标准。(3) 触点配置及串行接口满足ISO/IEC 7816(同步传输协议)。(4) 仅当正确输入3个字节的可编程加密代码(PSC)后方可修改数据。(5) 芯片采用NMOS工艺技术,每个字节的写入/擦除编程时间为2.5 ms。(6) 存储器具有至少104次的写入/擦除周期,数据保持时间至少10年。2.2.3SLE4442芯片存储器结构SLE4442卡芯片采用了多存储器结构,主要包括三个存储器:2568 b的EEPROM型主存储器;321 b的PROM型保护存储器;48 b的EEPROM型加密存储器。表2.1逻辑加密卡的存储结构区域名地址(字节)位数说明制造区0116芯片制造商代码(一旦写入,不可更改,用于识别卡的来源)发行区2532卡制造商、发行商代码密码区6824持卡人密码(PIN,由发行商在卡个人化时预写入,用卡时将之与持卡人输入的密码相比较,相符才允许对应用区进行读写和修改该密码)密码计数区98允许连续输入错误密码的次数(34 次),若达到则卡自锁,以防止对PIN的非法试探个人区101332持卡人个人信息,可自由读写应用区1477512应用数据擦除密码区788024擦除密码,仅供发行商使用,与发行商输入密码比较,相等即可对整个应用区置1(檫除),以实现卡的重复使用擦除计数区818864擦除次数,该区每一个1 表示可进行1 次擦除操作,每输入1次擦除密码(无论对错)就将1 个1 置0,该区全为0 时,卡片使用寿命结束。该区本身的擦除只能在发行前进行,一旦发行,只能置0 和读出1)主存储器(Main Memory)主存储器为可重复擦除使用的EEPROM型存储器,按字节寻址、擦除和写入。在擦除时,一个数据字节的所有8位被全部置1。在写入时,EEPROM单元中的信息则根据输入的数据,被逐位变换成逻辑“0”(即在EEPROM中,新写入的数据与原来存有的数据进行“逻辑与”)。通常,一个数据的改变包含先擦除(全写为1),后写入(将相应的1写为0)两项操作。如果在被寻址的字节里8位中没有一个字位需要从0变到1,则可以不进行擦除处理,例如,01101100变为00100100;反之亦然,在被寻址的字节中,如果没有一个字位需要从1 变到0 , 则可以不作写入处理, 例如,01101100变为11111101。写入或擦除操作一次都至少要耗费2.5ms时间。主存储器的地址是从0(00H)到255(FFH),共256 B(2 Kb)。主存储器可分为两个数据区:保护数据区和应用数据区:(1) 保护数据区。主存储器前32 B为保护数据区,地址从0(00H)到31(1FH)。这部分的数据读出不受限制,但擦除和写入操作均受到保护存储器内部数据状态的限制。当保护存储器中第n位(n=031)为1时,则对应主存储器中第n个字节允许 进行擦除和写入操作;而当保护存储器第n位为0时,则对应主存储器中第n个字节就不允许进行擦除和写入操作。根据这一特性,主存储器的保护数据区一般均作为IC卡的标识数据区,存放一些固定不变的标识参数,如厂商代码、发行商代码等。(2) 应用数据区。主存储器后224 B为应用数据区,地址从32(20H)到255(FFH)。这部分的数据读出不受限制,但擦除和写入均受控于加密存储器数据校验比较结果的影响。当需要修改应用数据区的内容时(擦除或写入操作),必须首先输入一个3字节长的“校验字”。这个用户输入的“校验字”与原来存在加密存储器中的“参照字”进行一对一的比较。只有当两者完全一致时,芯片的加密控制逻辑才打开芯片的主存储器,允许后面的擦除和写入操作。应该注意的是这种加密校验的控制是对整个主存储器实施的(即包括保护数据区和应用数据区)。如果新输入的校验字与芯片中的“参照字”不同,则控制逻辑闭锁主存储器。芯片允许在有限的次数内(一般为三次)重试比较操作。如果在连续三次比较失败之后,芯片的错误计数器计数到“0”,并将锁死主存储器,禁止随后的任何比较操作和写入擦除操作。这时,整个主存储器变成一个只读存储器,芯片中各存储器的内容不能再改变。2)保护存储器(Protection Memory)保护存储器是一个321 b的一次性可编程只读存储器(PROM)。它是按位寻址和写入。保护存储器为031的每一位对应着主存储器地址为031的每一个字节,因此可以理解为每个字节单元的控制熔丝。从出厂到被初始化之前,保护存储器的状态为全“1”。从控制方面来说,保护存储器的内容只能从“1”写成“0”(即熔断熔丝),而不能从“0”擦除成“1”。保护存储器每个被写“0”的单元所对应控制的主存储器的字节单元将不再接受任何擦除和写入操作命令,从而使得该字节单元内的数据不可再改变。因此,对保护存储器单元的写入一定要特别小心。从使用方面来说,如果需要防止一些固定的标识参数(例如,生产厂家代码、发行商代码、卡片编号等)被改动,以免造成使用混乱,则可以将这类参数先写入主存储器的保护存储区,然后将对应单元的保护存储器的字位写0,从而使这一部分单元中的参数内容永远不可更改。保护存储器本身的读出操作不受限制。但对其写入操作仍然受到加密存储器比较校验操作结果的控制。当输入的“校验字”与芯片内原来存有的“参照字”一致时,则可以执行后续的写入操作。如果比较不成功,则控制逻辑将闭锁保护存储器。3)加密存储器(Security Memory)加密存储器是一个48 b的EEPROM型存储器。在这个存储器中,第0个字节为“密码输入错误计数器”(EC,Error Counter)。密码输入错误计数器的有效位是低3位。在芯片初始化时,计数器设置成“111”。这一字节是可读的,每次比较密码时,先要判定计数器中是否还有“1”。如果还有“1”,则将一个“1”写成“0”,然后进行比较“校验字”操作。如果比较结果一致,则密码错误计数器将允许进行擦除操作(注意,芯片不能自动进行擦除操作),同时打开主存储器、保护存储器和加密存储器,并允许进行擦除和写入操作。如果比较结果不一致,则密码错误计数器中为“1”的个数减少1位。只要计数器的内容不全为0,则芯片的比较“校验字”操作还允许再次进行。当连续三次输入错误密码后(即密码计数器减少为0),则芯片的存储单元将全部被锁死。由此可见,加密存储器可以理解为进入整个芯片的“关卡”。加密存储器的第1、2、3个字节为“参照字”存储区。这3个字节的内容作为一个整体被称为可编程加密代码(PSC)。值得注意的是:这3个字节的内容在PSC比较成功前是不可读的,只能进行比较操作。而写入和擦除操作也受自身比较操作结果的控制。只有当比较操作成功时,加密存储器各字节的内容才可以进行读出、写入和擦除。2.2.4传送协议与操作模式SLE4442卡与接口设备(IFD,InterFace Device)之间的传送采用2线连接协议,满足ISO/IEC 7816同步传送协议,I/O线上的数据变化只在CLK信号下降沿有效。传送协议包括4种模式:复位和复位响应(ATR,Answer-To-Reset)、命令模式(Command Mode)、输出数据模式(Outgoing Data Mode)、处理模式(Processing Mode)注意:I/O引脚为漏极开路型,因此需要外加上拉电阻才能得到高电平。1) 复位和复位响应(Reset and Answer-To-Reset)SLE4442卡芯片的复位方式有:(1) 复位和复位响应(外部复位方式):基于ISO/IEC 7816-3的同步协议。 (2) 加电复位(Power on Reset,内部复位方式):加电后I/O被置于高阻态。必须在对任意地址进行读操作或做一个复位响应操作之后才可以进行数据交换。复位响应是根据 ISO/IEC 7816-3(ATR)标准来进行的,复位及复位响应的时序关系如图2.2所示。在操作期间的任意时刻都可以复位。图2.2复位及复位响应的时序关系开始时接口设备IFD将所有线置于状态L,然后VCC加电,CLK和RST保留于状态L,接口设备的I/O置于接收方式。之后,RST线被置于H状态,并维持至少15 s,时钟脉冲在RST上升沿之后相隔t10时间后给出,地址计数器随这个时钟脉冲被设置为0。在RST为高时只允许有一个时钟脉冲。CLK与RST下降沿之间的时间间隔为t11。当RST线从高状态(H状态)置到低状态(L状态)时,第一个数据位(LSB)的内容被送到I/O上,这一数据可视为复位应答。若继续输入后面的31个时钟脉冲(共32个脉冲),主存储器中的前4个字节(48 b= 32 b)地址单元中的内容被读出。在第32个时钟脉冲的下降沿,I/O线被置成高阻状态(Z状态)而关闭,ATR过程结束。在复位响应期间,“启动”和“停止”状态都被忽略。2)命令模式(Command Mode)复位响应以后,芯片等待着命令。每条命令都以一个“启动状态”开始。整个命令包括3个字节。随后紧跟着一个附加脉冲并用一个“停止状态”来结束操作。图2.3为命令模式的时序关系。图2.3命令模式的时序关系(1) 启动状态:在CLK为高状态(H状态)期间,I/O线的下降沿为启动状态。(2) 停止状态:在CLK为高状态(H状态)期间,I/O线的上升沿为停止状态。接收了一个命令之后,卡芯片处于两种可能的模式:(1) 读数据时处于输出数据模式;(2) 写入和擦除时处于处理模式。3)输出数据模式(Outgoing Data Mode)在这一模式下IC卡芯片发送数据给IFD。图2.3右上角为输出数据模式的时序关系图。在第一个CLK脉冲的下降沿之后,I/O线上的第一位数据变为有效。随后每增加一个时钟脉冲,芯片内部的一位数据被送到I/O线上,低位在前。当所需要的最后一个数据送出以后,需要再附加一个时钟脉冲来把I/O线置成高阻状态(Z状态),以便准备接收新的命令。在输出数据期间,任何“启动状态”和“停止状态”均被屏蔽。4)处理模式(Processing Mode)在这一模式下对IC卡芯片做内部处理。图2.3右下角为处理模式的时序关系图。芯片在第一个时钟脉冲的下降沿,将I/O线从高状态(H状态)拉到低状 (L状态)并开始处理。此后应连续给芯片提供脉冲,使芯片在内部连续计时计数,直到第n个时钟脉冲之后的附加一个时钟脉冲的下降沿I/O线被置为高阻态,完成芯片的处理过程。在整个处理过程中I/O线被锁定成低状态,任何“启动状态”和“停止状态”均被屏蔽。2.2.5芯片的操作命令1)命令格式命令格式如表2.2表2.2命令格式MSB 控制字 LSBMSB 控制字 LSBMSB 控制字 LSBB7B6 B5 B4 B3 B2B1 B0A7 A6 A5 A4A3 A2A1 A0D7D 6D5 D4 D3 D2D1 D0命令的传送总是从控制字节开始,首先传送字节的最低位LSB(即B0位)。控制字节传送完毕之后,依次传送地址字节和数据字节,均为低位在前。在最后一位D7传送完成之后,需要增加一个附加时钟脉冲把I/O线置成高状态。SLE4442命令表如表2.3所示表2.3SLE4442命令表字节1控制字字节2地址字字节3数据字操作模式B7B0A7A0D7D000110000地址无效读主存储器输出数据模式00111000地址输入数据修改主存储器处理数据模式00110100地址无效读保护存储器输出数据模式00111100地址输入数据写保护存储器处理数据模式00110001地址无效读加密存储器输出数据模式00111001地址输入数据修改加密存储器处理数据模式00110011地址输入数据比较校验数据处理数据模式2) 读主存储器(Read Main Memory)读主存储器命令格式如下:命令控制字地址字数据字读主存储器30H00HFFH无效读主存储器命令读出主存储器的内容,命令的控制字为30H。对于每个字节来说,总是从最低位LSB开始读出,从给定的字节地址(N=0255)开始,直到整个存储器的末尾。在该命令输入以后,接口设备IFD必须提供足够的时钟脉冲,从地址(N)开始读数据所需要的时钟脉冲数为M=(256N)81。对主存储器进行读操作不受限制。读主存储器的时序见图2.4图2.4读主存储器的时序图3) 读保护存储器(Read Protection Memory)读保护存储器命令格式如下:命令控制字地址字数据字读保护存储器34H无效无效读保护存储器命令的控制字为34H。在连续输入32个时钟脉冲的情况下,芯片将保护存储器内各位的内容传送到I/O线上,最后通过一个附加时钟脉冲将I/O线置为高阻状态(Z状态)。对保护存储器进行读取操作不受限制。读保护存储器的时序见图2.5。图2.5读保护存储器的时序图4) 读加密存储器(Read Security Memory)读加密存储器命令格式如下:命令控制字地址字数据字读加密存储器31H无效无效读加密存储器命令类似于读保护存储器,可以读出4B的加密存储器的内容。该命令的控制字为31H。在输出数据的模式下,所需时钟脉冲的数量为32。其后再附加一个时钟脉冲将I/O线置成高阻状态(Z状态)。如果可编程加密代码(PSC)的校验不成功,则“参照字”字节的输出被禁止,读保护存储器除第0个字节可读出外,I/O线总保持为低(L)状态(即“参照字”字节的输出总是“0”)。读加密存储器的时序见图2.6。图2.6读加密存储器的时序图5) 修改主存储器(Update Main Memory)修改主存储器命令格式如下:命令控制字地址字数据字修改主存储器38H00HFFH输入数据修改主存储器命令根据所传送的字节数据,寻址主存储器的EEPROM字节,然后修改相应字节的内容。该命令的控制字为38H。在处理模式期间,根据新、旧数据,可能发生下列几种情况之一: 先擦除后写入:5 ms,相当于M=256个时钟脉冲。 只写入不擦除:2.5 ms,相当于 M=124个时钟脉冲。 只擦除不写入:2.5 ms,相当于M=124个时钟脉冲。修改主存储器时序图如图2.7所示 图2.7修改主存储器时序图6) 修改加密存储器修改加密存储器命令格式如下:命令控 制 字地 址 字数 据 字修改加密存储器39H00H03H输入的数据(PSC)为保护参照字字节,这一命令仅当PSC成功校验之后方能执行,否则,只能对错误计数器(地址0)进行由“1”写“0”的操作。该命令所要求的执行时间和时钟脉冲数与执行修改主存储器的情况相同。7) 写保护存储器(Write Protection Memory)写保护存储器命令格式如下:命令控制字地址字数据字写保护存储器3CH00H1FH输入的数据写保护存储器命令的执行过程包含一个把被输入的数据与在EEPROM中对应数据进行比较的过程。在确认一致的情况下,保护字位被写0,从而使得主存储器中的信息不可更改。如果数据比较结果不一致,则保护字位的写操作将被禁止执行。该命令所要求的时钟脉冲和执行时间与修改主存储器命令的情况相同。8) 比较校验数据(Compare Varification Data)比较校验数据命令格式如下:命令控制字地址字数据字写保护存储器3CH00H1FH输入的数据比较校验数据命令必须与修改错误计数器的过程同时执行该命令把输入的“校验数据”的各个字节与相对应的参照数据(存放在加密存储器中)进行比较,这一过程将在处理模式中需要给出时钟脉冲。比较校验数据命令的时序如图2.8所示 图2.8比较校验数据命令的时序图2.2.6 PSC校验如果需要修改SLE4442的数据,则必须正确校验存储在加密存储器中的可编程加密代码PSC。校验的过程并不是仅由比较校验数据命令来完成的,而是由多个命令构成的一个流程来共同完成,PSC校验流程见图2.34。这一流程必须被精确地执行,任何变化都将导致校验失败,从而使写入/擦除操作被禁止。只要校验过程未能成功完成,密码错误计数器的一个字位将只会被从“l”写成“0”,并且不能被擦除。首先用一个修改加密存储器命令将密码错误计数器中的一位写0。 然后紧跟着三条比较校验数据命令。比较从参照数据的字节1开始。整个比较过程成功与否是用能否擦除密码错误计数器来证实的,密码错误计数器不能自动擦除。如果比较成功,则擦除操作执行有效,这时只要不断电,对整个芯片各存储器的各区域的写入/擦除处理都可以进行;如果比较不成功,擦除操作执行无效,密码错误计数器将不会恢复为“111”。但只要EC不全为0,就允许外部接口设备IFD对芯片进行重试。当校验数据比较成功,加密存储器也同样被打开时,其单元中的参照数据也可以像其他EEPROM单元一样被读出和修改。PSC校验命令一览表如表2.4所示表2.4 PSC校验命令一览表命 令控制字地址字数据字备 注读加密存储器31H无效无效检查错误计数器是否还有“1”修改加密存储器39H00H输入数据将错误计数器其中一位由“1”写“0”比较校验数据33H01H输入数据参照字数据字节1比较校验数据33H02H输入数据参照字数据字节2比较校验数据33H03H输入数据参照字数据字节3修改加密存储器39H00HFFH擦除错误计数器读加密存储器31H无效无效检查错误计数器是否成功擦除设置SLE4442卡初始密码PSC1、PSC2、PSC3均为0FFH。读加密存储器的内容暂存于22H单元错误计数器、23H单元密码字节1、24H单元密码字节2、25H单元密码字节3、26单元程序如下:IO BIT P1.0CLK BIT P1.1RST BIT P1.2ICSW BIT P1.6PWR BIT P1.7PSC1 EQU 0FFHPSC2 EQU 0FFHPSC3 EQU 0FFHORG 0000HLJMP START*PSC校验子程序*COMP:MOV R7,#31H ;设置读加密存储器命令控制字MOV R6,#00H ;设置读加密存储器命令地址字(00H为错误计数器)MOV R5,#00H ;设置读加密存储器命令数据字(任意)LCALL COMMAND ;送读加密存储器命令LCALL SHIN ;读错误计数器MOV 22H,A ;错误计数器值暂存22H单元LCALL SHIN ;继续读入加密存储器后3个字节MOV 23H,ALCALL SHINMOV 24H,ALCALL SHINMOV 25H,AMOV A,22HSETB IO ;附加一个脉冲,置数据线为高LCALL DELAY_4sSETB CLKLCALL DELAY_4 sCLR CLKJB ACC.0,NEXT0 ;判断错误计数器中是否还有“1”JB ACC.1,NEXT1 ;如有“1”则减去一个“1”JB ACC.0,COMP2LJMP EXIT ;错误计数器为全“0”退出NEXT0:MOV R5,#06HMOV R4,#07HAJMP COMP0NEXT1:MOV R5,#04HMOV R4,#06HAJMP COMP0NEXT2:MOV R5,#00HMOV R4,#04HCOMP0:MOV R7,#39H ;设置修改加密存储器命令控制字MOV R6,#00H ;设置修改加密存储器命令地址字(错误计数器)LCALL COMMAND ;送修改加密存储器命令(错误计数器减一个1)LCALL OPERA123 ;处理模式MOV R7,#33H ;设置PSC校验命令控制字MOV R6,#01H ;设置PSC校验命令地址字MOV R5,#PSC1 ;取PSC第1个字节LCALL COMMAND ;送PSC校验命令给卡LCALL OPERA123 ;处理模式MOV R7,#33H ;设置PSC校验命令控制字MOV R6,#02H ;设置PSC校验命令地址字MOV R5,#PSC2 ;取PSC第2个字节LCALL COMMAND ;送PSC校验命令给卡LCALL OPERA123 ;处理模式MOV R7,#33H ;设置PSC校验命令控制字MOV R6,#03H ;设置PSC校验命令地址字MOV R5,#PSC3 ;取PSC第3个字节LCALL COMMAND ;送PSC校验命令给卡LCALL OPERA123 ;处理模式MOV R7,#39H ;设置修改加密存储器命令控制字MOV R6,#00H ;设置修改加密存储器命令地址字(错误计数器)MOV R5,R4 ;取修改加密存储器命令数据字(擦除错误计数器)LCALL COMMAND ;送修改加密存储器(擦除错误计数器)命令给卡LCALL OPERA123 ;处理模式MOV R7,#31H ;设置读加密存储器命令控制字MOV R6,#00H ;设置读加密存储器命令地址字(错误计数器)MOV R5,#00H ;设置读加密存储器命令数据字(任意)LCALL COMMAND ;送读加密存储器命令给卡LCALL SHIN ;读加密存储器的错误计数器MOV 22H,ALCALL SHIN ;读加密存储器的后3个字节MOV 23H,ALCALL SHINMOV 24H,ALCALL SHINMOV 25H,AMOV A,22HSETB IO ;附加一个脉冲,置数据线为高LCALL DELAY_4sSETB CLKLCALL DELAY_4sCLR CLKEXIT: RET2.2.7中止与错误状态1) 中止(Break)在CLK为低状态期间,如果RST置为高状态,则任何操作均无效,I/O线被锁定到高阻状态(Z状态)。需要一个最小维持时间tRES=5 s 之后,芯片才能接收新的有效复位。中止后芯片准备做进一步的操作。2) 错误状态(Failures)在芯片操作过程中,可能出现以下几种操作失败的情况:(1) 比较失败。(2) 错误命令。(3) 不正确的命令脉冲数。(4) 对已被保护的字节进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 白酒品鉴师考试试卷及答案
- 第二章 机械振动 易错点深度总结
- 上海市杨思中学2026届高考化学试题试卷含解析
- 建筑工人高温热射病早期识别与急救
- 互联网行业面试问题合集(2026适配运营、产品、技术)
- 吉林省吉林市第一中学2026年高三一模化学试题试卷(官方答案版)解答题有过程含解析
- 湖南省长沙雅礼中学2026年高三一轮复习第四次过关化学试题试卷含解析
- 2026届江西省抚州七校联考高三下学期3月摸底测试化学试题含解析
- 2026届河北省保定市长城高级中学下学期高三化学试题起点调研考试试卷含解析
- 餐厅装修工程施工合同
- 四川省达州市(2026年)辅警招聘公安基础知识考试题库及答案
- 2026年北京市丰台区初三下学期一模道德与法治试卷和答案
- 2026广西梧州苍海投资集团有限责任公司招聘总会计师1人笔试模拟试题及答案解析
- 《AQ3067-2026化工和危险化学品重大生产安全事故隐患判定准则》解读
- 农产品加工技术人员食品加工指导书
- 2026广东东莞市康复实验学校招聘18人备考题库及答案详解(各地真题)
- 企业信息安全程序指南(标准版)
- (陕西二模)2026年陕西省高三高考适应性检测(二)地理试卷(含答案)
- 2026北京市公安局监所管理总队招聘勤务辅警300人笔试参考题库及答案解析
- 企业内部控制风险案例解析
- YDT 5102-2024 通信线路工程技术规范
评论
0/150
提交评论