IC卡的原理和使用econy仁科单片机开发有限公司一、IC卡简介IC卡是英文“集成电路卡”的缩写,是近年来传入中国的一项新技术。它是把具有存储、运算等功能的集成电路芯片压制在塑料片上,使其成为能存储、转载、传递、处理数据的载体。在日常生活中,IC卡的使用越来越广泛,而且还有进一步扩大的趋势。因此有必要掌握这方面知识。IC卡的种类IC卡从其使用方式上分为两种:(1)接触式IC卡:必须将IC卡插入主机卡口内,通过有线方式才能传输数据的一种IC卡。此卡易磨损、怕油污。(2)非接触式IC卡(射频卡):主机无卡口,IC卡无须和主机接触,通过无线方式就能传输数据的一种IC卡。由于其为整体封装,不怕油污和磨损,所以使用寿命长。IC卡从其功能上分为三种:(1)存储器卡。(2)带加密逻辑存储器卡:内有COS(卡操作系统)的一种存储器卡。(3)CPU智能卡:内有CPU(中央处理单元)的一种存储器卡。这三种卡又都分为接触式和非接触式。磁卡是一种贴有一条磁带的卡片。它在受磁场及外力作用下极易损坏,不能直接存储数据;而IC卡由封装好的集成电路组成,不受磁场影响,能够进行数据存储。常用IC卡芯片的生产厂家及主要芯片的型号一、美国:爱特梅尔(ATMEL)公司生产的AT24CXX系列、93C46等;二、德国:西门子公司生产的4414、4424、4442等。二、IC卡芯片1、AT24CXX系列芯片串行E2PROM芯片AT24C01/02/04/08/16是美国爱特梅尔(ATMEL)公司生产的二线式串行IC卡芯片,小巧,可靠性高,具有保护性能,速度快,安全稳定,因此在设计IC卡等领域中得到了广泛的应用。图1AT24CXX引脚图芯片引脚和外形封装形式如图5所示,各管脚功能如表1所示。WP管脚操作功能见表2AT24CXX系列芯片主要有AT24C01,AT24C02,AT24C04,AT24C08,AT24C16等型号,其区别主要是容量不同,分别为1k,2k,4k,8k和16k比特。它采用低功耗、高速度和高密度CMOS工艺,可擦写10万次以上,数据保存100年有效,为双线串行接口。存储在芯片中的数据,可通过软件的方法利用各种加密算法进行处理,从而确保其安全性。时钟复位SDASCLRpRpSDASCLWPA2A1A0VDDVss图3AT24CXX系列外围扩展电路图3为AT24CXX系列芯片的电路连接方式,其中,VDD接电源,Vss、A0、A1、A2、TEST均接地,SDA、SCL分别为数据线和时钟线,接单片机上的两个I/O口。使用SLE4442时的电路也是如此。因此,控制IC卡只需两个I/O口即可。2、逻辑加密存储SLE4442卡图2IC卡的触点安排SLE4442是德国西门子SIMENS公司设计的逻辑加密存储卡,它具有2K位的存储容量和完全独立的可编程代码存储器(PSC)。较大的存储容量能够满足通常应用领域的各种需要,因此是目前国内应用较多的一种IC卡芯片,芯片采用多存储器结构2线连接协议,NMOS工艺技术每字节的擦除/写入编程时间为2.5ms存储器具有至少10000次的擦写周期数据保持时间至少10年。图2为SLE4442卡的触点安排情况,表3为各管脚功能。表3SLE4442各引脚功能三、IIC总线1、IIC总线简介IIC总线(InterIntegratedCircuitBUS)是Philips公司推出的串行扩展总线,为二线制,总线上扩展的外围器件及外设接口通过总线寻址。图4为IIC总线外围扩展示意。外围器件可以是LED显示器、LCD显示器、I/O口键盘、码盘等。外围器件3外围器件2外围器件1外围器件4外围器件5时钟复位SDASCLRpRpSDASCL图4IIC总线外围扩展示意VccSDASCLSDASCLSCLSDASCLSDASCLSDAIIC总线由数据线SDA和时钟线SCL构成。SDA/SCL总线上挂接单片机、外围器件和外设接口。所有挂接在IIC总线上的器件和接口电路都应具有IIC总线接口,而且所有的SDA/SCL同名端相连。IIC总线接口电路均为漏极开路,故总线上必须有上拉电阻Rp。所有挂接到总线上的器件及接口都通过总线寻址,故IIC总线具有最简单的电路扩展方式。IIC总线的驱动能力为400pF,通过驱动扩展可达4000pF,原规范中传输速率为100kb/s,新规范的传输速率可达400kb/s。2、总线节点的寻址方法挂接到总线上的所有外围器件、外设接口都是总线上的节点。在任何时刻总线上只有一个主控器件(主节点)实现总线的控制操作,对总线上的其它节点寻址,分时实现点——点的数据传送。因此,总线上每个节点都有一个固定的节点地址。IIC总线上的单片机都可以成为主节点,其器件地址由软件给定,存放在IIC总线的地址寄存器中,称为主器件的从地址。在IIC总线的多主系统中,单片机作为从节点时,其从地址才有意义。IIC总线上所有的外围器件都有规范的器件地址。器件地址由7位组成,它和1位方向位构成了IIC总线器件的寻址字节SLA。寻址字节格式如下:SLADA3DA2DA1DA0A0A1A2R/W器件地址(DA3、DA2、DA1、DA0):是IIC总线外围接口器件固有的地址编码,器件出厂时,就已给定。例如:IIC总线AT24CXX的器件地址为1010,4位LED驱动器SAA1064的器件地址为0111。引脚地址(A2、A1、A0):是由IIC总线外围器件地址端口A2、A1、A0在电路中接电源或接地的不同,形成地址数据。数据方向(R/W):数据方向位规定了总线上主节点对从节点的数据传送方向,R——接收,W——发送。例如:AT24C04在系统中的寻址字节SLAW=A0H,SLAR=A1H。D7D03、IIC总线时序IIC总线上传送的每一帧数据为一个字节,但启动IIC总线后,传送的字节数没有限制,只要求每传送一个字节后,对方回应一个应答位(图5)。在发送时,首先发送的是数据的最高位。每次传送开始有起始信号,结束有停止信号(图6)。(1)起始信号(S)。在时钟SCL为高电平时,数据线SDA出现由高电平向低电平变化,启动IIC总线。(2)终止信号(P)。在时钟SCL为高电平时,数据线出现由低到高的电平变化,将停止IIC总线数据传送。(3)应答信号(A)。IIC总线上“确认”对应于应答位。相应数据线上低电平时为“应答”信号(A),高电平时为“非应答”信号(!A)。(4)数据位传送。在IIC总线启动后或应答信号后的第1~8个时钟脉冲对应于一个字节的8位数据传送。脉冲高电平期间,数据串行转送,低电平期间为数据准备,允许总线上数据电平变换。图6总线的开始与停止图5输出确认4、数据操作格式IIC总线上一次完整的数据传送操作包括起始、发送寻址字节、发送器件子地址字节、应答、发送数据、应答、发下一个数据、应答……直到终止。如图7……SSLAW/RAAAAA/!APSUBAdata1dataN-1dataN其中:S:开始SLAW/R:寻址字节SUBA:器件子地址data1~dataN:N个数据A:应答!A:非应答P:停止图7数据操作格式5、主方式下的虚拟IIC总线软件包1、虚拟IIC总线软件包的内容设计IIC总线软件包,是为了在使用虚拟IIC总线时,有一个通用的傻瓜界面,从而使操作简单方便,只须使用三条归一化操作命令。IIC总线软件包主要包括以下几个子程序:启动(START)、停止(STOP)、发送应答位(MACK)、发送非应答信号(MNACK)、检查应答位(CACK)、发送一个字节(WRBYTE)、读取一个字节(RDBYTE)、发送N个字节(IWRNBYTE)、读取N个字节(IRDNBYTE)等。2、虚拟IIC总线软件包的应用(1)虚拟IIC总线软件包只适用于主方式下IIC总线的外围扩展,即单主系统。(2)在使用时,应先将软件包嵌入到程序内,作为IIC总线应用程序设计的软件支持平台。(3)软件包内有许多符号,要根据系统的资源分配,在程序设计中通过赋值语句赋值。这些标记符号有:SLA器件从地址、SUBA器件子地址、NUMBYTE读/写的字节数、位变量ACK、SDA、SCL总线位、MTD发送数据缓冲区首址、MRD接收数据缓冲区首址、SLAW寻址字节写、SLAR寻址字节写还要注意此软件包占用内部资源:R0,R1,R2,R3,ACC,Cy。(4)使用归一化操作命令:MOVSLA,#SLAW/#SLAR;寻址字节入从地址MOVNUMBYTE,#N;操作字节数LCALLIWRNBYTE/IRDNBYTE;调用软件包例如:将数据55H写入AT24C02中;写入;将子地址和数据放入发送缓冲区MOVR0,#MTDMOV@R0,#SUBAINCR0MOV@R0,#55H;用三个归一化指令写入MOVSLA,#SLAWMOVNUMBYTE,#02HLCALLIWRNBYTE将AT24C02内的数据读到单片机的70H中程序可写为:;读出;发出子地址MOVMTD,#SUBAMOVSLA,#SLAWMOVNUMBYTE,#01HLCALLIWRNBYTE;读出字节MOVSLA,#SLARMOVNUMBYTE,#01HLCALLRDNBYTEMOV70H,MRD小结在用IIC总线与单片机连接工作时,可以将单片机的任意两个I/O口虚拟为IIC总线的SDA和SCL,不影响其它外围设备,从而可以很方便的与其它外围设备相联系,再通过软件编程,便可以广泛的应用在很多领域。该总线电路结构简单,在实际运行时具有很高的可靠性,同时具有一定的可扩展性,并可通过单片机的串行口经电平转换后直接与计算机相连,以进行数据通讯。另外,也可根据需要连接到其它引脚或卡座触点,如果适当改进程序,还可以加密,因此安全性等也很好。结束谢谢大家