STM32L431CBT6 and low power design
Posted: Thu Nov 21, 2024 2:02 pm
Hi, folks.
If this is not an appropriate place for this, please let me know and I'll take it elsewhere.
I'm currently putting together a project to hopefully be as low power as possible. I've settled on the STM32L431CBT6. I've a number of I2C sensors that I'll be utilizing (SHT45, SGP41, BMP390) and driving an SPI ePaper Display (Good Display, GDEY0213B74) and incorporating their charge pump reference design in their datasheet.
I'm still in the schematic-design phase.
All of that aside, I've a few questions in regard to Stm32Duino:
1) CubeIDE allows setting up SPI as Transmit Only Master. The ePaper SPI display does not utilize MISO, so this would be the way to go regarding CubeIDE. From what I've been able to find, Stm32Duino does not support this mode. I will not be pin constrained, so I've no need for reassigning this pin, however, what is the best way to deal with the now floating MISO pin? 10K pullup to VCC? Something else?
2) How does one disable peripherals that will not be utilized? The Wiki states that the ADC is a peripheral, "which can be disabled." Is there any need to disable the peripheral prior to going to sleep for power saving reasons... and then re-enabling when the uC wakes up for a quick measurement?
3) As I'm still in the schematic design phase, and to reduce board components, I was hoping to omit the BOOT0 circuit as referenced in the AN4555 appnote. Based on the datasheet, and as I'm using the STLinkV3 and the CubeProgrammer via SWD, I would just need to tick nBOOT0 to '1' to boot from main flash. Is this correct?
4) Finally, in regard to the reset circuit also references in AN4555, I don't really see a need for an external button to reset the uC. I would imagine all I need to do is route this (with a 100n cap next to the uC pin) to the STLINK/SWD header RESET pin directly as the pin already has a weak pullup from the uC?
I'll also be using the Stm32Duino low power library and the uC will spend the vast majority of time in deepSleep mode, only waking up every 10-15 minutes for sensor/ADC readings.
Thank you for your time and expertise.
If this is not an appropriate place for this, please let me know and I'll take it elsewhere.
I'm currently putting together a project to hopefully be as low power as possible. I've settled on the STM32L431CBT6. I've a number of I2C sensors that I'll be utilizing (SHT45, SGP41, BMP390) and driving an SPI ePaper Display (Good Display, GDEY0213B74) and incorporating their charge pump reference design in their datasheet.
I'm still in the schematic-design phase.
All of that aside, I've a few questions in regard to Stm32Duino:
1) CubeIDE allows setting up SPI as Transmit Only Master. The ePaper SPI display does not utilize MISO, so this would be the way to go regarding CubeIDE. From what I've been able to find, Stm32Duino does not support this mode. I will not be pin constrained, so I've no need for reassigning this pin, however, what is the best way to deal with the now floating MISO pin? 10K pullup to VCC? Something else?
2) How does one disable peripherals that will not be utilized? The Wiki states that the ADC is a peripheral, "which can be disabled." Is there any need to disable the peripheral prior to going to sleep for power saving reasons... and then re-enabling when the uC wakes up for a quick measurement?
3) As I'm still in the schematic design phase, and to reduce board components, I was hoping to omit the BOOT0 circuit as referenced in the AN4555 appnote. Based on the datasheet, and as I'm using the STLinkV3 and the CubeProgrammer via SWD, I would just need to tick nBOOT0 to '1' to boot from main flash. Is this correct?
4) Finally, in regard to the reset circuit also references in AN4555, I don't really see a need for an external button to reset the uC. I would imagine all I need to do is route this (with a 100n cap next to the uC pin) to the STLINK/SWD header RESET pin directly as the pin already has a weak pullup from the uC?
I'll also be using the Stm32Duino low power library and the uC will spend the vast majority of time in deepSleep mode, only waking up every 10-15 minutes for sensor/ADC readings.
Thank you for your time and expertise.