STM32F407IGT6擦除和编程操作
擦除和编程操作
对于任何Flash内存程序操作(擦除或程序),CPU时钟频率(HCLK)必须至少为1 MHz。如果在Flash内存操作期间发生设备重置,则Flash内存的内容不被保证。在写入或擦除STM32F407IGT6时,任何读取闪存的尝试都会导致总线失速。一旦程序操作完成,读操作将被正确处理。这意味着在进行写/擦除操作时不能执行代码或数据获取。
解锁Flash控制寄存器
重置后,不允许在Flash控制寄存器(FLASH_CR)中写入,以保护闪存不受可能的不必要操作的影响,例如电干扰。解锁该寄存器的顺序如下:在Flash key寄存器(FLASH_KEYR)2中写入KEY1 = 0x45670123。写入KEY2 = 0xCDEF89AB在Flash键寄存器(FLASH_KEYR)任何错误的序列将返回一个总线错误,并锁定FLASH_CR寄存器,直到下一次重置。通过在FLASH_CR寄存器中设置LOCK位,软件可以再次锁定FLASH_CR寄存器
注意:当FLASH_SRregister中的BSY位被设置时,FLASH_CR寄存器在写模式下不可访问。任何使用BSY位设置写入它的尝试都将导致AHB总线暂停,直到BSY位被清除
程序/擦除并行度
size是通过FLASH_CR寄存器中的PSIZE字段配置的。它表示每次对闪存进行写操作时要编程的字节数。PSIZE受电源电压和是否使用外部VPPsupply的限制。因此,在任何编程/擦除操作之前,必须在FLASH_CR寄存器中正确地配置它。闪存擦除操作只能执行扇区,银行或整个闪存(大规模擦除)。擦除时间取决于PSIZE编程值。有关擦除时间的更多详细信息,请参阅设备数据表的电气特性部分
注意:以不一致的程序并行度/电压范围设置开始的任何程序或擦除操作都可能导致不可预测的结果。即使后续的读操作表明逻辑值已有效地写入内存,该值也可能不会被保留。要使用VPP,必须将外部高压电源(8 - 9v)应用到VPPpad上。即使直流消耗超过10 mA,外部电源也必须能够维持这个电压范围。建议将VPP的使用限制在工厂线上的初始编程中。VPP电源使用时间不能超过1小时,否则会损坏闪存。