3 软件设计 MSP430的开发软件较多,本文采用IAR公司的集成开发环境—IAR Embedded workbench 嵌入式工作台,利用C430(MSP430系列的C语言)编写调试。单片机对FLASH的操作主要有写、读、擦除。 3.1 写操作 向FLASH内部写数据是基于页的,K9F1G08U0M的命令字、地址和数据都是通过并行口线I/O0—I/O7在控制信号的作用下分时操作。地址A0—A10,A11—A26通过I/O0—I/O7分4次送入。同时K9F1G08U0M芯片提供了一根状态指示信号线 ,当该信号为低电平时,表示FLASH可能正处于擦除、编程或读操作的忙状态;而当其为高电平时,则表示为准备好状态,此时可以对芯片进行各种操作。本系统须写入126M数据写操作流程图如图2。 3.2 读操作 读操作有串行页读、连续行读、随机读3种类型。在此选用串行页读取。首先将读操作控制字00h输入,再写入地址,写入控制字30h,待 信号变高后,将本页数据依次读出。随后再改变页地址读出其它页内数据。操作流程图如图3。
3.3 擦除操作 任何FLASH器件的写入操作都必须在空的或已擦除的单元内进行,因此在进行下一次存储数据之前都必须对FLASH进行擦除操作。 擦除操作基于块,K9F1G08U0M内有1024块,块地址的输入需要两个周期,块操作的地址只有A18—A27有效,A12—A17备忽略。在地址后被送入的块擦除命令(D0h)启动块擦除操作,待 信号变高后,送入命令字70h,读出I/O0的值来判断数据擦除是否成功。图4为块擦除流程图。
4 程序设计 在此给出写操作部分程序,读操作和擦除操作均可参考文中流程图来编程,值得注意的是其它具体写地址操作应仔细阅读 K9F1G08U0M芯片资料。 #include #define CLE BIT3 #define ALE BIT3 #define WE BIT6 #define CE BIT4 #define RE BIT5 #define RB BIT7 void ReadFlash(); //读FLASH子程序 void WriteFlash(); //写FLASH子程序 void inituart(void); //初始化异步串行通信 void Write10h(); //写控制字10h子程序 void WriteCommand(); //写命令字写地址 void ClrFlash(); //擦除FLASH子程序 unsigned int k,i,a void main () { WDTCTL = WDTPW + WDTHOLD; BCSCTL1 &= "XT2OFF; do { IFG1 &= "OFIFG; for (iq0=0x05; iq0>0; iq0--); } //检验晶振是否起振 while ((IFG1 & OFIFG)!= 0); BCSCTL2 = SELM_2 + SELS + DIVS0; //SMCLK选择2分频后的4M While(k
| 欢迎光临 美丽的网站-英华家电维修论坛 (http://www.bsss.info/) | Powered by Discuz! X3.2 |