


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AT89C51对SST之FLASH的编程操作详述Flash又名闪存,属于EEPROM,电可擦除可编程的存储器。由于具有电可 擦除的特性,并且其数据可保留上百年,所以它的应用围非常广泛。非常适用于 作为MicroChip以及DSP的外部程序存储器,或者作为需要存储大量数据的外部 EEPROMSST公司设计之39系列Multi-Purpose Flash ,按照其存储的空间主要分以 下几种:64K X8/128K X8/256K X8/512K x8 Byte ,各自代表的芯片型号有:SST39LF512 / SST39LF010 / SST39LF020 / SST39LFO4O SST39VF
2、512 / SST39VF010 / SST39VF020 / SST39VF04039 系列 Flash 之特性:SST39LF512/010/020/040 工作电压为 3.0-3.6V ; SST39VF512/010/020/040工作电压为2.7V3.6V ;数据保留时间100年;工作 电流典型值为10mA待机电流为1uA;快速擦除芯片时间为70ms字节编程时 间为 14us。对芯片有如下操作: chip Erase operation ; sector Erase operation ; byte program operation ; byte read operation ;
3、write operation status detection 。通过软件对芯片的操作可以访问到 SST制造商的ID;以及 芯片的ID,各芯片ID如下表:TABLE 1: P RODUCT DENTIFICATIONAddressDataManufacturer ' s ID0000HBFHDevice IDSST39LF/VF5120001HD4HSST39LF/VF0100001HD5HSST39LF/VF0200001HD6HSST39LF/VF0400001HD7H注意:当通过软件访问了Product Iden tificatio n后,必须采用软件命令退岀该模式才能对芯片进
4、行擦除、读写的操作.F面给出各软件操作指令的时序图:1. WE控制的字节编程时序:NlzFb AL sFIjGRAVI OP凸叮 ON &TAFT&TbfADCRES?冷z; !+TDHfcsFIGURE 5: WE# Co nt polled Program Cvcle Timing DiaqrahiWWMaMWMWMMMwww/m/fmffh* 更匚 X ADDRA|Jg =鮎osignri二&刑ss恤W= *15£ST33LFfVF£l2, A1&fei 5STG9LF 'V-ul j,A7 rr bsraxvrojoaid A
5、if 1brtbr39LF.F040昭 X 颅S'A'1詁2T诡(AT DR-DATA'rtfurfl-2. CE控制的字节编程时序图:Jfr期 LLrw.i.iriTERNAL PROGFAMCFERATION STARTS ¥"bpCEpWEsADDRESS Ams-jCE?ZAAA X 5555 X ADD=1.Tam JCPLti1<kir /xxxxxxxxxxxxxxTcPh1-W/A/ATnnnnnnniiiiiX.XXXWWWWXWWVxW yBYTEiAUDH.DAi*tdh4T39:I|U.FOU&|对3 止 II
6、g 一 MlA=t i jlifir-Alt fldciFPRUAhg = A1sforSST39LFrVF512. AietcrSSr3flLRVF0t0,Al 7 nor S5T39LPVFOZO and 內* d sstsif/'/foiqFIGURE 6: CE*I COWTPOLLED PftOGRAW CYCLE TIMING DlAGPM3. 编程操作的状态检测时序图:CLiODWE#DQfco种 II F* I嶠肢气丽nxx*:wo<xxxr-< D) D* £ 打Nc tc:Ay 合 051 割 gnii icort nJzi'cssAy
7、s= AlS torSS-rasLFiVFS121 Aig torSSU 軋尸¥阳10.lo-66T3DLr.Vr0Mftnd A|V bi &STM)LW(MQFIGURE 7: Data* Poluhg Timino Diagram4. WE控制的扇区擦除时序图:SlX-LYI LCJDt l-UN 4口+4加、ADDRESS Am&qCEQFtWCt,l0?o3(盂;< zAM X $価s x阴閔X決“(螂 XXXKX兴XX.手JZK!匚入小、ZA, f? /A ;H;M; :7jBdin RioNdIb : Th© cbvics qbo Eup
8、pcds CE»? corinal ed Sect Dr- Z rase qEraiion -The W£# 日M C £# signas 朋匚“能就)魁抿:|前0前mrwiEriirwn品询愕何 角山確 血華詈 Swlgr Ad>Jk«人貼« I*冈aignfcnn 鈕闻势A|幅 * a,:r.lBrSST3GLRiVll2l Aiefar 站-宴吓即氏也 A17fcr £S13SLF VF02fl and A伸血 EhXJlL匸FQ4CFIG UF E 9: WE Controlled Sector-Erase Timing
9、 Diagram5. WE控制的芯片擦除时序图:Sl+EYTE GOOEFCH GT PHRASEX PAAfl 5SSS X 55E5KmZXXEZSZ: Ji£COE*/7X Z7X /7k/7X J'nWE -SWO 3W15W25W0 SAM 5W)测 I.J. F-7& me n iscidwb also “屮perk ges (xulrcipa cnp-Ewsa 详创n urtEf diu CEtsgnastrisnhagaHtlD fs hrg ns ElnEUTiHriln单 3rt> ltWl.£U19Ela IQaM£ -
10、 RKgt&uriEJvn uirssAHf A|Stoi£CTSfl.FA?rJ12, A|ftTorCCT3Dirvn:H. * ;rtf SCTXLF.vra:Oorrt A);L1O-EET3OjrA4nM0VA'人:*打#一CFIGURE 10: V/Efr Controllfd Chip-Eraf Timihg Digrali6. 软件访问ID的时序图:T raetr<t*s fierce fcrADDRESS AjoOE*DgQSolbflie ID EntryV 2AAA XXXEZZXJ% LlhzSWC SW1 SW2Nutec Dmlce
11、I D= IMH U 5S139LFIfVF51 Z, D6H 伽 S&l 301 F/'/FUIQ 口6 H toir 5ST39L RWFC0J 昌 M 07H ItM 55T30LF/VF&K1LFIGURE 11; Software ID Entfy and Read7. 退出软件访问ID&复位命令的时序图:ADDRE: 円4£L-:沖0>/J1却F U.F13JHdbl 5YU .JAri'.-.l-"-!scftwaff crxirArr)FE$ET h'HGURE12; Software ID Exir 釧
12、t> Reset根据上面的时序图,下面给出各种软件指令操作的流程图:1 字节编程流程图:2.读取ID流程图:Software ID EntryCommand SequenceSottv/are ID Exit &Reset Command Sequence3 复位命令流程图:Heturn to normaloperation4 芯片擦除命令流程图:Chip-Erase Command SequenceSector-ErasGCam ma nd Sequence5扇区擦除命令流程图:下面以SST39VF040为列,给岀 AT89C51对其做编程动作的 source code :SS
13、T39VF040地址线为A0A18,数据线为DQ0DQ7片选线CE数据写使能线 WE数据读使能线 0丘#define uchar unsigned char#define ulong unsigned long sfr DataOut=0x80; / sfr Address7_0=0x90; / sfr Address15_8=0xa0; / sbit Address16=P3A2;/sbit Address17=P3A3; / sbit Address18=P3A4; /#define uint unsigned int定义P0 口接SST39VF040的数据线定义P1 口接SST39VF0
14、40的地址线 A0A7定义P2 口接SST39VF040的地址线 A8A15定义P3.2接SST39VF040的地址线A16定义P3.3接SST39VF040的地址线 A17定义P3.4接SST39VF040的地址线 A18定义P3.5接SST39VF040的片选线线CE定义P3.6接SST39VF040的写使能线WE定义P3.7接SST39VF040的读使能线OEsbit Sst39vf040_Ce=P3A5;/sbit Sst39vf040_We=P3A6;/sbit Sst39vf040_Oe=P3A7;/struct Flashuchar manufacturer_id;uchar d
15、evice_id;ulong address; Sst39vf040;/ 读 FLASH ID 的函数,入口参数:FLASH的 manfacturer_ID , device_ID,出 口参数返回 1, 0uchar Read_ld(uchar manfa_id,uchar devi_id)Sst39vf040_Ce=1;Sst39vf040_We=1;Address7_0=0x55;Address15_8=0x55;Sst39vf040_Oe=1;Sst39vf040_Ce=0;Sst39vf040_We=0;DataOut=0xaa;Sst39vf040_We=1;Address7_0=0
16、xaa;Address15_8=0x2a;Delay10us();Sst39vf040_We=0;DataOut=0x55;Delay10us();Sst39vf040_We=1;Address7_0=0x55;Address15_8=0x55;Delay10us();Sst39vf040_We=0;Data0ut=0x90;Sst39vf040_We=1;Sst39vf040_Ce=1;Delay10us();Address7_0=0x00;Address15_8=0x00;Sst39vf040_Ce=0;Sst39vf040_0e=0;DataOut=0xff;Sst39vf040.man
17、ufacturer_id=DataOut;Address7_0=0x01;Delay10us();Sst39vf040.device_id=DataOut;Sst39vf040_Ce=1;if(Sst39vf040.manufacturer_id=manuf_ID)&&(Sst39vf040.device_id=devi_ID) return 1;elsereturn 0;/退出读ID的状态以及命令FLASH复位的函数void Read_ld_Exit(void)Sst39vf040_Ce=1;Sst39vf040_0e=0;Sst39vf040_We=1;Address7_0
18、=0x55;Address15_8=0x55;Sst39vf040_Ce=0;Sst39vf040_Oe=1;Sst39vf040_We=0;Delay10us();DataOut=0xaa;Sst39vf040_We=1;Delay10us();Address7_0=0xaa;Address15_8=0x2a;Delay10us();Sst39vf040_We=0;Delay10us();DataOut=0x55;Sst39vf040_We=1;Delay10us();Address7_0=0x55;Address15_8=0x55;Delay10us();Sst39vf040_We=0;D
19、elay10us();DataOut=0xf0;Sst39vf040_We=1;Sst39vf040_Ce=1;Delay10us();Sst39vf040_Ce=0;/芯片擦除函数void Chip_Erase(void)Sst39vf040_Ce=1;Sst39vf040_0e=0;Sst39vf040_We=1;Address18=0;Address17=0;Address16=0;Address7_0=0x55;Address15_8=0x55;Sst39vf040_Ce=0;Sst39vf040_Oe=1;Sst39vf040_We=0;DataOut=0xaa;Delay10us(
20、);Sst39vf040_We=1;Address7_0=0xaa;Address15_8=0x2a;Delay10us();Sst39vf040_We=0;DataOut=0x55;Delay10us();Sst39vf040_We=1;Address7_0=0x55;Address15_8=0x55;Delay10us();Sst39vf040_We=0;Data0ut=0x80;Delay10us();Sst39vf040_We=1;Delay10us();Sst39vf040_We=0;DataOut=0xaa;Delay10us();Sst39vf040_We=1;Address7_
21、0=0xaa;Address15_8=0x2a;Delay10us();Sst39vf040_We=0;DataOut=0x55;Delay10us();Sst39vf040_We=1;Address7_0=0x55;Address15_8=0x55;Delay10us();Sst39vf040_We=0;Data0ut=0x10;Delay10us();Sst39vf040_We=1;while(!Wait_Data_Pulling();/检测FLASH编程,擦除操作过程中是否完成的函数,完成后返回值1uchar Wait_Data_Pulling(void)uchar outdata;Ss
22、t39vf040_Ce=1;Sst39vf040_We=1;Sst39vf040_Oe=1;Delay10us();Sst39vf040_Ce=0;Sst39vf040_Oe=0;Delay10us();DataOut=0xff;outdata=DataOut;Sst39vf040_Ce=1;Sst39vf040_Oe=1;if(outdata&0x80)=0x80)return 1;elsereturn 0;byte_data )/字节编程函数,入口参数:(byte_address : AmsA0 = A18A0,待写的数据:void We_Byte_Program(ulong by
23、te_address,uchar byte_data)ulong temp_address;Sst39vf040_Ce=1;Sst39vf040_0e=0;Sst39vf040_We=1;Address7_0=0x55;Address15_8=0x55;Address16=0;Address17=0;Address18=0;Sst39vf040_Ce=0;Sst39vf040_Oe=1;Sst39vf040_We=0;DataOut=0xaa;Delay10us();Sst39vf040_We=1;Address7_0=0xaa;Address15_8=0x2a;Delay10us();Sst
24、39vf040_We=0;DataOut=Ox55;Delay10us();Sst39vf040_We=1;Address7_0=0x55;Address15_8=0x55;Delay10us();Sst39vf040_We=0;DataOut=0xa0;Delay10us();Sst39vf040_We=1;temp_address=byte_address;Address7_0=temp_address&0x0000ff;temp_address=byte_address;Address15_8=(temp_address&0x00ff00)>>8;temp_address=byte_address;if(temp_address&0x010000)!=0)Address16=1;elseAddress16=0;temp_address=byte_address;if(temp_address&0x020000)!=0)Address17=1;elseAddress17=0;temp_address=byte_address;if(temp_address&0x040000)!=0)Address18=1;elseAddress18=0;Delay10us();Sst39vf040_We=0;DataOut=byte_da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论