《STM32 闪存编程总结--杨国文.pdf》由会员分享,可在线阅读,更多相关《STM32 闪存编程总结--杨国文.pdf(2页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、STM32 闪存编程总结闪存编程总结STM32 的 FLASH 包括主存储块和信息块两部分,主存储块用于存储程序代码,信息块存储的是 STM32 的一些原始信息。闪存的接口具有以下特性:选择字节加载;闪存编程/擦写操作;读出/写入保护(防止代码被破解);带预取缓冲器的毒接口(264bits)。闪存编程:1、FLASH 解锁:复位后闪存擦写控制器模块是被保护的,不能写入 FLASH_CR 寄存器;通过写入两个关键字(KEY1、KEY2)到 FLASH_KEYR 中打开闪存擦写控制器,才可进行编程操作。其中键值 KEY1、KEY2 是定植,可查询 STM32 手册获知;2、页擦除:STM32 的
2、FLASH 是以页为单位的,因此对 FLASH 的操作也是对其页进行擦写和编程。检查 FLASH_SR 寄存器的 BSY 位,以确认是否为状态忙,即是否有其他正在进行的操作;用 FLASH_AR 寄存器选择要操作的页,即写入需要操作的 FLASH 的页地址;FLASH_AR 寄存器用于对 FLASH 的页擦除和编程选择地址,当 FLASH_SR中的 BSY位为1时,不能写这个寄存器。设置 FLASH_CR 寄存器的 PER 位为 1,使能页擦除;设置 FLASH_CR 寄存器的 STRT 位为 1,触发擦除操作;等待 BSY 位变为 0,即不忙了,已经擦除完毕;读出被擦除的页并作验证,以确认完
3、成擦除(可选)。3、全部操作:一般使用草寇编程下载时,将对 FLASH 进行一次全擦除操作,页可通过户口程序来对 FLASH 进行全擦除;检查 FLASH_SR 寄存器的 BSY 位,以确认是否为状态忙,即是否有其他正在进行的操作;设置 FLASH_CR 寄存器的 MER 位为 1,使能全擦除;设置 FLASH_CR 寄存器的 STRT 位为 1,触发擦除操作;等待 BSY 位变为 0,即不忙了,已经擦除完毕;读出所有页并作验证(可选)。注:当闪存操作(编程/擦除)完成时,FLASH_SR 寄存器的 EOP 位硬件设置这位为1,写入1可以清除这位状态。每次成功的编程或擦除都会设置 EOP 状态
4、。4、页编程:可用于编写 Bootloader 代码,存储程序,实现在程序更新代码功能(IAP 功能)。检查 FLASH_SR 寄存器的 BSY 位,以确认是否为状态忙,即是否有其他正在进行的操作;设置 FLASH_CR 寄存器的 PG 位为 1;写入要编程的半字(16bits)到指定的地址 FLASH_AR;等待 BSY 位变为 0,即不忙了,已经擦除完毕;读出所有页并作验证(可选)。从以上可看出 FLASH 的页操作、全操作、编程操作基本相似,擦除操作需使能 STRT 位,全擦除不涉及地址的设置,进行以上这三个操作都需先进行 FLASH 的解锁,然后检查FLASH 的当前状态 FLASH_
5、SR,然后设置 FLASH_CR 寄存器相应的操作位即可。2 0 13.12.19杨国文杨 国文 13-12-19,22:505、信息块擦除:检查 FLASH_SR 寄存器的 BSY 位,以确认是否为状态忙,即是否有其他正在进行的操作;解除 FLASH_CR 寄存器的 OPTWRE 位,允许对选择字节/小信息块进行编程操作;设置 FLASH_CR 寄存器的 OPTER 位为 1,擦除选择字节/小信息块;设置 FLASH_CR 寄存器的 STRT 位为 1,触发擦除操作;等待 BSY 位变为 0;读出小信息块并作验证(可选)。6、选择字节编程解除 FLASH_SR 寄存器的 BSY 位;解除 FLASH_CR 寄存器的 OPTWRE 位;设置 FLASH_CR 寄存器的 OPTPG 位为 1,对选择字节编程;写入要编程的半字到指定地址;等待 BSY 位变为 0,即等待不忙;读出小信息块并作验证(可选)。掌握以上操作,即可完全通过函数来实现将数据或文件内容写入到闪存,以实现闪存的编程。然后便可通过 CAN、串口蓝牙等无线方式实现远程 MCU 程序的切换,页可通过其他操作来触发在程序进行代码更新。杨国文 2013.12.192 0 13.12.19杨国文杨 国文 13-12-19,22:50
限制150内