Metrox
20.07.2021, 16:03
Hallo,
ich hab das Problem das der Microcontroller sich nicht auf den low power
Regulator wechseln will.
Ich hab mit CubeMX das Grundgerüst erstellt, CPU läuft auf über den MSI
mit 65,536 Khz.
Ich hab dem grundgerüst nichts weiter zugefügt ausser die verschiedenen
versuche in den low power run modus zu schalten.
Weder das hier bringt was:
HAL_PWREx_EnableLowPowerRunMode();
Noch das hier:
void enter_LPRun( void ){
/* 1. Each digital IP clock must be enabled or disabled by using the
RCC_APBxENR and RCC_AHBENR registers */
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
/* 2. The frequency of the system clock must be decreased to not exceed the
frequency of f_MSI range1. */
/* 3. The regulator is forced in low-power mode by software
(LPRUN and LPSDSR bits set ) */
PWR->CR &= ~PWR_CR_LPRUN; // Be sure LPRUN is cleared!
PWR->CR |= PWR_CR_LPSDSR; // must be set before LPRUN
PWR->CR |= PWR_CR_LPRUN; // enter low power run mode
}
Der Stromverbrauch liegt bei 168µA und ändert sich nicht.
(gemessen immer mit abgestöpseltem ST-Link)
Laut Datenblatt sollen ja bis zu 11 μA im Low-power run mode möglich
sein.
Der STANDBY Mode dagegen funktioniert wunderbar, der Stromverbrauch der
gesamten Schaltung liegt dann bei um die 2µA.
Kann mir einer sagen was ich da falsch mache oder falsch denke?
ich hab das Problem das der Microcontroller sich nicht auf den low power
Regulator wechseln will.
Ich hab mit CubeMX das Grundgerüst erstellt, CPU läuft auf über den MSI
mit 65,536 Khz.
Ich hab dem grundgerüst nichts weiter zugefügt ausser die verschiedenen
versuche in den low power run modus zu schalten.
Weder das hier bringt was:
HAL_PWREx_EnableLowPowerRunMode();
Noch das hier:
void enter_LPRun( void ){
/* 1. Each digital IP clock must be enabled or disabled by using the
RCC_APBxENR and RCC_AHBENR registers */
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
/* 2. The frequency of the system clock must be decreased to not exceed the
frequency of f_MSI range1. */
/* 3. The regulator is forced in low-power mode by software
(LPRUN and LPSDSR bits set ) */
PWR->CR &= ~PWR_CR_LPRUN; // Be sure LPRUN is cleared!
PWR->CR |= PWR_CR_LPSDSR; // must be set before LPRUN
PWR->CR |= PWR_CR_LPRUN; // enter low power run mode
}
Der Stromverbrauch liegt bei 168µA und ändert sich nicht.
(gemessen immer mit abgestöpseltem ST-Link)
Laut Datenblatt sollen ja bis zu 11 μA im Low-power run mode möglich
sein.
Der STANDBY Mode dagegen funktioniert wunderbar, der Stromverbrauch der
gesamten Schaltung liegt dann bei um die 2µA.
Kann mir einer sagen was ich da falsch mache oder falsch denke?