在STM32F4上有两种仿真EEPROM的方法:


片上4 KB备份SRAM
片上Flash,具有特定的软件算法


此处描述了第二个选项:AN3969。

但是,不幸的是,谷歌未能提供有关如何使用第一种选择的信息-使用4Kb的备用SRAM作为EEPROM吗?

有人可以帮忙吗?

最佳答案

必须执行以下操作:


使能PWR时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

启用对备份域的访问

PWR_BackupAccessCmd(ENABLE);

启用备用SRAM时钟

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_BKPSRAM, ENABLE);

启用备用SRAM低功耗稳压器以将其内容保留在VBAT模式下

PWR_BackupRegulatorCmd(ENABLE);



并且您可以向sram写入/读取数据(这些代码来自STM32F4xx_DSP_StdPeriph_Lib中的BKP_Domain代码)(在我的mcu stm32f417 BKPSRAM_BASE = 0x40024000中)

   // Write to Backup SRAM with 32-Bit Data
   for (i = 0x0; i < 0x100; i += 4) {
       *(__IO uint32_t *) (BKPSRAM_BASE + i) = i;
   }

   // Check the written Data
   for (i = 0x0; i < 0x100; i += 4) {
          if ((*(__IO uint32_t *) (BKPSRAM_BASE + i)) != i){
              errorindex++;
          }
   }


然后,如果您想要:

    // Wait until the Backup SRAM low power Regulator is ready
    while(PWR_GetFlagStatus(PWR_FLAG_BRR) == RESET)
    {}


您可以在STM32F4xx_DSP_StdPeriph_Lib中找到这些功能。

关于stm32 - 如何在STM32F4中将备用SRAM用作EEPROM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20667754/

10-11 19:44