访问电脑版页面

导航:老古开发网手机版其他

IC智能卡芯片AT45D041的原理及应用

导读:
关键字:
IC智能卡芯片AT45D041的原理及应用 天津大学精仪学院曾周末张志荣钱莹 摘要介绍一种新颖的串行接口的电擦除可编程闪速存储器AT45D041芯片,重点讲述AT45D041的特点、工作原理以及与MCS\ 51接口的硬件电路及有关程序。 关键字IC智能卡串行接口单片机可编程操作模式 概述 AT45D041是ATMEL公司生产的一种串行接口的可编程闪速存储器。它采用SPI串口模式0~3方式与任何单片机或微机进行通信,几乎无需外接元器件,电路开发较为简单,读写IC卡操作非常方便,数据存储量大,安全性较好。该芯片封装尺寸小、集成度高、电源电压低等优点决定了它在商业和工业中有着广泛的应用。它的典型应用是数字语音存储、图像存储和数据存储。 一、 AT45D041的特点与工作原理 AT45D041有4,325,376位主存储单元,可分成2048页,每页264个字节。此外,AT45D041还包含2个SRAM缓冲器,每个缓冲器有264个字节。当主存储器内的1页正被编程时,缓冲器照样能接收输入数据。AT45D041使用串行接口来访问它的数据。这种串行接口结构使得硬件设计方便,系统可靠性增强,并把开关噪声降到最低。AT45D041在编程期间不需要高的编程电压,编程电压仍为电源电压。最为突出的优点是在编程前不需要擦除周期。 1. 特点 · 页编程操作:单周期完成编程操作(包括擦、写); · 2个264字节的SRAM:当对主存反复编程时可接收数据; · 设有内置编程控制时钟; · 快速页编程时间:典型值7ms; · 主存页与缓冲器转换时间:典型值80μs; · 低功耗CMOS电路(备用电流20μA,读操作典型电流15mA); · SPI(模式0~3)接口方式,最高可达10MHz串行时钟频率; · 每字节擦写次数可达1万次,数据可保存10年; · 所有引脚ESD防静电保护可达4000V。 2. 工作原理 AT45D041 IC卡的触点配置和引脚功能如图1和表1所示。 VCC〖〗C1[]C5[]GNDRST[]C2[]C6[]CSR/B[]C3[]C7[]SCKSO[]C4[]C8[]SI图1IC卡触点配置[3]表1IC卡的引脚功能引脚名称[]功能VCC[]工作电压RST[]复位端R/B[]工作状态端SO[]串行数据输出GND[]地CS[]片选SCK[]串行时钟SI[]串行数据输入该芯片经1个简单的三线串行链接通信接口进行数据的存取,器件的操作由主机发出的指令控制。1个有效指令包括8位操作码和目的缓冲器或主存储器地址位置。当CS=0,主机向芯片SCK端发送时钟信号,引导操作码和地址从SI端装入到芯片中。所有指令、地址和数据都是先送高位。图2是芯片的内部方框图。 图2AT45D041内部方框图(1) 读操作 读操作时序如图3所示。通过调用恰当的操作码来实现从主存储器或缓冲器中读出数据。当读到主存或缓冲器末端时,器件回到主存或缓冲器的开始处继续读,CS由0置1,终止读操作。此时SO将处于高阻状态。 主存储器页读 主存储器页读操作允许用户直接读出主存中任何一页的数据。此操作不必通过数据缓冲器过渡,故数据缓冲器的内容不发生变化。主存储器页读操作的指令为8位操作码(52H),后跟24位地址和32位随机码(用户不用去管它)。在AT45D041中24位地址为:前4位地址是保留位(rrrr),留作集成度更高的芯片用;跟着11位地址(PA10~PA0)表示页地址;最后9位地址(BA8~BA0)指明1页中所要读取数据的首地址。跟在24位地址后面的32位为任意值,发送它只是为了初始化读操作。只要在SCK端上外加1010…序列脉冲,SO脚上就产生串行数据的输出。在装操作码、地址位和读数据期间,CS必须保持为低电平。 图4主存页通过缓冲器写操作时序图缓冲器读 数据能从两个缓冲器中任何一个读出,操作码 图3主存页读操作时序图54H指数据从缓冲器1中读出;56H指数据从缓冲器2中读出。为了进行缓冲器读操作,8位操作码后必须跟着15位任意码、9位地址码和8位任意码。由于缓冲器的大小是264字节,需9位地址(BFA8~0)来指明缓冲器中要读出数据的首地址。 主存储页到缓冲器转存 主存中任何一页数据都可以转存到其中1个缓冲器中,操作码53H表示转存到缓冲器1,55H则转存到缓冲器2,后面跟着4位保留位(rrrr),11位地址(PA10~PA0)(用来指明主存中的哪一页要被转存)和9位任意码。将主存指定页数据转换到缓冲器的工作将在CS从0跳变到1时开始。在1页数据转换期间,可根据状态寄存器内容来判定转换工作完成情况。 主存储器页与缓冲器比较 主存中任何一页内容都可以与缓冲器1或缓冲器2中的进行比较。其对应的操作码分别为60H和61H,后面跟着24位地址,其中包含4位保留位(rrrr)、11位地址位(PA10~PA0)(指明主存中的哪一页要和缓冲器比较)和9位任意位。操作码和地址位的装入与前面所描述的相同。当CS由0跳变为1时,主存指定页中264个字节的数据将与缓冲器1或2中264字节的数据进行比较。在此期间,状态寄存器将指出器件正忙。比较完成后,状态寄存器中的6位数据将随着比较结果而发生变化。 (2) 写操作 写操作时序如图4所示。写操作指将数据从主机经SI端转移到缓冲器1(2)中或将暂存在缓冲器中的内容写到主存页中。如果写到了缓冲器的末端,器件将回到缓冲器的开始端,继续向缓冲器中写数直到CS引脚由0跳变到1为止。在写期间,状态寄存器指出芯片正忙。 缓冲器写 数据能从SI端转移到缓冲器1或2中。操作码84H(87H)表示转移到缓冲器1(2),后跟着15位任意码和9位地址(BA8~BA0)。9位地址指明缓冲器中要写入数据的首地址。要写入的数据跟在地址位后面。 将缓冲器内容写入主存储页(自带擦除功能) 事先写进缓冲器1或2中的数据可通过编程写到主存中。操作码83H(86H)表示从缓冲器1(2)写到主存中,后面跟4位保留位、11位地址位(PA10~PA0)(指写入主存的页)和9位任意码。当CS由0跳变为1时,芯片首先擦除所选择的主存页内容(总共用1s),然后把缓冲器中内容写入主存指定页中。页的擦除和写入操作由内置时钟所控制,并将在Tep内完成。 将缓冲器内容写入主存储页(不带擦除功能) 此操作与上述情况类似。不同的是:① 其操作码分别为88H和89H;② 主存中的指定页内容必须事先通过编程擦除掉;③ 操作时间不超过Tp。 主存储页写 此操作是往缓冲器写和由缓冲器向主存页写(自带擦除功能)的结合。数据首先从主机经SI端被转存在缓冲器1或2中,然后再写到主存的指定页中。操作码82H(85H)表示借助于缓冲器1(2)写进主存页中。其后跟4位保留位和20位地址。20位地址中前11位地址(PA10~PA0)表示主存中页地址,后9位地址(BA8~BA0)表示数据暂存在缓冲器中的首地址。此操作过程可参照上面的内容。 自动页重写 当1页或多页中若干字节数据需要以某种方式修改时,则需要用到自动页重写操作。此操作也是由两种操作组合而成的:其一,主存指定页转存到缓冲器中;其二,再将缓冲器内容写回到主存当初页中(自带擦除功能)。操作码58H(59H)代表通过缓存器1(2)。后跟4位保留位,11位地址(PA10~PA0)指明主存要被重写的页,另外9位任意。此操作在CS由0跃变到1后开始,由内置时钟所控制,最大执行时间为Tep。 (3) 状态寄存器 状态寄存器如表2所列。状态寄存器功能包 表2状态寄存器 Bit7[]Bit6[]Bit5[]Bit4[]Bit3[]Bit2[]Bit1[]Bit0RDY/BUSY[]COMP[]0[]1[]1[]x[]x[]x括:① 判定芯片处于忙还是闲状态;② 表示主存页与缓冲器比较的结果;③ 芯片的集成度。操作码57H表示读状态寄存器内容。在操作码最后1位移入芯片后,状态寄存器的8位将从SO端移出(高位在前)。状态寄存器的高5位含有芯片工作状态信息;低3位保留,以备将来扩展用,故为任意值。状态寄存器的第0位移出芯片后,只要CS还保持低电平,且SCK端有时钟信号输入,状态信息将重复输出。状态寄存器的数据是不断更新的,因此,每一次重复,序列将输出最新信息。状态寄存器的第7位(即Bit7)表示忙/闲状态信息:若Bit7=1,芯片处于闲置状态,表示已准备好可接受下一个命令;若Bit7=0,芯片处于繁忙状态。用户可以不断查询状态寄存器的Bit7状态。其查询方法为,在Bit7输出后,停止SCK信号的发送,这样就只有Bit7从SO端输出。一旦芯片不再繁忙后,SO端将从“0”跳变为“1”。这里有6种操作将造成芯片处于繁忙状态: ① 主存储页向缓冲器转存; ② 主存储页与缓冲器比较; ③ 缓冲器向主存储页写(自带擦除功能); ④ 缓冲器向主存储页写(不带擦除功能); ⑤ 主存储页写操作; ⑥ 自动页重写操作。 主存页与缓冲器比较结果在状态寄存器的第6位表示出:若Bit6=0,表示主存指定页的内容与缓冲器中的内容相同;若Bit6=1,表示主存指定页的内容与缓冲器中的内容不相同。 芯片集成度由状态寄存器的Bit5~Bit3来表示。对于AT45D041来说,这3位是011。这3位二进制码的十进制值并不等于芯片的集成度,而是表示1种集合代码。这种集合代码代表了串行数据Flash芯片的不同的集成度。它总共可以表示出8种不同的集成度配置。 (4) 闲置/繁忙状态 当内部时钟工作时,芯片将处于繁忙状态,此时该输出端(R/B)为低电平。此输出端正常为高电平(须外加1个上拉电阻)。在写操作、比较操作以及主存页和缓存器之间转换数据时,该端将为低电平。繁忙状态表明此时主存和正工作着的缓存器不能被访问,但对另一个缓存器的读写操作仍然可以进行。 (5) 上电复位/复位 当芯片刚接通电源或用复位端复位时,将处于复位状态,复位后将处于缺省的SPI模式。另外,SO端处于高阻状态。 二、 AT45D041与MCS\ 51的接口及编程 1. 硬件部分 图5所示为智能测控系统中的IC卡读写电路部分。它主要由AT89C2051、AT45D041以及少量外围元器件构成。该装置读IC卡采用主存页读方式,读卡命令为52H,xxH,xxH,xxH,xxH,xxH,xxH,xxH;写IC卡采用通过缓冲器2向主存页写方式,写命令为85H,xxH,xxH,xxH。AT89C2051的P1.7,P1.6,P1.4分别与AT45D041的SI,SCK,SO相连,实现1个简单的三线串行通信。P1.5连CS用来控制对芯片的访问。图中C9与C10是IC卡座的接通开关:当IC卡插上时,开关闭合,C1端连上+5V,AT45D041被供电,先上电复位,然后读写电路就进入正常工作状态;当IC卡拔出后,C1端经电阻R2向AT89C2051的INT0端发出中断请求,从而转到掉卡中断处理程序。 图5IC卡读写电路2. 软件部分 任何一种操作模式的操作流程大致是相似的,即由单片机向IC卡发操作指令,接着SCK端发一连串1010…的时钟脉冲,就会把SO或SI端上的数据串行地读出或写入IC卡中指定单元。本文以读IC卡程序为例来进一步说明其工作流程。用汇编语言实现的读IC卡程序如下: 〖〗SI〖〗BIT P1.7〖2〗CS〖〗BIT P1.5〖2〗SCK〖〗BIT P1.6〖2〗SO〖〗BIT P1.4〖2〗RB〖〗BIT P1.3〖2〗RST〖〗BIT P1.2〖2〗 RCMD〖〗EQU 30H〖2〗PAH〖〗EQU 31H〖2〗PAL〖〗EQU 32H〖2〗BA〖〗EQU 33H〖〗;存读卡指令〖2〗ICRDATA〖〗EQU 20H〖〗;读数首址 〖2〗NUMBER〖〗EQU FFH〖〗;数据长度〖1〗RDIC:〖〗SETB〖〗CS〖2〗SETB〖〗RB〖2〗SETB〖〗SI〖2〗SETB〖〗SO〖〗;初始化IC卡〖2〗CLR〖〗SCK〖2〗MOV〖〗RCMD, #52H〖2〗MOV〖〗PAH, #00H〖2〗MOV〖〗PAL, #00H〖〗;存读卡命令〖2〗MOV〖〗BA, #00H〖〗;从头开始读 〖2〗CLR〖〗CS〖〗;选中芯片〖2〗MOV〖〗R0, # RCMD〖2〗MOV〖〗R1, #08H〖1〗T_RCMD:〖〗MOV〖〗A, @R0〖2〗LCALL〖〗S_OUT〖〗;调用发送子程序〖2〗INC〖〗R0〖〗;发送〖2〗DJNZ〖〗R1,T_RCMD〖〗;读卡命令〖2〗NOP〖2〗NOP〖2〗MOV〖〗R0, #ICRDATA〖2〗MOV〖〗R1, #NUMBER〖2〗SETB〖〗SCK〖2〗NOP〖2〗NOP〖2〗CLR〖〗SCK〖1〗RICDATA:〖〗LCALL〖〗S_IN〖〗;调用接收子程序 〖2〗MOV〖〗@R0,A〖2〗INC〖〗R0〖〗;读255个数据 ;到主机〖2〗DJNZ〖〗R1, RICDATA〖〗〖2〗SETB〖〗CS〖2〗RET〖1〗S_IN:〖〗MOV〖〗R6, #8〖〗;接收子程序〖1〗RSHIFT:〖〗MOV〖〗C, SO〖2〗SETB〖〗SCK〖2〗RLC〖〗A〖2〗CLR〖〗SCK〖2〗DJNZ〖〗R6,RSHIFT〖2〗RET〖1〗S_OUT:〖〗MOV〖〗R7, #8〖〗;发送子程序〖1〗TSHIFT:〖〗RLC〖〗A〖2〗MOV〖〗SI, C〖2〗SETB〖〗SCK〖2〗NOP〖2〗NOP〖2〗CLR〖〗SCK〖2〗DJNZ〖〗R7, TSHIFT〖2〗RET〖〗MES参考文献 1于宏军,赵冬艳智能(IC)卡技术全书北京:电子工业出版社 2孙涵芳,徐爱卿MCS\ 51/96系列单片机原理及应用北京:北京航空航天大学出版社 3胡汉才单片机原理及其接口技术.北京: 清华大学出版社
来源:单片机与嵌入式系统应用   作者:天津大学精仪学院 曾周末 张志荣 钱莹  2006/2/12 0:00:00
栏目: [ ]

相关阅读

安森美推出新的高功率图腾柱PFC控制器,满足具挑战的能效标准

动态功耗低至60μA/MHz!助力设备超长续航,首选国民技术低功耗MCU!