Hello,
When troubleshooting a lack of UART communication between my nRF52840 and the device on the receiving end (an STM32L4), an oscilloscope revealed that the TX pin state (from the nRF to the STM) is being held high, presumably by the STM, despite data transmission being attempted. Some quick details:
- The UART is being initialized as in the example application in SDK 15.2.0 using APP_UART_FIFO_INIT() (see code below)
- The data can be observed on the TX pin as expected prior to the STM initializing its UART module
- The STM does not appear to be able to configure the electrical characteristics of its UART RX pin
- PIN_CNF[] for the TX pin reads a configuration of 0x0000_0003
It seems to me that the next course of action is to modify the PIN_CNF[].DRIVE value (or maybe the PIN_CNF[].PULL?), but any guidance on this process would be appreciated.
Thanks.
UART init function:
static void uart_init(void)
{
uint32_t err_code;
app_uart_comm_params_t const comm_params =
{
.rx_pin_no = NRF_RX_PIN,
.tx_pin_no = NRF_TX_PIN,
.flow_control = APP_UART_FLOW_CONTROL_DISABLED,
.use_parity = false,
.baud_rate = NRF_UART_BAUDRATE_115200
};
APP_UART_FIFO_INIT(&comm_params,
UART_RX_BUF_SIZE,
UART_TX_BUF_SIZE,
uart_event_handle,
APP_IRQ_PRIORITY_LOWEST,
err_code);
APP_ERROR_CHECK(err_code);
}