《逻辑加密卡》PPT课件.ppt_第1页
《逻辑加密卡》PPT课件.ppt_第2页
《逻辑加密卡》PPT课件.ppt_第3页
《逻辑加密卡》PPT课件.ppt_第4页
《逻辑加密卡》PPT课件.ppt_第5页
已阅读5页,还剩278页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章接触式IC卡技术,2.1实训1:接触式存储器卡与逻辑加密卡的存储结构2.2接触式IC卡的基本物理特性2.3接触式IC卡的芯片技术2.4典型存储器卡2.5实训2:接触式存储器卡的操作控制2.6典型逻辑加密卡2.7实训3:接触式逻辑加密卡的操作控制2.8接触式IC卡接口技术思考题,2.1实训1:接触式存储器卡与逻辑加密卡的存储结构,1实训目的(1)建立对接触式IC卡的感性认识。(2)理解和掌握接触式存储器卡的访问方式和典型存储结构。(3)理解和掌握接触式逻辑加密卡的访问方式和典型存储结构。,2实训设备与器件(1)实训设备:通用接触式IC卡读写器,586电脑,通用接触式IC卡读写器DEMO软件(使用方法参见厂商提供的使用手册)。(2)实训器件:AT24C01卡、SLE4442卡、AT88SC1604卡(白卡,实验室准备),IC卡电话卡(已发行,自备)。,3实训步骤与要求1)通用接触式IC卡读写器及DEMO软件的安装(1)按系统提示安装通用接触式IC卡读写器DEMO软件。(2)按标志连接通用接触式IC卡读写器的电源线及串口线,注意电源+5V与地不可接反。2)使用DEMO软件访问AT24C01卡(1)按使用手册的说明操作演示软件,对通用接触式IC卡读写器进行建立连接操作。(2)将AT24C01卡插入读写器卡座,选择卡型(自动识别卡型或选择AT24C01卡),进入卡操作界面。(3)对AT24C01卡进行读/写/擦除操作,记录操作结果及操作条件。,3)使用DEMO软件访问自备的IC卡电话卡(1)将IC卡电话卡插入读写器卡座,选择自动识别卡型,记录卡型。(2)进入卡操作界面对电话卡进行读/写/擦除操作,在表2.1中记录操作结果及操作条件。,表2.1电话卡存储结构记录表,4)使用DEMO软件访问SLE4442卡(1)将SLE4442卡插入读写器卡座,选择卡型,进入卡操作界面。(2)对SLE4442卡进行读/写/擦除操作,在表2.2中记录操作结果及操作条件。,表2.2SLE4442卡存储结构记录表,5)使用DEMO软件访问AT88SC1604卡(1)将AT88SC1604卡插入读写器卡座,选择卡型,进入卡操作界面。(2)对AT88SC1604卡进行读/写/擦除操作,在表2.3中记录操作结果及操作条件。,表2.3AT88SC1604卡存储结构记录表,4实训总结与分析(1)AT24C01卡的操作界面如图2.1所示。可以看到,AT24C01的存储容量为1Kb(128B),存储结构为1288b。可以按字节操作,所有字节的读/写/擦除均可任意进行。这种卡被称为存储器卡。存储器卡的详细内容参见2.3节。,(2)IC电话卡的操作界面如图2.2所示。DEMO软件自动识别该卡为SLE4406卡。可以看到,这种卡的存储容量为104b(13B),其中仅后5个字节为用户区,可按位操作。用户区可任意读、任意写(由1变为0称为写),但只能按字节借位擦除(由0变为1称为擦除)。当用户区全为0时,卡将作废。SLE4406卡是一种按位操作的逻辑加密卡,它以一次性的计数方式操作,因此这种卡也称为计数卡(TokenMemoryCard),其详细介绍参见2.6.1节。,图2.1AT24C01卡的操作界面,图2.2IC电话卡的操作界面,(3)SLE4442卡的操作界面如图2.3所示。,图2.3SLE4442卡的操作界面,通过操作我们发现,SLE4442卡具有2Kb(256B)的存储容量,它采用多存储器结构,包括三个存储器:2568b的EEPROM型主存储器,321b的PROM型保护存储器和48b的EEPROM型加密存储器。主存储器可重复擦除使用,按字节操作,并分为保护数据区和应用数据区,读出均不受限制,但保护数据区的擦除和写入受保护存储器熔丝状态的保护,而应用数据区的擦除和写入则受加密存储器中的密码及密码计数器保护。SLE4442卡是一种按字节操作的多存储器逻辑加密卡。,(4)AT88SC1604卡的操作界面如图2.4所示。通过操作我们发现,AT88SC1604卡的存储容量为16384b(2048B)。它采用单存储器多逻辑分区结构,主存储器除划分了特定的标志数据区和控制数据区之外,还将应用数据区分成四个完全隔离的子区,并在每个子区中配备了各自的读、写控制标志和写入/擦除密码以及密码输入错误计数器等逻辑控制。AT88SC1604卡是一种按字节操作的大容量逻辑加密卡。,5思考(1)若要构成一个接触式IC卡门禁系统,应采用哪一种卡,为什么?与传统的锁加钥匙的方式相比较,由接触式IC卡及其读写器构成的接触式IC卡门禁系统有何优胜之处?(2)分别说明AT24C01A、SLE4442和AT88SC1604的安全性是由哪些环节保证的?,图2.4AT88SC1604卡的操作界面,2.2接触式IC卡的基本物理特性,所谓接触式IC卡,就是在使用时,通过有形的金属电极触点将卡的集成电路与外部接口设备直接接触连接,提供集成电路工作的电源并进行数据交换的IC卡。其特点是在卡的表面有符合ISO/IEC7816标准的多个金属触点。,2.2.1接触式IC卡的基本构成,图2.5接触式IC卡外形图,图2.6接触式IC卡内部结构剖视图,在图2.6中,其各组成部分说明如下:(1)半导体芯片:它是IC卡的核心部分。一般采用0.380.8m的HCMOS或NMOS工艺制造的超大规模集成电路。在半导体芯片中包括存储器、译码电路、接口驱动电路、逻辑加密控制电路,甚至微处理器单元(CPU)等各种功能电路。其外形大小约为2mm1mm0.3mm。,(2)电极膜片:它是作为半导体芯片各输入/输出信号引脚与外部设备接触连接的导电体,它实际是一种精密的印刷电路板(PCB)。其基底为一层绝缘材料,(一般为环氧树脂玻璃或聚酰亚胺薄膜)。在基底的绝缘材料上沉积一层铜合金,并在其外端表面镀金,以提高其导电性能和防氧化能力。电极膜片的外形大小约为:长9.6213.65mm,宽9.3211.56mm。电极膜片的外形一般为矩形或椭圆形。这种形状上的差异主要是为了改善卡片的抗扭曲方面的机械特性。电极膜片上共有多个芯片电极,每个电极的中心位置和最小面积是有规定的。但各电极表面分隔形状没有规定。,图2.7接触式IC卡模块,(3)塑料基片:它是半导体芯片和电极膜片的载体。根据各生产厂家制卡工艺设备的要求,一般采用PVC(聚氯乙烯)、PET和ABS塑料材料。目前在国内所使用或封装生产的IC卡,基片材料大都使用PVC材料。但随着制卡技术不断发展和对工业环保的要求,PVC材料的使用将会逐渐受到一定的限制。因而目前国外的一些制卡厂商已逐渐将IC卡的基片材料转向改用PET或ABS材料。塑料基片的大小,对于满足国际标准识别卡的ID-1型的尺寸是85.6mm(长)53.98mm(宽)0.75mm(厚)。应该说明,由半导体芯片和电极膜片封装而成的IC卡模块(WireBodedModule,如图2.7所示)就可以实现IC卡的基本功能。,2.2.2接触式IC卡的触点尺寸和位置符合国际标准的IC卡的物理特性主要由国际标准ISO7810、ISO7811-1/2/3/4、ISO7812、ISO7813和ISO/IEC7816-1等定义。其主要特性指标包括几何尺寸、抗X射线能力、触点与卡基表面的误差、电阻(触点)、抗电磁干扰、抗磁场干扰、抗静电能力、热耗、抗弯曲特性以及抗扭曲特性等。上述物理特性及其检测方法参见相关国际标准。接触式IC卡有8个触点,即集成电路引脚,从C1到C8,如图2.8所示。国际标准ISO/IEC7816-2对接触式集成电路卡的触点尺寸和芯片位置以及功能作了具体的规定。,图2.8接触式IC卡的触点位置,IC卡的电极膜片(即8个触点)既可安排在塑料基片的正面,也可安排在反面。触点之间的排列顺序必须按图2.8所示排列。各触点在卡基平面的几何尺寸、位置均以卡触点的接触面的左边沿和上边沿为基准边。其触点的尺寸及位置如图2.8所示。在ISO/IEC7816-2中对每个触点的几何形状和最大面积虽然没有规定,但却规定了每个触点表面积的内切矩形面积不得小于2mm1.7mm。各触点之间应相互隔离。而相邻两个触点之间的最大距离为0.84mm。8个触点所占最大面积没有规定,但规定最小面积不小于9.62mm(长)9.32mm(宽)的矩形平面。,表2.4接触式IC卡的触点功能,2.3接触式IC卡的芯片技术,2.3.1存储器卡1存储器卡的逻辑结构,图2.9存储器卡的逻辑结构图,2存储器卡的特点(1)卡内嵌入的芯片多为通用EEPROM(或FlashMemory)。(2)无安全控制逻辑,可对片内信息不受限制地任意存取。(3)卡片制造中也很少采取安全保护措施。(4)不完全符合或支持ISO/IEC7816国际协议,而多采用2线串行通信协议(I2C总线协议)或3线串行通信协议(SPI协议)。,3存储器卡的主要应用场合存储器卡功能简单,没有(或很少有)安全保护逻辑,但价格低廉、开发使用简便、存储容量增长迅猛,因此多用于某些简单的、内部信息无需保密或不允许加密(如急救卡)的场合。4存储器卡的代表产品存储器卡的代表产品为美国Atmel公司的EEPROM卡AT24系列2线串行芯片和AT93系列3线串行系列,FlashMemory卡AT45D系列(28Mb,SPI协议)。,表2.5EEPROM存储器卡芯片,2.3.2逻辑加密卡1逻辑加密卡的逻辑结构,图2.10逻辑加密卡的逻辑结构图,2逻辑加密卡的特点(1)具有安全控制逻辑,安全性能较好。(2)同时采用ROM、PROM、EEPROM等存储技术。(3)从芯片制造到交货,均采取较好的安全保护措施,如运输密码TC(TransportCode)的取用。(4)支持ISO/IEC7816国际标准。(5)一般均为专门为IC卡设计的芯片。(6)为提高安全性,逻辑加密卡的存储空间被分为多个不同的功能区,典型的存储结构如表2.6所示。,表2.6逻辑加密卡的存储结构,3逻辑加密卡的应用场合与代表产品由于具有一定的保密功能,且价格较CPU卡低,因此在需要保密但对安全性要求不是太高的场合,逻辑加密卡得以大量应用,如电话卡、网吧上网卡、停车卡等小额消费场合,已成为目前IC卡在非金融领域的最主要的应用形式。(1)安全数据存储、传输和处理:面向字节操作的逻辑加密卡,如Atmel的AT88SC200、Philips的PC2032/2042、Siemens的SLE4418/4428/4432/4442等,应用于保险卡、加油卡、驾驶卡、借书卡等。,(2)相关数据记录、存储、处理,包括:一次性使用的不可重置式,如Siemens的SLE4406/4436、Atmel的AT88SC06、Gemplus的GPM276/103。可重置式,如Siemens的SLE4404(64次)、Atmel的AT88SC101/102(128次),应用于IC卡电话、小额电子钱包。,表2.7Siemens系列逻辑加密卡芯片的特性参数,2.3.3CPU卡1CPU卡的逻辑结构CPU卡的硬件构成包括CPU、存储器(含RAM、ROM、EEPROM等)、卡与读写终端通信的I/O接口及加密运算协处理器CAU,其中:(1)CPU一般均为兼容于位字长单片机(如MC68HC05、Intel8051等)的微处理器。它将在COS(ChipOperationSystem,片内操作系统)控制下,实现卡与外界的信息传输、加密、解密和判别处理等。(2)ROM用于存放COS,316KB。(3)RAM用于存放中间处理结果及作为卡与读写器间信息交换的中间缓存器,128B1KB。,(4)EEPROM则是真正可供用户访问的存储区,用于保存卡的各种信息、密码、密钥、应用文件等,116KB。(5)CPU卡通常采用DES、RSA等加密、解密算法提高系统的安全度,采用RSA等算法时要进行对运算速度要求较高的大指数模运算,8位的CPU将难以胜任,因此多设有专用加密、解密运算协处理器CAU。例如Siemens的SLE44C20,内含8位字长的CPU、15KB的ROM、32B的PROM、2KB的EEPROM和256B的RAM。,2CPU卡的特点(1)片内带有CPU、各种存储器ROM、RAM以及专用加密、解密运算协处理器CAU,具有很高的数据处理和计算能力以及较大存储容量,因此应用的灵活性、适应性较强。(2)在硬件结构、操作系统、制作工艺上采取多层次安全措施,保证了其极强的安全防伪能力。它不仅可验证卡和持卡人的合性法,而且可鉴别读写终端,即进行双向认证。,3CPU卡的主要应用场合与典型产品目前CPU卡多用于一卡多用(一卡通)及对数据安全保密性特别敏感的场合,如金融信用卡、手机SIM卡等。CPU卡的详细内容参见第4章。本章将以存储器卡和逻辑加密卡为基础介绍接触式IC卡的芯片及接口技术。,2.4典型存储器卡,2.4.1AT24Cxx系列存储器卡芯片总体描述1芯片特点(1)低电压/标准电压操作:1.85V。(2)内部组成:1288(AT24C01),2568(AT24C02),5128(AT24C04),10248(AT24C08),20488(AT24C16)的串行EEPROM。(3)2线串行接口。(4)双向数据传输协议。,(5)支持ISO/IEC7816-10同步协议。(6)8B页面(AT24C01/02),16B页面(AT24C04/08/16)写入方式。(7)自定时写入周期(最大10ms)。(8)高可靠性:使用寿命为100000次写/擦除,数据保留期为100年。(9)多种封装形式:提供芯片、模块及标准封装形式。,2芯片封装及引脚功能1)封装,图2.11AT24Cxx触点分配图,表2.9IC卡触点功能表,2)引脚功能说明SCL:串行时钟输入(SerialClockInput)。串行时钟上升沿时,数据输入芯片(写入);串行时钟下降沿时,数据从芯片输出(读出)。SDA:串行数据(SerialDAta),双向串行传送数据。该端为漏极开路驱动,可与任意数量的其他漏极开路或集电极开路器件“线或”。A2、A1、A0:器件/页面地址(DevicPageAddresses)。器件地址输入端,应用于标准封装中,在IC卡模块封装中不将A2、A1、A0引出到触点上,详细使用见“器件寻址”。,3逻辑结构与存储器组织,图2.12AT24Cxx的逻辑结构,2.4.2器件操作1时钟和数据转换,图2.13AT24Cxx数据的有效性时序图,1)输出数据当数据(包括地址、数据)由接口设备送往AT24Cxx时,称为输出数据(写数据)。数据总是按字节(8位)逐位串行输出,每个时钟脉冲输出一位。SDA总线上的数据应在SCL低电平期间改变(输出),在SCL高电平期间稳定。基于MCS-51单片机的接口设备可利用如下串行输出字节子程序SHOUT来实现输出(写)一个字节数据的操作。,SHOUT:;串行输出一个字节到AT24Cxx,高位在前。调用前,SCL、SDA为低。返回时,SCL为低。调用时数据置入A中。返回CY为1表明应答失败。占用A累加器PUSHBMOVB,#8;设置位计数器L1:RLCA;移一位到CY中MOVSDA,C;输出位NOP;保持SCL为低且使数据稳定SETBSCL;升高时钟ACALLDELAY_4s;保持SCL为高,CLRSCL;降低时钟DJNZB,L1;传送下一位SETBSDA;释放SDA等待应答NOP;保持SCL为低,保持时间tAANOPSETBSCL;升高ACK时钟脉冲ACALLDELAY_4s;保持SCL为高MOVC,SDA;读入ACK位CLRSCL;降低ACK时钟脉冲POPBRET,2)输入数据当接口设备从AT24Cxx的数据线上读取数据时,称为输入数据(读数据)。数据总是按字节(8位)逐位串行输入,每个时钟脉冲输入一位。AT24Cxx的EEPROM在SCL低电平期间将数据送往SDA总线,在SCL高电平期间,SDA总线上的数据稳定,可供接口设备读取。基于MCS-51单片机的接口设备可利用如下串行输入字节子程序SHIN来实现输入(读)一个字节数据的操作。,SHIN:;从AT24Cxx串行输入一个字节,高位在前。调用前,SCL为低。返回时,SCL为低。返回时接收到的数据置于A中SETBSDA;使SDA为高,准备读PUSHBMOVB,#8;设置位计数器L2:NOP;保持SCL为低且使数据稳定NOPSETBSCL;升高时钟,NOP;保持SCL为高NOPMOVC,SDA;输入位RLCA;将位移入ACLRSCL;降低时钟DJNZB,L2;传送下一位POPBRET,2开始状态(START)SCL处于高电平时,SDA从高电平转向低电平表示一个“开始”状态,该状态表示一种操作的开始,因此必须在任何其他命令之前执行。AT24Cxx开始/停止定义时序图见图2.14。,图2.14AT24Cxx开始/停止定义时序图,基于MCS-51单片机的接口设备可利用如下开始子程序START来实现一个开始操作。START:;发送START状态,定义当SCL为高时,SDA从高到低。返回时,SCL、SDA为低。当总线无效时,返回CY位为高SETBSDA;升高SDASETBSCL;校验总线有效JNBSDA,ERROR1;若SDA不为高则跳转到ERROR1JNBSCL,BACK1;若SDA不为高则跳转到BACK1NOP;保持数据建立延迟及周期延迟,CLRSDA;降低SDAACALLDELAY_4s;保持SDA为低,保持时间holddelayCLRSCL;降低SDLCLRC;清零错误标志AJMPBACK1ERROR1:SETBC;置位错误标志BACK1:RET,3停止状态(STOP)SCL处于高电平时,SDA由低电平转向高电平表示一个“停止”状态。该状态表示一种操作的结束并将终止所有通信。在一个读序列之后,停止命令置EEPROM于待机模式。其停止定义时序图见图2.14。基于MCS-51单片机的接口设备可利用如下停止子程序STOP来实现一个停止操作。,STOP:;发送STOP状态,定义当SCL为高时,SDA从低变高。调用前,SCL为低。返回时,SCL、SDA为高CLRSDANOP;保持SCL为低及数据稳定NOPSETBSCLACALLDELAY_4s;保持建立延迟SETBSDARET,4确认应答(ACK)所有地址和数据字以位码串行输入/输出EEPROM,EEPROM在收到每个地址或数据码之后,置SDA于低电平作为确认应答,该确认应答发生于第9个时钟周期,见图2.15。,图2.15AT24Cxx确认应答时序图,在串行输出字节子程序SHOUT中我们可以清楚地看到,当接口设备向卡发送完8位数据后,程序将产生第9个时钟脉冲并将SDA线读入CY位,此时CY位的状态即为卡响应状态。当CY=1时表示卡尚未接收到数据,不能进行下一步的操作;当CY=0时表示卡已接收到数据,可以进行下一步的操作。,5待机模式AT24Cxx的特性之一是具备待机模式,这一模式当电源掉电;接收到STOP位或完成任何一个内部处理之后有效。6存储器复位当电源掉电、系统复位或协议中断时,任何一个2线的部分都可通过以下步骤复位:(1)9个时钟周期之后;(2)在每个时钟周期当SCL为高时等待SDA为高;(3)产生一个START状态。,2.4.3器件寻址以上AT24系列EEPROM在紧接着开始状态后均需一个8位器件地址(DeviceAddress),如图2.16所示,以使器件能够进行读/写操作。器件地址高4位为1010,这对所有器件都是相同的。在标准封装中,接下来的3位器件寻址码将因芯片容量的不同而有不同的定义:对于AT24C01/02来说,下面3位器件寻址码是A2、A1、A0,这3位必须与它们相应的硬件连线输入引脚相对应。,图2.16AT24Cxx器件地址,对于AT24C04来说,仅用A2和A1器件寻址位,第3位是存储器页面寻址位。2个器件寻址位必须与硬件连线输入引脚相对应,A0引脚不连接。对于AT24C08来说,仅用A2器件寻址位,下面2位是存储器页面寻址。A2必须与硬件连线输入引脚相对应,A1和A0引脚不连接。对于AT24C16来说,无器件寻址位。这3位均用于存储器页面寻址,A0、A1、A2不连接。,AT24C04/08/16的页面寻址位应被视为随后数据码寻址的最高位。IC卡上使用的EEPROM芯片,因受尺寸限制,一般只能使用一个芯片,同时应符合国际标准,因此A2、A1、A0未引出到触点上,A2A1A0=000。器件寻址的第8位是读/写操作选择位,该位为高电平时启动读操作,处于低电平时启动写操作。设备寻址一经成功,EEPROM将在SDA总线上输出一个确认应答ACK;相反,则芯片回到待机状态。,2.4.4写操作1写字节(BYTEWRITE)写字节时序见图2.17。写字节时序要求在给出“开始”状态、器件地址码和收到卡的确认应答ACK后,紧跟着给出一个8位地址码(32KB芯片是2个8位地址码)。卡收到地址码后发出确认应答ACK。然后送要写的8位数据到SDA线上,并进入EEPROM单元,每个时钟节拍送入1位。EEPROM单元收到数据后,通过SDA线发出确认应答ACK。数据传送设备必须用“停止”状态来结束写操作。这时EEPROM进入内部定时的写周期,如图2.18中的tWR,在写周期期间,将数据写入非易失性存储器,并禁止所有其他操作直到写完成。,图2.17AT24Cxx写字节时序图,图2.18AT24Cxx写周期时序图,基于MCS-51单片机的接口设备可利用如下写字节子程序WRITE_BYTE来实现写字节操作。WRITE_BYTE:;AT24Cxx写字节功能。调用前可编程的器件地址programmableaddress置于A中,字节地址置于寄存器ADDR_HI和ADDR_LO中,数据置于寄存器XDATA中。未等待写周期完成。返回CY为1表明总线无效或该器件无应答。占用A累加器ACALLSTARTJCBACK2;若总线无效则中断RLA;可编程地址左移一位ORLA,#FADDR;加入固定器件地址CLRACC.0;设置写,建立器件地址,ACALLSHOUT;发送器件地址JCERROR2;若无应答则中断MOVA,ADDR_HI;发送字节地址的高8位ACALLSHOUTJCERROR2;若无应答则中断MOVA,ADDR_LO;发送字节地址的低8位ACALLSHOUTJCERROR2;若无应答则中断MOVA,ADATA;取数据ACALLSHOUT;发送数据JCERROR2;若无应答则中断CLRC;清零错误标志,ERROR2:ACALLSTOPBACK2:RET,2写页面(PAGEWRITE)AT24C01/02可以进行8B页面写入,AT24C04/08/16可以进行16B页面写入。启动写页面与启动写字节操作一样,但数据传送设备无需在第一个字节随时钟输入后发出一个停止状态;在EEPROM确认收到第一个数据码之后,数据传送设备再传送7个(对于AT24C01/02)或15个(对于AT24C04/08/16)数据码;每收到一个数据,EEPROM都将通过SDA回送一个确认应答信号,最后数据传送设备通过“停止”状态终止写页面操作,其过程见图2.19。,图2.19写页面时序图,数据地址的低3位(对于AT24C01/02)或4位(对于AT24C04/08/16)在收到每个数据字后,在芯片内部自动加1。数据字地址的高位字节保持不变,以保持存储器页地址不变。如果传送到EEPROM中的数据字超过8(对于AT24C01/02)或16(对于AT24C04/08/16),数据字地址将“滚动覆盖”,以前写入的数据将被覆盖。基于MCS-51单片机的接口设备可利用如下写块子程序WRITE_BLOCK来实现写页面操作。,WRITE_BLOCK:;向AT24Cxx写入一页数据。调用时器件地址的可编程地址置于A中,第一个字节地址置于寄存器ADDR_HI和ADDR_LO中,数据置于BUFFER中,字节计数器置于寄存器COUNT中。未等待写周期完成。返回时CY位为1表明总线无效或器件无应答。占用A,COUNT,INDEX(注:INDEX为数据缓冲区指针,可使用工作寄存器R0)ACALLSTARTJCBACK3;总线无效则中断RLAORLA,#FADDR;生成器件地址,CLRACC.0;定义写操作ACALLSHOUT;发送器件地址JCERROR3;无应答则中断MOVA,ADDR_HI;发送字节地址高8位ACALLSHOUTJCERROR3;无应答则中断MOVA,ADDR_LO;发送字节地址低8位ACALLSHOUTJCERROR3;无应答则中断MOVINDEX,#BUFFER;指向数据缓冲区首地址,L3:MOVA,INDEX;取数据ACALLSHOUT;发送数据JCERROR3;无应答则中断INCINDEX;地址指针加1DJNZCOUNT,L3;下一个字节CLRC;清零错误标志ERROR3:ACALLSTOPBZCK3:RET,3确认查询(ACKNOWLEDGEPOLLING)一旦内定时写循环开始且禁止EEPROM输入,确认查询将被启动。当数据传送设备在送出一个“开始”状态以及紧随其后的器件地址码(读/写位代表所要进行的操作)时,只有在内定时写循环完成时,EEPROM才通过拉低SDA总线发出“确认”应答,允许读或写过程继续进行。AT24Cxx系列存储器芯片的内定时写周期(tWR)最大为10ms,因此,每完成一个写操作,应延时约10ms或查询SDA总线重新为低时才能发出下一个操作的开始命令,否则下一次操作命令将不被器件接收、执行。,2.4.5读操作1现行地址读(CURRENTADDRESSREAD)内部数据字地址指针总是保持最后一次读/写操作中最后访问的地址,并按“1”递增。只要芯片保持上电,该地址在两次操作之间一直保持有效。如果最后一个操作是在地址n处读取,则现行地址是n+1;如果最后一个操作是在地址n处写入,则当前地址也是n+1。在出现“滚动覆盖”的情况时,读操作的地址是从最后一页的最后一个字节滚动覆盖到第一页的第一个字节,而写操作的地址是从当前页的最后一个字节滚动覆盖到同一页的第一个字节。,图2.20现行地址读时序图,一旦读/写选择位置于1,器件地址随时钟输入,并收到EEPROM的确认应答,现行地址的数据码随时钟被EEPROM串行输出。此时数据传送设备(微控制器)可在SDA线上随时钟串行读入数据。读取数据结束后,微控制器不是通过确认(低电平ACK)来应答,而是使总线处于高电平(NOACK),随后产生一个停止状态,见图2.20。基于MCS-51单片机的接口设备可利用如下现行地址读子程序READ_CURRENT来实现现行地址读操作。,READ_CURRENT:;AT24Cxx现行地址读功能。调用时,器件地址的可编程地址置于A中,返回数据置于A中。返回时,CY位为1表明总线无效或器件无应答ACALLSTARTJCBACK4;若总线无效则中断RLAORLA,#FADDR;生成器件地址SETBACC.0;设置读操作ACALLSHOUT;发送器件地址JCERROR4;若无应答则中断ACALLSHIN;接收数据字节,ACALLNAK;发送高电平NAK应答CLRC;清零错误标志ERROR4:ACALLSTOPBACK4:RET注意:写操作中卡接收到数据(地址、数据)后向接口设备发送低电平应答ACK,程序通过将第9个时钟周期的SDA线读入CY位来接收应答,查询CY位是否为低来判断是否收到卡确认应答。而读操作中是接口设备接到数据后向卡发送高电平应答(NOACK),该高电平应答由NAK子程序来产生。,NAK子程序:NAK:;随时钟输出一个高电平的负应答位。调用前SCL为低,返回时SCL为低,SDA为高SETBSDA;NAK位NOP;保持SCL为低及数据稳定NOPSETBSCL;升高时钟ACALLDELAY_4s;保持SCL为高CLRSCL;降低时钟RET,2随机地址读(RANDOMADDRESSREAD)随机读取需要一个“空”字节写序列来载入数据地址,一旦器件地址(读/写选择位置低)和数据地址随时钟输入,并被EEPROM确认,传送设备必须产生另一个开始状态。此时送出的器件地址中读/写选择位处于高电平,将启动一个现行地址读,EEPROM收到器件地址后回送确认应答,并随时钟串行输出数据码,微控制器读取数据后不通过确认应答,而是使SDA总线处于高电平,随后产生一个停止状态,见图2.21。基于MCS-51单片机的接口设备可利用如下随机地址读子程序READ_RANDOM来实现随机地址读操作。从程序中可以看到,在完成了一个“空”写之后,直接调用上面给出的现行地址读子程序就可以实现随机地址读操作了。,图2.21随机地址读时序图,READ_RANDOM:;AT24Cxx随机地址读功能。调用时器件地址的可编程地址置于A中,字节地址置于寄存器ADDR_HI和ADDR_LO中,返回数据置于A中。返回时CY位为1表明总线无效或器件无应答PUSHBMOVB,A;可编程器件地址暂存B中;*发送空写命令来设置内部地址*ACALLSTARTJCBACK5;总线无效则中断RLAORLA,#FADDR;生成器件地址,CLRACC.0;设置写操作ACALLSHOUT;发送器件地址JCERROR5;无应答则中断MOVA,ADDR_HI;发送字节地址高8位ACALLSHOUTJCERROR5;无应答则中断MOVA,ADDR_LO;发送字节地址低8位ACALLSHOUTJCERROR5;无应答则中断;*调用现行地址读功能*,MOVA,B;取可编程器件地址ACALLREAD_CURRENTAJMPBACK4;退出ERROR5:ACALLSTOPBACK5:POPBRET,3顺序读(SEQUENTIALREAD)顺序读取由现行读或随机地址读启动。微控制器收到一个数据码之后回送“确认”应答,只要EEPROM收到“确认”之后,便会继续增加数据地址并随时钟串行输出后面的数据。当达到存储地址极限时,数据地址将重复滚动,顺序读取将继续;当终止顺序读操作时,微控制器不产生低电平确认信号,而是使SDA总线处于高电平应答,随后产生一个停止状态。顺序读时序图见图2.22。,图2.22顺序读时序图,基于MCS-51单片机的接口设备可利用如下读块子程序READ_BLOCK来实现顺序读操作。READ_BLOCK:;从AT24Cxx读一页数据。当读出超过一个字节时执行由随机地址读扩展而来的顺序读。调用时器件地址的可编程地址置于A中,第一个字节地址置于寄存器ADDR_HI和ADDR_LO中,字节计数器置于寄存器COUNT中。返回时数据置于BUFFER中。返回时CY为1表明总线无效或器件无应答。占用A,COUNT,INDEX(注:COUNT为字节计数器,可使用工作寄存器R1),;*发送空写命令来设定第一个字节的地址*ACALLSTARTJCBACK6;若总线无效则中断RLAORLA,#FADDR;生成器件地址MOVINDEX,A;暂存器件地址于INDEXCLRACC.0;设置写操作ACALLSHOUT;发送器件地址JCERROR6;若无应答则中断MOVA,ADDR_HI;发送字节地址高8位ACALLSHOUTJCERROR6;若无应答则中断MOVA,ADDR_LO;发送字节地址低8位ACALLSHOUTJCERROR6;若无应答则中断,;*发送读命令及接收数据*ACALLSTART;第二次开始启动读操作JCERROR6;若总线无效则中断MOVA,INDEX;从INDEX中取器件地址SETBACC.0;设置读操作ACALLSHOUT;发送器件地址JCERROR6;若无应答则中断MOVINDEX,#BUFFER;指向数据缓冲区首地址L6:ACALLSHIN;接收数据字节MOVINDEX,A;保存数据CJNECOUNT,#1,NEXT;不是最后一个字节则继续ACALLNAK;读完发送NAK应答AJMPDONE;完成,NEXT:ACALLACK;发送ACK应答字节INCINDEX;数据缓冲区地址加1DJNZCOUNT,L6;读下一个字节DONE:CLRC;清零错误标志ERROR6:ACALLSTOPBACK6:RET,注意:写操作中卡接收到数据后向接口设备发送低电平应答ACK,程序通过将第9个时钟周期的SDA线读入CY位来接收应答,查询CY位是否为低来判断是否收到卡确认应答。而顺序读操作中接口设备每接到一个字节的数据后向卡发送低电平应答ACK,该低电平应答由ACK子程序来产生。,ACK子程序:ACK:;随时钟输出一个低电平应答位。调用前SCL为低。返回时,SCL、SDA为低CLRSDA;应答位NOP;保持SCL为低及数据稳定NOPSETBSCL;升高时钟脉冲ACALLDELAY_4s;保持SCL为高CLRSCL;降低时钟脉冲RET,2.5实训2:接触式存储器卡的操作控制,1实训目的(1)进一步理解和掌握AT24Cxx系列存储器卡的操作时序。(2)掌握接触式IC卡接口电路的原理与设计、制作方法。(3)掌握按操作时序编写和调试卡操作(读/写)控制程序的方法。,2实训设备与器件(1)实训设备:通用接触式IC卡读写器及其DEMO软件,586电脑,5V稳压电源,MCS-51系列单片机仿真系统。(2)实训器件:AT24C01卡,接触式IC卡卡座,PNP三极管9012,10k电阻3个,1.2k电阻1个,40脚IC座。(3)实训电路:接触式存储器卡接口电路如图2.23所示。其中接口设备MCU选用AT89C51单片机,SMARTADP为接触式IC卡卡座,AT89C51的P1.0、P1.1分别通过卡座接AT24C01卡的串行数据端SDA和串行时钟端SCL,P1.6接卡插入测试端SW2,P1.7接PNP三极管9012的基极,为上电控制端。SCL、SDA及SW2均通过10k的上拉电阻,接+5V。该接口电路的功能、工作原理参见2.8节。,图2.23接触式存储器卡接口电路,3实训步骤与要求1)实训准备(1)按电路原理图焊接好接触式IC卡接口电路,注意卡座各触点引脚与卡触点应一一对应;9012的集电极接卡座的VCC端,发射极接+5V电源,切勿接反。(2)用万用表测试卡座的SW1、SW2引脚,识别是常开还是常闭卡座。根据卡座的类型编写插卡识别程序。卡座类型的识别方法及插卡识别程序参见2.8节。(3)认真阅读下述上/下电控制程序PWRON/PWROFF。上电控制程序:判断是否有卡插入,无卡插入则等待,卡座(卡)VCC端保持为低电平,避免带电插卡导致接口电路或卡的损坏;插卡后加电,卡座(卡)VCC端为+5V。,上电控制程序如下:PWRON:LCALLRECOG;调用插卡识别程序CLRSCL;SCL=L,准备加载时钟LCALLDELAY_0.5ms;使端口逻辑信号稳定CLRPWR;加电CLRSDA;SDA=L,准备传送数据RET,下电控制程序:通过置位PWR端使卡座(卡)VCC端恢复为低电平,需要特别注意的是,必须执行完该子程序后方能拔卡。下电控制程序如下:PWROFF:CLRSCL;SCL=L,释放SCLCLRSDA;SDA=L,释放SDALCALLDELAY_0.5ms;延时稳定SETBPWR;下电RET,常开型卡座插卡识别程序RECOG如下:RECOG:JBSW,RECOG;无卡插入则等待LCALLDELAY_5ms;延时去抖JBSW,RECOG;再次判断,无卡插入则等待RET;确实有卡插入,返回,(4)认真阅读所附的实训程序,并将程序调用的各功能子程序START、STOP、SHIN、SHOUT、ACK、NAK(见2.4.2节)补充完整。,2)程序调试(1)利用接触式IC卡读写器查看并记录AT24C01卡的存储记录。(2)用万用表检查电路,确认连接正确。将MCS-51系列单片机仿真器的仿真头插入实验电路板上的40脚IC座。在MCS-51系列单片机仿真开发系统中打开并编译实训范例程序1。在卡地址缓冲区(首地址为20H的片内RAM)中设置将被更新的16个卡存储单元地址(例如00H0FH),在写数据缓冲区(首地址为30H的片内RAM)中设置要写入的16个数据(如00H、11H、.、FFH),注意不要与卡中的原始数据相同,清零读数据缓冲区(首地址为40H的片内RAM)。,(3)调试上电控制程序。在程序标志的断点处设置断点。运行程序1。未插卡时,程序是否能在断点处暂停?此时测试并记录卡座VCC端电压。插入IC卡,程序是否能在断点处暂停?再次测试并记录卡座VCC端电压。比较插卡前后的实验现象与实验数据,说明原因。(4)取消断点,屏蔽读字节程序,单独调试写字节程序:在程序标志的断点处设置断点。运行程序1并插卡,程序在断点处暂停时,记录CY位状态;取出AT24C01卡,用读写器读出被更新单元的内容,验证是否正确写入。当写入不正确时,可能的出错原因有哪些,应如何通过调试查找错误?,(5)若写字节程序正确,取消屏蔽,调试读字节程序。运行程序1,并插卡,程序在断点处暂停时,记录CY位状态及读数据缓冲区数据,验证是否正确读出(是否与写数据缓冲区一致)。当读出不正确时,可能的出错原因有哪些,应如何通过调试查找错误?(6)打开并编译实训范例程序2。在卡地址缓冲区(首地址为20H的片内RAM)中设置将被更新的1页卡存储单元地址(例如00H07H),在写数据缓冲区(首地址为30H的片内RAM)中设置要写入的8个数据(如00H、11H、.、77H),注意不要与卡中的原始数据相同,清零读数据缓冲区(首地址为40H的片内RAM)。,(7)屏蔽读页程序,单独调试写页程序。在程序标志的断点处设置断点。运行程序2并插卡,程序在断点处暂停时,记录CY位状态;取出AT24C01卡,用读写器读出被更新页的内容,验证是否正确写入。当写入不正确时,可能的出错原因有哪些,应如何通过调试查找错误?(8)若写页程序正确,则取消屏蔽,调试读页程序。运行程序2,并插卡,程序在断点处暂停时,记录CY位状态及读数据缓冲区数据,验证是否正确读出(是否与写数据缓冲区一致)。当读出不正确时,可能的出错原因有哪些,应如何通过调试查找错误?,4实训总结与分析(1)当上电控制电路正常,上电控制程序正确时,运行上电控制程序。未插卡时,程序循环等待插卡,卡座的VCC端保持低电平,保证不带电插卡;插卡后,程序向下运行到断点处,卡座的VCC端变为高电平,给IC卡芯片提供工作电源。(2)无论按字节或按页操作时,读/写子程序正确则CY位应为0。当读/写出错且CY位为1时,较为常见的出错原因包括:上电控制程序或电路出错,未能加电或电压太低;SCL、SDA、SW2未加上拉电阻(或上拉电阻选择不当)导致没有高电平;SCL、SDA、SW2、PWR的接口定义与硬件不符;读/写流程有误。通过在程序适当位置设置断点,检查各接口电平及查看各断点处CY位(应答)可查出出错原因。,(3)当读/写出错而CY位为0时,表示读/写子程序正确,出错的原因是数据块传输不正确,即循环过程出错。注意:在字节操作中,指针的加1和循环的判断在每次调用STOP之后;而页操作中,循环结束后才调用STOP。,5思考(1)在范例程序1和程序2中,同样是对卡中的某一数据块进行读/写操作,二者的实现方式有何不同?(2)当接口电路采用常开型卡座,却错误地使用了常闭型插卡识别程序,会出现什么现象?为什么?反之当接口电路采用常闭型卡座,却错误地使用了常开型插卡识别程序,会出现什么现象?为什么?(3)当上述实验采用的是AT24C64卡时,应如何修改程序?,6附录实训范例主程序程序1按字节将AT89C51写数据缓冲区中的16个字节数据写入卡中连续的16个存储单元中,然后再按字节将这16个存储单元的内容读入到AT89C51读数据缓冲区中。程序2按页将AT89C51写数据缓冲区中的8个字节数据写入卡中连续的8个存储单元(1页)中,然后再按字节将这8个存储单元(1页)的内容读入到AT89C51读数据缓冲区中。其中,写数据缓冲区首地址为30H,读数据缓冲区首地址为40H,卡地址缓冲区首地址为20H。,程序1:按字节操作。SDABITP1.0SCLBITP1.1ICSWBITP1.6PWRBITP1.7ORG0000HLJMPBYTEOPRORG0080H,BYTEOPR:MOVSP,#50HLCALLPWRON;上电控制MOVR0,#20H;设置卡地址缓冲区指针R0,断点MOVR1,#30H;设置写地址缓冲区指针R1LCALLWRITE_BYTEMOVR0,#20H;设置卡地址缓冲区指针R0MOVR1,#40H;设置读地址缓冲区指针R1LCALLREAD_BYTELCALLPWROFFSJMP$;断点,WRITE_BYTE:MOVR7,#10H;R7为要写的字节数LOOP1:LCALLSTART;开始JCEXIT1MOVA,#0A0H;送器件地址到A,设置写LCALLSHOUT;输出器件地址到IC卡JCFAULT1;判断是否有应答MOVA,R0;从卡地址缓冲区取字地址LCALLSHOUT;输出字地址到IC卡JCFAULT1;判断是否有应答MOVA,R1;从写数据缓冲区取数据LCALLSHOUT;输出字地址到IC卡JCFAULT1;判断是否有应答CLRC;设置操作成功标志,FAULT1:LCALLSTOP;停止ACALLDELAY_10ms;等待内定时写周期结束INCR0;卡地址缓冲区地址+1,指向下一个要写入的卡单元INCR1;写数据缓冲区地址+1,指向下一个数据DJNZR7,LOOP1;未写完继续EXIT1:RETREAD_BYTE:MOVR7,#10H,LOOP2:LCALLSTART;开始JCEXIT2MOVA,#0A0H;送器件地址到A,设置空写LCALLSHOUT;输出器件地址到IC卡JCFAULT2;判断是否有应答MOVA,R0;从卡地址缓冲区取字节地址LCALLSHOUT;输出字地址到IC卡JCFAULT2;判断是否有应答LCALLSTART;开始MOVA,#0A1H;送器件地址到A,设置读LCALLSHOUT;输出器件地址到IC卡JCFAULT2;判断是否有应答LCALLSHIN;读取IC卡的数据MOVR1,A;送入读数据缓冲区LCALLNAK;送NOACK给卡CLRC;设置操作成功标志,EXIT2:LCALLSTOP;停止INCR0;卡地址缓冲区地址+1,指向下一个被读入的卡单元INCR1;读数据缓冲区地址+1,指向下一个读入数据的存储单元DJNZR7,LOOP2;未读完继续FAULT2:RET程序2:按页操作。SCLBITP1.0SDABITP1.1ICSWBITP1.2PWRBITP1.3ORG0000HLJMPPAGEOPRORG0080H,PAGEOPR:MOVSP,#50HLCALLPWRONMOVR0,#20H;设置卡地址缓冲区指针R0MOVR1,#30H;设置写地址缓冲区指针R1LCALLWRITE_PAGEMOVR0,#20H;设置卡地址缓冲区指针R0,断点MOVR1,#40H;设置读地址缓冲区指针R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论