Просмотр исходного кода

fix DC/DC enable for boards which currently have it.

this fixes how the reg1 dc/dc converter is enabled on WisMesh Tag / T1000e / WM1110 and Xiao NRF52
taco 8 месяцев назад
Родитель
Сommit
e1d3da942b

+ 9 - 1
variants/rak_wismesh_tag/RAKWismeshTagBoard.cpp

@@ -21,7 +21,15 @@ static void disconnect_callback(uint16_t conn_handle, uint8_t reason) {
 void RAKWismeshTagBoard::begin() {
   // for future use, sub-classes SHOULD call this from their begin()
   startup_reason = BD_STARTUP_NORMAL;
-  NRF_POWER->DCDCEN = 1;
+  
+  // Enable DC/DC converter for improved power efficiency
+  uint8_t sd_enabled = 0;
+  sd_softdevice_is_enabled(&sd_enabled);
+  if (sd_enabled) {
+    sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);
+  } else {
+    NRF_POWER->DCDCEN = 1;
+  }
 
   pinMode(PIN_VBAT_READ, INPUT);
   pinMode(PIN_USER_BTN, INPUT_PULLUP);

+ 7 - 3
variants/t1000-e/T1000eBoard.cpp

@@ -9,10 +9,14 @@ void T1000eBoard::begin() {
   startup_reason = BD_STARTUP_NORMAL;
   btn_prev_state = HIGH;
 
-  sd_power_mode_set(NRF_POWER_MODE_LOWPWR);
-
   // Enable DC/DC converter for improved power efficiency
-  NRF_POWER->DCDCEN = 1;
+  uint8_t sd_enabled = 0;
+  sd_softdevice_is_enabled(&sd_enabled);
+  if (sd_enabled) {
+    sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);
+  } else {
+    NRF_POWER->DCDCEN = 1;
+  }
 
 #ifdef BUTTON_PIN
   pinMode(BATTERY_PIN, INPUT);

+ 8 - 1
variants/wio_wm1110/WioWM1110Board.cpp

@@ -23,7 +23,14 @@ static void disconnect_callback(uint16_t conn_handle, uint8_t reason) {
 void WioWM1110Board::begin() {
   startup_reason = BD_STARTUP_NORMAL;
 
-  NRF_POWER->DCDCEN = 1;
+  // Enable DC/DC converter for improved power efficiency
+  uint8_t sd_enabled = 0;
+  sd_softdevice_is_enabled(&sd_enabled);
+  if (sd_enabled) {
+    sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);
+  } else {
+    NRF_POWER->DCDCEN = 1;
+  }
 
   pinMode(BATTERY_PIN, INPUT);
   pinMode(LED_GREEN, OUTPUT);

+ 9 - 1
variants/xiao_nrf52/XiaoNrf52Board.cpp

@@ -23,7 +23,15 @@ static void disconnect_callback(uint16_t conn_handle, uint8_t reason) {
 void XiaoNrf52Board::begin() {
   // for future use, sub-classes SHOULD call this from their begin()
   startup_reason = BD_STARTUP_NORMAL;
-  NRF_POWER->DCDCEN = 1;
+
+  // Enable DC/DC converter for improved power efficiency
+  uint8_t sd_enabled = 0;
+  sd_softdevice_is_enabled(&sd_enabled);
+  if (sd_enabled) {
+    sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);
+  } else {
+    NRF_POWER->DCDCEN = 1;
+  }
 
   pinMode(PIN_VBAT, INPUT);
   pinMode(VBAT_ENABLE, OUTPUT);