- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
闪存S29AL016D在数据处理系统中的应用
擦除操作分为片擦除和段擦除两种。片擦除为整片擦除,段擦除只擦除指定段。为使用方便,在擦除某段数据时,应保证其他段数据不受影响。因此,软件多采用段擦除模式。其代码如下:
段擦除函数(flash基地址为0xb0000000);
void erase_flash(unsigned int sector_num)//sector为段号片擦除函数可参照编写
{
将数据保存在FLASH中后,若要对擦除后的段数据地址执行写操作,也可以通过给芯片写入编程操作时序来完成。写操作的结果是将地址总线指定地址的数据相应位1变为0,通俗的说,就是擦除后的数据各位都为1,写操作是将待写入数据的不为1的位变为0。其写操作函数如下:
进行擦除和写入操作时,应在进行写入时序操作时,对寄存器的偏移地址左移一位进行操作,这是因为8位数据工作模式下,芯片地址线的最低位为A-1,而处理器地址线的最低位为A0;若是16位数据操作模式,寻址寄存器时,则不需要进行移位操作。
此外,16位数据操作模式和8位数据操作模式在编写指令时序时也有区别,即写入寄存器的指令的位数要和数据位数相同,如8位指令为:*(int*)(Oxb0000000+(0x555<<1))=0x80,而16位指令应为:*(int*)(0xb0000000+0x555)=0x8080。
3 结束语
应用本文的设计可以成功地完成对FLASH的各种操作,实现向FLASH中保存数据的功能。事实上,各厂家生产的FLASH在性能上和使用方法都有所不同,S29AL016D除了速度快、容量大之外,还有一个特点就是可选择性地进行8位或16位数据操作。但在软硬件设计上要做些相应改变,笔者根据工作实践写出一点体会,希望能给同行提供帮助。
作者:石德锋 中国电子科技集团 来源:电子元器件应用