Issue #18: Backup RAM: Make use of backup regulator optional

This commit is contained in:
Mario Hüttel 2020-09-04 21:33:54 +02:00
parent d3c4e1bffc
commit a12648ff7a
2 changed files with 10 additions and 6 deletions

View File

@ -19,11 +19,13 @@
*/ */
#include <stdint.h> #include <stdint.h>
#include <stdbool.h>
/** /**
* @brief Init the backup ram and make it accesible * @brief Init the backup ram and make it accesible
* @param use_backup_regulator Enable the Backup VBAT regulator. It will be used, when VDD is powered off
*/ */
void backup_ram_init(void); void backup_ram_init(bool use_backup_regulator);
/** /**
* @brief Disable access to the backup RAM. This saves power * @brief Disable access to the backup RAM. This saves power

View File

@ -34,18 +34,20 @@
#error "Backup RAM size ahs to be a power of two!" #error "Backup RAM size ahs to be a power of two!"
#endif #endif
void backup_ram_init(void) void backup_ram_init(bool use_backup_regulator)
{ {
rcc_manager_enable_clock(&RCC->APB1ENR, BITMASK_TO_BITNO(RCC_APB1ENR_PWREN)); rcc_manager_enable_clock(&RCC->APB1ENR, BITMASK_TO_BITNO(RCC_APB1ENR_PWREN));
/* Enable access to backup RAM register set */ /* Enable access to backup RAM register set */
PWR->CR |= PWR_CR_DBP; PWR->CR |= PWR_CR_DBP;
if (use_backup_regulator) {
/* Enable the backup regulator */ /* Enable the backup regulator */
PWR->CSR |= PWR_CSR_BRE; PWR->CSR |= PWR_CSR_BRE;
/* Wait until regulator is ready */ /* Wait until regulator is ready */
while (!(PWR->CSR & PWR_CSR_BRR)); while (!(PWR->CSR & PWR_CSR_BRR));
}
/* Enable clock for backup ram interface */ /* Enable clock for backup ram interface */
rcc_manager_enable_clock(&RCC->AHB1ENR, BITMASK_TO_BITNO(RCC_AHB1ENR_BKPSRAMEN)); rcc_manager_enable_clock(&RCC->AHB1ENR, BITMASK_TO_BITNO(RCC_AHB1ENR_BKPSRAMEN));