wpe教程Word格式.docx
《wpe教程Word格式.docx》由会员分享,可在线阅读,更多相关《wpe教程Word格式.docx(105页珍藏版)》请在冰点文库上搜索。
图4中P1.0接IC卡的CS信号,P1.1接R/B信号,P1.2接RST信号,IC卡的SCK接单片机的TxD,SI和SO接在一起与单片机的RxD相连。
P0口接AD(模数转换)芯片和LCD(液晶显示屏),P2口接键盘。
工作原理是,AD采样数据一方面通过单片机直接存入IC卡,另一方面通过计算显示在液晶屏上。
系统的采样速度要求达到1kHz,这对于12MHz主频的AT89C55单片机速度要求很高,这就要求花在存储方面的时间尽量少。
因系统不需要与外界通信,单片机的串口闲置,这样,可以考虑利用单片机的串口,来提高存储速度。
由于AT45D041只支持SPI通讯的模式0和3,而AT89C55单片机支持移位寄存器输入/输出工作方式。
这样可以把AT45D041当作移位寄存器来操作。
但51系列单片机的串口都是先输出低位,后输出高位。
这与AT45D041的定义正好相反。
为此在通过UART输出数据之前必须将其进行转换。
当然,通过查表可以解决这一难点。
3单片机编程
下面以一个检测IC卡状态的C语言程序来说明对这种存储器的编程方法。
(关于AT45D041存储器的操作时序及命令,参阅AT45D041的器件说明书。
)
//定义查表矩阵unsignedcharcodeconcode[256]={0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,0x90,0x50,0xd0,0x30,0xb0,0x70,0xf0,......0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0xlf,0x9f,0x5f,0xdf,0x3f,Oxbf,0x7f,Oxff};
//检查IC的有效性函数bittestcard(void){unsignedchartmp;
cs45=0;
SCON=0;
SBUF=concode[0x57];
//读状态寄存器命令为0x57while(!
TI);
SCON=0x10;
while(!
RI);
tmp=concode[SBUF];
//tmp内为状态寄存器值cs45=1if((tmp&
0x38)==0x18)return(0);
//是AT45d041卡,返回0return
(1);
//不是AT45d041卡,返回1}
AT45D041芯片的状态寄存器结构如下:
位7为0表示忙;
为1表示闲,可以接收下一条指令。
位6为0表示主存储区数据与缓存区比较匹配,否则为不匹配。
位5、位4、位3对于AT45D041为"
011”(二进制)。
4总体性能评价
在此系统中,单片机需采样8路12位信号,并把他们保存在数据IC卡中。
只需带回IC卡,通过IC卡读写器把数据读入计算机,便可以进行数据的离线处理、分析。
可以看出,仅采用几个廉价芯片,便组成一个性能可观的数据采集系统。
从以上程序可以看出,数据传送的速率基本上与单片机的机器周期相同。
而通过以前的I/O端口模拟SPI端口的操作中,数据传送的速率最大不到机器周期的1/3。
另外,在串口传送数据的过程中,CPU还可以同时进行其他的指令。
总体性能要比采用I/O端口模拟SPI端口的操作快上4倍以上。
在以上的快速数据采集系统中,花在存储方面的时间相对很少,这样,一方面数据采集的速率可以提高;
另一方面单片机有充足的时间计算、分析数据,处理LCD显示,键盘中断等。
减少存储所花的时间,对整体性能的提高有着显著的意义。
当然,采用以上方式操作SPI口,需要对所操作的芯片的操作时序比较了解,如果操作失误,可能产生线路冲突(单片机和SPI口同时输出)。
这样虽然对器件没有多大的损害,因为芯片端口都有保护电路。
当然最好是采用带有SPI端口操作的单片机,这里是对某些情况下不得已采用的方法,也有一定的实用价值。
AT45D系列SPI接口FLASH存储器
1概述
在目前所有的非易失性存储器(PROM、EPROM、EEPROM和Flash)中,
唯有Flash存储器几乎拥有现今讲究个性化的用户所需的所有特点,它具有掉电数据不丢失、快速数据存取速度、电可擦除、容量大、在线可编程、价格低廉以及足够多的擦除、容量大、在线可编程、价格低廉以及足够多的擦写次数(一百万次)和较高的可靠性等诸多优点,因而已为新一代嵌入式应用(如数字相机和MP3播放机)的首选存储器。
现在FLASH的成本已低于PROM/EPROM,可以肯定,它将很快占邻PROM/EPROM市场,MASK(掩膜)ROM尽管在大指生产时具备一定的价格优势,但其升级不便的弱点将随着今后FLASH成本的进一步降低,而使得MASKROM的前景并不乐观。
ATMEL生产的FlashAT45系列中的AT45D041为单5V供电的SPI接口器件,其封装形式有PLCC、TSOP和SOIC三种,图1给出了该器件采用SOIC封装形式的管脚排列和说明。
AT45D041的内部结构如图2所示。
该器件有2048页(每页264字节)内存(FlashMemory,也叫主存MainMemory)和两具Buffer(每个Buffer为264字节的SRAM)组成。
数据可以直接写入闪存,也可以选写入Buffer,然后再将Buffer的数据整个复制到闪存的某一天,也可以在闪存正处于编程时(页编程时间典型值7ms)将数据写入Buffer。
以下是该器件的一些特点:
●一页主存传送到Buffer的典型时间为80μs;
●有效电流的典型值为15mA,空闲电流为20μA;
●最大时钟频率为10MHz;
●具有硬件擦、写保护功能,当WP脚为低时,前256页钭禁止编程。
●输入输出与CMOS和TTL电平兼容;
●具有商业和工业两种温度范围;
●可单周期重编程(包括擦除和编程);
●带有串行接口,读写操作时地址会自动增1;
●复位时将终止正在进行的操作,当复位管脚恢复高电平时,操作也可以恢复;
●传送数据时,高位(MSB)在前。
2操作命令介绍
对AT45D041的操作一共有18条命令,表1所列为AT45D041的操作命令集。
其中:
表1AT45D041的操作命令集
读主存
52H
rrr
PA10~PA0
BA8~BA0
32个×
读Buffer1
54H
×
11个×
BFA8~BFA0
8个×
读Buffer2
56H
主存传送到Buffer1
53H
rrrr
9个×
主存传送到Buffer2
55H
主存与Buffer1比较
60H
主存与Buffer2比较
61H
写Buffer1
84H
写Buffer2
87H
带擦除的Buffer1传送到存
83H
带擦除的Buffer2传送到主存
86H
不带擦除的Buffer1传送到主存
88H
不带擦除的Buffer2传送到主存
89H
Buffer1为缓冲对主存编程
82H
Buffer2为缓冲对主存编程
85H
Buffer1为缓冲自动重编程
28H
Buffer2为缓冲自动重编程
59H
读状态寄存器
57H
r为保留位,AD45D041用0代替,容量更大的器件一般可能会用到;
为无关位(0或1均可,为了占时钟位);
PA10~PA0用来指定页地址,对AT45D041而言,一共有2048页,占11位;
BA8~BA0用来指定内字节的起始地址,每页264字节,占9位;
BFA8~BFA0用来指定缓冲区内字节的起始地址,缓冲区也是264字节;
52H~61H、82H-89H分别是用来区别不同操作的命令字。
执行命令时,首先通过SPI串口往Flash发送一连串的数据,然后以命令字开头,除了“读状态寄存器”外,后面还要跟上页地址和页内的字节地址发及一些无关位。
“读主存”时,首先需要往Flash发送64bit的命令,即:
命令字52(8bit)+4个“r”+页地址(11bit)+页内字节的起始地址(9bit)+32个无关位,发送完这64bit(通常是组合成8个字节)命令后,紧跟着从Flash读数据以可以了(即后面的SCK信号使得数据从SO脚移出),每读出一个字节,字节地址自动加1,如遇到该页的末尾,只要有SCK信号,系统再加到该页的开关处读数据。
在整个操作过程中,CS脚始终为“0”;
当CS脚回到“1”时,将终止此次操作,SO脚恢复到高阻状态。
主存传送到Bufferx是指将2048页主存中的任何一页(由PA10~PA0决定)的内容复制到缓冲区,发送完32bit命令后,当CS脚由“0”为“1”后,数据的复制才真正开始。
主存与Bufferx的比较主要是看主存中的某一页与缓冲区是否一样,当CS脚回到“1”后,比较才开始进行,比较的结果(是否一样)记录在状态寄存器的bit6中。
把带擦除的Bufferx传送到主存就是将缓冲区的内容复制到主存中的某一页,复制前应将缓冲区的内容复制到主存中的某一页,复制前应将主存中的该页数据全部擦掉,所有这些操作只有等到CS脚回到“1”后才能进行。
对于不带擦除的Bufferx传送到主存的操作,在命令执行前,指定的主存页必须已被擦除过。
以Bufferx为缓冲为主存编程就是将“写Bufferx”与“带擦除的Bufferx传送到主存”进行组合。
在发送完命令后,写入Flash的数据将被写入到缓冲区内,如果遇到缓冲区末尾,要继续写入的数据又从缓冲区开头写入,直到CS脚由“0”到“1”后,主存中被指定的页的数据被擦除后再将缓冲区的数据整个复制到主存的指定页中。
3状态寄存器及操作完成指示
一般向Flash发送57H后以可读出状态寄存器(移出时,高位在前),状态寄存器的位定义如表2所列。
其中Bit7为“0”表示器件忙,为“1”表示可以接收新的命令;
Bit6是比较结果位,为“0”表示主存与缓冲区的数据一样,为“1”时表示最少有一个bit不同;
Bit5~Bit3为该系列器件的容量指示位,一共种8种容量,对于AT45D041来说,该区域为“011”;
Bit2~Bit0未使用。
一共蛾6种操作会使器件处于“忙”状态,这6种操作是:
●主存传送到Bufferx;
●主存与Bufferx比较;
●带擦除的Bufferx传送到主存;
●不带擦除的Bufferx传送到主存;
●Bufferx为缓冲对主存编程;
●Bufferx为缓冲自动重编程。
这6种操作均需要监视状态寄存器,以便知道操作是否完成。
除了监视状态寄存器外,更好的方法是将芯片管脚RDY/BUSY与CPU的某个中断相连,并将中断设置为升沿触发,操作一完成即可触发中断,这样可能节省大量的CPU时间。
4SPI接口及应用
4.1SPI接口
串行外围接口一共有4种操作模式,图3为其时序图。
这些操作模式决定了传送与接收的时钟相位和极性,换句话说,也就是这些模式决定了利用时钟信号的哪个沿来控制数据传判断的方向。
这些模式一般由主机(CPU)来设置。
当CPOL=0时,时钟信号SCK在空闲时为“0”,即模式0和1;
如果CPOL=1,则SCK在空闲时为“1”,即模式2和3;
当CPHA=CPOL时,数据总在时钟信号的上升沿移进Flash,下降沿移出Flash,即模式0和3。
4.2SPI接口应用
对于12位的数据采集系统,使用AD公司的Flash集成MCU芯片AduC812可使电路设计更加简单快捷。
由于AduC812有一个与I2C兼容的SPI接口,所以与AT45系列的Flash接口只需将相应的管脚相连即可,只不过要将AduC812设为主机,而AT45D041自然以是从机了。
在AduC812中有SPI控制寄存器(SPICON)与SPI数据寄存器(SPIDAT),数据寄存器的使用如同使用RS232的Buffer一样简单,控制寄存器的位定义如表3所列。
现对其各个位定义进行说明:
ISPI:
SPI中断位,在每次传送过错SPIDAT中的数据后,置“1”;
WCOL:
写冲突错误标志位,在写保护状态下编程会导致该位置“1”;
SPE:
SPI允许控制位,为“0”时禁止;
SPIM:
主从模式选择位,为“1”时选择主机;
CPOL:
时钟极性选择,为“0”时,将使CLK在空闲时为低电平;
CPHA:
时钟相位选择,为“0”时,在时钟上升沿被锁存;
SPR1、SPR0:
SPI波特率选择位,BITRATE=Fose/[4,8,32,64]。
“00”选择除以4。
4.3SPI操作模式选择
AT45系列的Flash支持SPI模式0和3,并且在每个CS信号的下降沿,可通过采样时钟信号的状态自动选择操模式。
由于在上电或复位时器件将自动进入缺省的模式3,所以使用械比较可靠。
在AduC812的应用中,选择模式0和3对“写”Flash没有差别,但在“读”Flash时,选择模式0会使从Flash读出的数据总缺少一个bit,这可能是模式0中数据有效的时间比较靠后的缘故。
图4和图5分别是模式0和模式3的“读主存”时序图,由时序图可以看出:
模式0中数据的有效时间明显比模式3的有效时间靠后半个时钟周期。
表2状态寄存器的位定义
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
RDY/BUSY
COMP
1
表3SPI控制寄存器的位定义
ISPI
WOOL
SPE
SPIM
CPOL
CPHA
SPR1
SPR0
铁电存储器的技术原理
铁电存储器(FRAM)能兼容RAM的一切功能,并且和ROM技术一样,是一种非易失性的存储器。
铁电存储器在这两类存储类型间搭起了一座跨越沟壑的桥梁——一种非易失性的RAM。
相对于其它类型的半导体技术而言,铁电存储器具有一些独一无二的特性。
传统的主流半导体存储器可以分为两类--易失性和非易失性。
易失性的存储器包括静态存储器SRAM(staticrandomaccessmemory)和动态存储器DRAM(dynamicrandomaccessmemory)。
SRAM和DRAM在掉电的时候均会失去保存的数据。
RAM类型的存储器易于使用、性能好,可是它们同样会在掉电的情况下会失去所保存的数据。
非易失性存储器在掉电的情况下并不会丢失所存储的数据。
然而所有的主流的非易失性存储器均源自于只读存储器(ROM)技术。
正如你所猜想的一样,被称为只读存储器的东西肯定不容易进行写入操作,而事实上是根本不能写入。
所有由ROM技术研发出的存储器则都具有写入信息困难的特点。
这些技术包括有EPROM(几乎已经废止)、EEPROM和Flash。
这些存储器不仅写入速度慢,而且只能有限次的擦写,写入时功耗大。
铁电存储器能兼容RAM的一切功能,并且和ROM技术一样,是一种非易失性的存储器。
铁电存储器在这两类存储类型间搭起了一座跨越沟壑的桥梁--一种非易失性的RAM。
当一个电场被加到铁电晶体时,中心原子顺着电场的方向在晶体里移动。
当原子移动时,它通过一个能量壁垒,从而引起电荷击穿。
内部电路感应到电荷击穿并设置存储器。
移去电场后,中心原子保持不动,存储器的状态也得以保存。
铁电存储器不需要定时更新,掉电后数据能够继续保存,速度快而且不容易写坏。
铁电存储器技术和标准的CMOS制造工艺相兼容。
铁电薄膜被放置于CMOS基层之上,并置于两电极之间,使用金属互连并钝化后完成铁电制造过程。
Ramtron公司的铁电存储器技术到现在已经相当的成熟。
最初的铁电存储器采用两晶体管/两电容器(2T/2C)的结构,导致元件体积相对过大。
最近随着铁电材料和制造工艺的发展,在铁电存储器的每一单元内都不再需要配置标准电容器。
Ramtron新的单晶体管/单电容器结构可以像DRAM一样,使用单电容器为存储器阵列的每一列提供参考。
与现有的2T/2C结构相比,它有效的把内存单元所需要的面积减少一半。
新的设计极大的提高了铁电存储器的效率,降低了铁电存储器产品的生产成本。
Ramtron公司同样也通过转向更小的技术节点来提高铁电存储器各单元的成本效率。
最近采用的0.35微米的制造工艺相对于前一代0.5微米的制造工艺,极大的降低了芯片的功耗,提高了单个晶元的利用率。
所有这些令人振奋发展使铁电存储器在人们日常生活的各个领域广为应用。
从办公室复印机、高档服务器到汽车安全气囊和娱乐设施,铁电存储器不断改进性能在世界范围内得到广泛的应用。
(全文结束)
ATMEL接触式IC卡及开发实例
目录
第一章几种常见的ATMEL接触式IC卡的存储结构及其保密特性2
一、AT24C01A、AT24C02、AT24C04、AT24C08、AT24C16、AT24C32、AT24C642
二、AT88SC102、AT88SC1604、AT88SC1608、AT88SC1533
1.AT88SC102加密卡3
2.AT88SC1604加密卡5
3.AT88SC1608加密卡8
4.AT88SC153加密卡12
三、AT45D04116
第二章接触式IC卡的接口函数19
一、函数列表(函数名,简单说明)19
1.通用函数19
2.ATMELAT88SC102/AT88SC1604加密卡专用函数19
3.ATMELAT88SC1608及AT88SC153加密卡专用函数20
4.ATMELAT45D041Flash存储卡专用函数20
二、函数说明21
附录一:
卡类型预定义29
附录二:
ICFOX.PLB测试例程30
第三章接触式IC卡底层软件开发实例31
一、IC卡操作底层函数31
1.IC卡操作底层函数说明:
31
2.IC卡低层通讯头文件(Base.h)32
二、AT24C64卡应用实例32
1.AT24C64卡函数头文件(AT24C64.h)32
2.AT24C64卡函数33
3.AT24C64卡应用例程(App24C64.c)35
第一章几种常见的ATMEL接触式IC卡的存储结构及其保密特性
为了能够使IC卡应用到自已的系统中,系统开发公司的工程师应了解一些卡的基本技术资料,下面就ATMEL公司生产的接触式IC卡在应用中常见的和性能比较好的型号做一简单介绍,希望能对IC卡的选型及开发有所帮助。
?
1AT24C01A、AT24C02、AT24C04、AT24C08、AT24C16、AT24C32、AT24C64
这几个型号的IC卡为ATMEL存储卡,是一种不具备加密功能的EEPROM卡,AT24C为系列号,数字部分为K位容量,分别为1K、2K、4K、8K、16K、32K、64K位。
它的使用方法与EEPROM完全相同,存储结构简单,只有读写两种操作功能,主要用于存放一些保密性要求不高的数据。
AT24C系列的工作频率为1MHz(5V),1MHz(2.7V),400KHz(1.8V);
工作电压为5V±
10%,根据要求最低可至1.8V;
Icc电流读最大为1mA,写最大为3mA;
写/擦除次数为100万次;
数据保持100年;
工作温度为0—70℃,根据要求可超过指定工作温度;
通讯协议符合ISO/IEC7816-3同步协议,双线串行接口。
存储结构:
AT24C系列型号的后两位数字为该型号的最大K位数(1K=1024),8位为1字节,最大字节存储容量的算法为K位数×
1024÷
8。
如:
AT24C01A的最大存储容量的1×
8=128,其字节地址空间为0—127(16进制为0x00—0x7F)。
下面的伪码程序在AT24C系列卡的ADDR地址开始写LEN个字节,并且读出校对。
Open(AT24Cxxx)
Write(ADDR,