From 7804f0103d264b7206942771e98120e83596a85f Mon Sep 17 00:00:00 2001 From: Owen L - SFE Date: Thu, 27 Feb 2020 09:32:25 -0700 Subject: [PATCH 1/2] reorder uart initialization before pin configuration --- cores/arduino/ard_sup/uart/ap3_uart.cpp | 46 ++++++++++++------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/cores/arduino/ard_sup/uart/ap3_uart.cpp b/cores/arduino/ard_sup/uart/ap3_uart.cpp index 97983e0b..9db85d58 100644 --- a/cores/arduino/ard_sup/uart/ap3_uart.cpp +++ b/cores/arduino/ard_sup/uart/ap3_uart.cpp @@ -311,6 +311,29 @@ ap3_err_t Uart::_begin(void) _config.ui32RxBufferSize = sizeof(_rx_linbuff); _config.ui32TxBufferSize = sizeof(_tx_linbuff); + //User may want to change settings mid-sketch. Only init UART if it's new. + if (_handle == NULL) + { + // Now that pins are initialized start the actual driver + retval = (ap3_err_t)am_hal_uart_initialize(_instance, &_handle); + if (retval != AP3_OK) + { + return ap3_return(retval); + } + } + retval = (ap3_err_t)am_hal_uart_power_control(_handle, AM_HAL_SYSCTRL_WAKE, false); + if (retval != AP3_OK) + { + return ap3_return(retval); + } + retval = (ap3_err_t)am_hal_uart_configure(_handle, &_config); + if (retval != AP3_OK) + { + return ap3_return(retval); + } + + UARTn(_instance)->LCRH_b.FEN = 0; // Disable that pesky FIFO + // Check for a valid instance // Check pins for compatibility with the selcted instance @@ -383,29 +406,6 @@ ap3_err_t Uart::_begin(void) pincfg = AP3_GPIO_DEFAULT_PINCFG; // set back to default for use with next pin } - //User may want to change settings mid-sketch. Only init UART if it's new. - if (_handle == NULL) - { - // Now that pins are initialized start the actual driver - retval = (ap3_err_t)am_hal_uart_initialize(_instance, &_handle); - if (retval != AP3_OK) - { - return ap3_return(retval); - } - } - retval = (ap3_err_t)am_hal_uart_power_control(_handle, AM_HAL_SYSCTRL_WAKE, false); - if (retval != AP3_OK) - { - return ap3_return(retval); - } - retval = (ap3_err_t)am_hal_uart_configure(_handle, &_config); - if (retval != AP3_OK) - { - return ap3_return(retval); - } - - UARTn(_instance)->LCRH_b.FEN = 0; // Disable that pesky FIFO - // Enable TX and RX interrupts NVIC_EnableIRQ((IRQn_Type)(UART0_IRQn + _instance)); am_hal_uart_interrupt_enable(_handle, (AM_HAL_UART_INT_RX | AM_HAL_UART_INT_TX)); From 115ffcd264ee18e576110b7299cd601266fddf3d Mon Sep 17 00:00:00 2001 From: Owen L - SFE Date: Thu, 27 Feb 2020 10:14:16 -0700 Subject: [PATCH 2/2] remove confusing comment about pin initialization --- cores/arduino/ard_sup/uart/ap3_uart.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/cores/arduino/ard_sup/uart/ap3_uart.cpp b/cores/arduino/ard_sup/uart/ap3_uart.cpp index 9db85d58..19ca226b 100644 --- a/cores/arduino/ard_sup/uart/ap3_uart.cpp +++ b/cores/arduino/ard_sup/uart/ap3_uart.cpp @@ -314,7 +314,6 @@ ap3_err_t Uart::_begin(void) //User may want to change settings mid-sketch. Only init UART if it's new. if (_handle == NULL) { - // Now that pins are initialized start the actual driver retval = (ap3_err_t)am_hal_uart_initialize(_instance, &_handle); if (retval != AP3_OK) {