I need to use the online compiler (long story) so can't use that fix,
But what i can seem to do is manually configure the uart up and down, and get good results.
UP
NRF_UART0->PSELTXD = PN_UART_TX;
NRF_UART0->PSELRXD = PN_UART_RX;
NRF_UART0->CONFIG = (UART_CONFIG_PARITY_Excluded << UART_CONFIG_PARITY_Pos) | UART_CONFIG_HWFC_Disabled;
NRF_UART0->BAUDRATE = NRF_UARTE_BAUDRATE_115200;
NRF_UART0->ENABLE = UART_ENABLE_ENABLE_Enabled;
NRF_UART0->EVENTS_RXDRDY = 0x0UL;
NRF_UART0->EVENTS_TXDRDY = 0x0UL;
NRF_UART0->TASKS_STARTRX = 0x1UL;
NRF_UART0->TASKS_STARTTX = 0x1UL;
NRF_UART0->INTENSET = UART_INTENSET_RXDRDY_Msk;
NVIC_ClearPendingIRQ(UART0_IRQn);
NVIC_SetPriority(UART0_IRQn, 3);
NVIC_EnableIRQ(UART0_IRQn);
DOWN
NVIC_DisableIRQ(UART0_IRQn);
NRF_UART0->INTENCLR = UART_INTENCLR_RXDRDY_Msk;
NRF_UART0->TASKS_STOPRX = 0x1UL;
NRF_UART0->TASKS_STOPTX = 0x1UL;
NRF_UART0->ENABLE = UART_ENABLE_ENABLE_Disabled;
NRF_UART0->PSELTXD = 0xFFFFFFFF;
NRF_UART0->PSELRXD = 0xFFFFFFFF;
NRF_UART0->PSELRTS = 0xFFFFFFFF;
NRF_UART0->PSELCTS = 0xFFFFFFFF;
And this gives low 5ua sleep current at sleep. However it means I cannot use printf or scanf etc, i have to manual read or write to the buffers :(
Hi
Having issue with high sleep current after starting SPI channel. If i start the SPI, read a sensor and then sleep using Thread::wait, i get unusually high sleep current, as if the high speed clock is still running.
Why is this, do i need to shut down the SPI first, and if so how do i do this as the SPI class has no function for this?
Same is also true with I2C.
Thanks
B