Skip to content

Commit 60adfa4

Browse files
authored
Merge pull request #8089 from furbrain/main
Reset UART on deinit, reduces power consumption on nRF
2 parents 4789508 + 4bb475b commit 60adfa4

File tree

1 file changed

+7
-0
lines changed
  • ports/nrf/common-hal/busio

1 file changed

+7
-0
lines changed

ports/nrf/common-hal/busio/UART.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,15 @@ bool common_hal_busio_uart_deinited(busio_uart_obj_t *self) {
266266
}
267267

268268
void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
269+
volatile uint32_t *power_cycle = (void *)(self->uarte->p_reg) + 0xFFC;
269270
if (!common_hal_busio_uart_deinited(self)) {
271+
nrfx_uarte_rx_abort(self->uarte);
272+
nrfx_uarte_tx_abort(self->uarte);
270273
nrfx_uarte_uninit(self->uarte);
274+
// power cycle the peripheral as per https://devzone.nordicsemi.com/f/nordic-q-a/26030/how-to-reach-nrf52840-uarte-current-supply-specification/102605#102605
275+
*power_cycle = 0;
276+
*power_cycle;
277+
*power_cycle = 1;
271278
reset_pin_number(self->tx_pin_number);
272279
reset_pin_number(self->rx_pin_number);
273280
reset_pin_number(self->rts_pin_number);

0 commit comments

Comments
 (0)