
在众多的单片机中都集成了 Flash 存储器系统,该存储器系统可用作代码和数据的存储。它在整个存储器中所处的位置在最起始的位置,一般其起始地址从0 开始,如图1 所示。
图1 存储器系统示意图
Flash 是由一组可独立擦除的1KB 区块所构成的,对一个区块进行擦除将使该区块的全部内容复位为1。
下面这幅图是 Flash 存储器的简单示意图,此图形象的体现了Flash 存储器是由1KB 区块构成,而且每个区块的基地址都固定的,其基地址如图2 所示。
图 2 Flash 存储器示意图
Flash 存储器的操作
对 Flash 存储器的操作一般是进行读、写和擦除。Flash 存储器的擦除必须是以1KB 为单位对齐的地址并指定哪一区块被擦除,或者全部擦除。
Flash 存储器的编程写入的地址必须以字(4 个字节)为单位对齐,且指明要写入的具体地址。也就是说可以是任意地址,但必须满足写入的地址是字对齐的。
Flash 存储器的读取也可以是任意地址的数据,但必须满足读取的地址是字对齐的,否则,读出的数据绝对不正确,结果也难以预料。
Flash 存储器的擦除必须是以1KB 为单位对齐的地址并指定哪一区块被擦除,或者全部擦除。也就是说以区块是flash 擦除的最小单位。
●执行 1-KB 页的擦除
执行 1KB 页的擦除步骤如下:
(1) 将页地址写入FMA 寄存器
(2) 将Flash 写入匙码(flash write key)写入FMC 寄存器,并将ERASE 位置位(写入0xA4420002)。
(3) 查询FMC 寄存器直至ERASE 位被清零。
如图1所示:
图1 执行1KB 页的擦除步骤示意图
实例程序如程序清单 1 所示: