From 784b0518d28214ad7164cceceb7baf2cbadd4d0e Mon Sep 17 00:00:00 2001 From: Mateusz Piesta Date: Mon, 23 May 2022 13:21:12 +0200 Subject: [PATCH] [BH-1552] Minor power optimization Switched off temperature sensor and its driver. Minor GPIO pads configuration tweaks. --- .../temperature_source/TemperatureSource.cpp | 15 ++++++++------ module-bsp/board/rt1051/bellpx/pin_mux.c | 20 ++++++++----------- .../services/evtmgr/EventManager.cpp | 10 ++++++---- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/module-bsp/board/rt1051/bellpx/hal/temperature_source/TemperatureSource.cpp b/module-bsp/board/rt1051/bellpx/hal/temperature_source/TemperatureSource.cpp index a57a1600278803c4c03ffca281d29f9e740d3d55..d2923ba48b3287da97cb58844e5fdfe9126b55a3 100644 --- a/module-bsp/board/rt1051/bellpx/hal/temperature_source/TemperatureSource.cpp +++ b/module-bsp/board/rt1051/bellpx/hal/temperature_source/TemperatureSource.cpp @@ -10,19 +10,22 @@ namespace hal::temperature class BellTemperatureSource : public AbstractTemperatureSource { public: + BellTemperatureSource() + { + bsp::bell_temp_sensor::init(); + } + ~BellTemperatureSource() + { + bsp::bell_temp_sensor::deinit(); + } Result read() { - temperature = bsp::bell_temp_sensor::readout(); - return temperature; + return bsp::bell_temp_sensor::readout(); } - - private: - AbstractTemperatureSource::Temperature temperature{}; }; std::shared_ptr AbstractTemperatureSource::Factory::create() { - bsp::bell_temp_sensor::init(); return hal::impl::factory(); } } // namespace hal::temperature diff --git a/module-bsp/board/rt1051/bellpx/pin_mux.c b/module-bsp/board/rt1051/bellpx/pin_mux.c index cf2cb3f397c26d011a3bc4ed4b0d3332447110ff..6e68b09eb1cbaf0cecc63ce685dd6e349ef7594a 100644 --- a/module-bsp/board/rt1051/bellpx/pin_mux.c +++ b/module-bsp/board/rt1051/bellpx/pin_mux.c @@ -1146,16 +1146,16 @@ void PINMUX_InitBatteryCharger(void) PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_OPEN_DRAIN_DISABLED | PAD_CONFIG_SPEED_SLOW_50MHz | PAD_CONFIG_PULL_KEEPER_ENABLED | PAD_CONFIG_SELECT_PULL | PAD_CONFIG_PULL_UP_100kOhm | - PAD_CONFIG_DRIVER_STRENGTH_LVL_6 | PAD_CONFIG_HYSTERESIS_DISABLED); + PAD_CONFIG_DRIVER_STRENGTH_LVL_1 | PAD_CONFIG_HYSTERESIS_DISABLED); } void PINMUX_InitEinkFrontlight(void) { IOMUXC_SetPinMux(PINMUX_EINK_FORNTLIGHT_PWM, 0U); IOMUXC_SetPinConfig(PINMUX_EINK_FORNTLIGHT_PWM, - PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_OPEN_DRAIN_DISABLED | PAD_CONFIG_SPEED_MEDIUM_1_100MHz | + PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_OPEN_DRAIN_DISABLED | PAD_CONFIG_SPEED_SLOW_50MHz | PAD_CONFIG_PULL_KEEPER_ENABLED | PAD_CONFIG_SELECT_KEEPER | PAD_CONFIG_PULL_DOWN_100kOhm | - PAD_CONFIG_DRIVER_STRENGTH_LVL_6 | PAD_CONFIG_HYSTERESIS_DISABLED); + PAD_CONFIG_DRIVER_STRENGTH_LVL_1 | PAD_CONFIG_HYSTERESIS_DISABLED); } void PINMUX_InitButtons(void) @@ -1214,9 +1214,9 @@ void PINMUX_WDOG_B_Init(void) { IOMUXC_SetPinMux(PINMUX_WDOG_B, 0U); /* Software Input On Field: Input Path is determined by functionality */ IOMUXC_SetPinConfig(PINMUX_WDOG_B, - PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_OPEN_DRAIN_DISABLED | PAD_CONFIG_SPEED_MEDIUM_1_100MHz | + PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_OPEN_DRAIN_DISABLED | PAD_CONFIG_SPEED_SLOW_50MHz | PAD_CONFIG_PULL_KEEPER_ENABLED | PAD_CONFIG_SELECT_KEEPER | - PAD_CONFIG_DRIVER_STRENGTH_LVL_6 | PAD_CONFIG_HYSTERESIS_DISABLED); + PAD_CONFIG_DRIVER_STRENGTH_LVL_1 | PAD_CONFIG_HYSTERESIS_DISABLED); } void PINMUX_InitI2C4(void) @@ -1239,17 +1239,13 @@ void PINMUX_InitI2C4(void) IOMUXC_SetPinConfig(PINMUX_I2C4_SCL, - PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_DRIVER_STRENGTH_LVL_6 | - PAD_CONFIG_SPEED_MEDIUM_2_100MHz | PAD_CONFIG_PULL_KEEPER_ENABLED | - PAD_CONFIG_SELECT_KEEPER | PAD_CONFIG_PULL_UP_22kOhm); + PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_DRIVER_STRENGTH_LVL_1 | PAD_CONFIG_SPEED_SLOW_50MHz); IOMUXC_SetPinMux(PINMUX_I2C4_SDA, 1U); /* Software Input On Field: Input Path is determined by functionality */ IOMUXC_SetPinConfig(PINMUX_I2C4_SDA, - PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_DRIVER_STRENGTH_LVL_6 | - PAD_CONFIG_SPEED_MEDIUM_2_100MHz | PAD_CONFIG_PULL_KEEPER_ENABLED | - PAD_CONFIG_SELECT_KEEPER | PAD_CONFIG_PULL_UP_22kOhm); + PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_DRIVER_STRENGTH_LVL_1 | PAD_CONFIG_SPEED_SLOW_50MHz); } void PINMUX_Wakeup(void) @@ -1259,7 +1255,7 @@ void PINMUX_Wakeup(void) IOMUXC_SetPinMux(PINMUX_WAKEUP, 0U); /* Software Input On Field: Input Path is determined by functionality */ IOMUXC_SetPinConfig(PINMUX_WAKEUP, - PAD_CONFIG_HYSTERESIS_ENABLED | PAD_CONFIG_PULL_UP_22kOhm | PAD_CONFIG_SELECT_PULL | + PAD_CONFIG_HYSTERESIS_ENABLED | PAD_CONFIG_PULL_UP_100kOhm | PAD_CONFIG_SELECT_PULL | PAD_CONFIG_PULL_KEEPER_ENABLED | PAD_CONFIG_OPEN_DRAIN_DISABLED); } diff --git a/products/BellHybrid/services/evtmgr/EventManager.cpp b/products/BellHybrid/services/evtmgr/EventManager.cpp index ea6726c5bab4b5270afe784c76f00a6694d343d5..6afdbe412acc9b8d4c803e918f348048e40d98c5 100644 --- a/products/BellHybrid/services/evtmgr/EventManager.cpp +++ b/products/BellHybrid/services/evtmgr/EventManager.cpp @@ -36,14 +36,16 @@ namespace } EventManager::EventManager(LogDumpFunction logDumpFunction, const std::string &name) - : EventManagerCommon(logDumpFunction, name), - temperatureSource{hal::temperature::AbstractTemperatureSource::Factory::create()}, - backlightHandler(settings, this), userActivityHandler(std::make_shared(name, this), this) + : EventManagerCommon(logDumpFunction, name), backlightHandler(settings, this), + userActivityHandler(std::make_shared(name, this), this) { buildKeySequences(); - updateTemperature(*temperatureSource); +#if CONFIG_ENABLE_TEMP == 1 + temperatureSource = hal::temperature::AbstractTemperatureSource::Factory::create(); + updateTemperature(*temperatureSource); onMinuteTick = [this](const time_t) { updateTemperature(*temperatureSource); }; +#endif } void EventManager::handleKeyEvent(sys::Message *msg)