?61份资料+6场技术演讲,学习抽奖两不误
?学习新知、下载资料,赢取精美礼品!
?答题赢入门套件!
?轻松实现低功耗和小尺寸的最佳平衡
2018.09.18-2019.01.25
引言
①进行硬件设计时,必须将F206的Vccp引脚直接接于+5V电源上。
②片内CPU的工作时钟不得高于20MHz。如果用倍频连接方式,则输入时钟频率不得高于10MHz,否则会使擦、写过程出现错误,从而导致“在线”擦、写失败。
③正常情况下F206的擦、写次数寿命是1000次。因此,对Flash块的“在线”编程应该做到一次擦除、多次写入,直到整个Flash存储块写满后再重新擦除,这样可以充分延长Flash存储器的使用寿命。
④不要将写Flash的程序和被写数据放在同一块Flash存储器上(后面说明)。由于F206的中断向量从0000H单元开始,所以第一块Flash存储器(Flash0)用于保存固化程序,另一块Flash存储器用于存放重要参数,进行“在线”编程。
2Flash存储器的特点
存储器的操作有读和写两种基本操作,各种类型存储器的读操作都相同,而写操作则各不相同。RAM型存储器的读/写操作幸免通过址/数据总线和片选、读/写控制线来完成;EEPROM型存储器读操作和RAM相同,写操作由片内定时完成擦除和编程操作,并有一个状态信号线来指示写操作是否完成;PROM型存储器的写操作则由特殊工具来完成,系统中只有读操作;Flash型存储器的写操作则由清“0”、置“1”和编程操作构成。清“0”和置“1”操作按扇区(一块存储区),如F206的一块存储区的大小为32个字,Flash0的起始地址为0000H,Flash1的起始地址为40000H,每个Flash块包含512个扇区。
Flash存储器的写操作由控制寄存器控制,状态寄存器反馈的信息指示操作过程。Flash型存储器的写操作既可以“在线”完成,也可以由特殊工具来完成。由此可见,对Flash型存储器的访问由两部分构成,一为Flash存储单元,二为Flash寄存器。访问存储单元和寄存器公用一组外部总线,究竟是访问存储单元还是访问寄存器则由工作模式决定。作在访问存储单元模式(只读)时,从数据总线上读到的是存储单元中的数据;工作在访问寄存器模式(读/写)时,从数据总线读到的是寄存器的状态信息。因此,如果将写Flash的程序和将写入数据放在同一块Flash上,则对Flash写操作时需要切换工作模式,从而导致取指令时取到的是状态信息,Flash写操作失败,所以不能将程序和数据放在同一块Flash存储器上。
3F206进行Flash“在线”擦写的基本步骤
(1)模式切换
Flash的“在线”编程由清“0”、置“1”和数据写入等操作组成。进行这些操作前首先要将Flash由存储器工作模式(mode1)切换至于寄存器工作模式(mode0)。F206中Flash存储器工作模式由映射于I/O地址中的两个寄存器控制,分别为F_ACCESS0寄存器(FFE0h)和F_ACCESS1寄存器(FFE1h)。向Flash模式控制寄存器的最低位写入0,则Flash工作于寄存器模式;反之写入1,则工作于存储器模式。复位后,自动处于存储器模式。如图2所示,两种工作模式之间切换后,Flash内容变化。处于模式1时,Flash存储器显示的是其所存储的数据;处于模式0时,Flash存储器显示寄存器的内容,并且以4个为一组重复显示于整个Flash块中。
F206的Flash存储器块中只有4个寄存器SEG_CTR、TST、WADRS、WDATA,其余都是重复显示相同的内容,其功能如下所述。
*TST:测试寄存器,通常不用。(保留,用于测试。)
*WADRS:写地址寄存器,用于存储写操作地址。
*WDATA:写数据寄存器,用于存放写操作数据。
(2)清“0”操作
清“0”操作按扇区进行,F206的Flash每一区的大小为32个字(WORD)。进行清“0”操作就是对Flash存储单元的非零位(即值为“1”)写入0,使各数据位的边缘保持一致;通常的做法是将Flash存储单元中的数据读出,与FFFFh进行异或(XOR)后,再写回Flash存储单元中。清“0”操作后,需调用VER0功能对Flash块进行0校验。
(3)置“1”操作
数据只能写入已经置“1”的存储单元,对于同Flash存储单元只能写一入一次;如要改变存储单元中的内容,必须重新进行清“0”和置“1”的操作后才能写入新的数据。否则,会使存储单元中各个数据位的“边缘”不一致,从单元中读出的数据与写入的数据不一致。由于Flash擦除次数有限,因此不可能每次修改和定改数据时都进行擦除操作,而应将每次修改后的参数(表)连续写在已置“1”但沿未写入数据的Flash存储单元中,并对参数(表)作起始和结束的标记(如55AA);程序调用参数(表)时可以很方便地找到最新修改的参数(表),当已置“1”的Flash存储单元已写完,再重新进行清“0”和置“1”操作后,从Flash块的起始位置(对F206的Flash1存储块为4000h)写入新的数据,这样可以充分延长F206片内Flash的使用。