打印
[STM32F4]

请教STM32F429的dual bank flash

[复制链接]
4107|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zkf159|  楼主 | 2014-7-29 13:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zkf159 于 2014-7-29 14:06 编辑

我的芯片型号是stm32f429zgt6 是1m flash。英文版stm32f4参考手册上讲只要把OPTCR寄存器中的DB1M置1就可以实现双bank flash,OPTCR寄存器的解释是The FLASH_OPTCR register is used to modify the user option bytes.
中文手册上的具体操作步骤是:
修改 STM32F405xx/07xx 和 STM32F415xx/17xx 上的用户选项字节
要修改用户选项值,请顺序执行以下步骤:                                       
  • 检查 FLASH_SR 寄存器中的 BSY 位,以确认当前未执行任何 Flash 操作
  • 在 FLASH_OPTCR 寄存器中写入所需的选项值
  • 将 FLASH_OPTCR 寄存器中的选项启动位 (OPTSTRT) 置 1。
  • 等待 BSY 位清零。

    我写的函数  

void FLASH_OB_DBFConfig()
{
  FLASH_Status status = FLASH_COMPLETE;
  u32 optcr_t = FLASH->OPTCR;
        u32 optcr1_t = FLASH->OPTCR1;   
        
        optcr_t |= 0x40000000;
        //optcr_t &= ~0x08000000;

        FLASH_OB_Unlock();
  status = FLASH_WaitForLastOperation();

  if(status == FLASH_COMPLETE)
  {
                FLASH->OPTCR = optcr_t;
                FLASH->OPTCR1 = optcr1_t;
               
                FLASH_OB_Launch();
  }
        FLASH_OB_Lock();
}
貌似没效果,而且复位后这一位又变0了。
我想问的是
1.修改OPTCR是不是就相当于修改了option byte区的对应位?我用了上面这个函数后OPTCR是修改了,但是option byte区的对应位没变,而且OPTCR复位后又会变为原来的样子
2.英文版stm32f4参考手册上的OPTCR寄存器中是有DB1M位的,而且也有介绍怎么使用双bank flash,但是在keil4.72a中查看对应寄存器中却没DB1M位,而且最新出的中文版参考手册上对于双bank flash只字未提,是不是目前还不支持?
3.如果使用双bank flash的话,是不是程序下载到bank1,那么就算擦除bank2正在进行中,用户程序照样能进中断?
沙发
zkf159|  楼主 | 2014-7-29 16:32 | 只看该作者
没人用过这新功能吗

使用特权

评论回复
板凳
zkf159|  楼主 | 2014-7-30 08:43 | 只看该作者

使用特权

评论回复
地板
香水城| | 2014-7-30 17:58 | 只看该作者
最新出的中文版参考手册是参照英文的V4版本翻译的,那时候还没有F429。

F429中的DMA2D、FMC、SAI、LTDC等在V5版本才写到手册里的,应该也包括1MB的双bank闪存功能。

但是option byte的修改方式应该是一致的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

1

粉丝