Hi everyone,
I'm now using nRF52832 to communicate with a device using UARTE.
In my application, i need to constantly send a control packet to the device, to keep it responsive to the control (~15ms between each data).
I don't want my application to be blocked, so i decide to use UARTE to do it automatically, and the TX part is working perfectly.
But the RX part is just not working at all, there are two issues:
1. With a valid waveform observed on the oscilloscope, the UARTE library returns framing error.
The RX buffer is filled with the data, while the RX byte count in i) p_event->data.error.rxtx.bytes and ii) p_event->data.rxtx.bytes are zero.
2. With a valid waveform observed on the oscilloscope, the UARTE library will not returns any event. The RX buffer receives nothing.
Here is the setting of the UARTE:
/* Init UART */ nrf_drv_uart_config_t config = { .pseltxd = TX_PIN, .pselrxd = RX_PIN, .pselcts = NRF_UART_PSEL_DISCONNECTED, .pselrts = NRF_UART_PSEL_DISCONNECTED, .p_context = NULL, .hwfc = NRF_UART_HWFC_DISABLED, .parity = NRF_UART_PARITY_EXCLUDED, .baudrate = NRF_UART_BAUDRATE_250000, .interrupt_priority = UART_DEFAULT_CONFIG_IRQ_PRIORITY, }; err_code = nrf_drv_uart_init(&uart_inst, &config, uart_event_handler);
Here is how i start the RX task:
nrf_drv_uart_rx(&uart_inst, rev_handler.rev_buf, rev_handler.rx_len);
Here is the SDK config setting:
// <e> NRFX_PRS_ENABLED - nrfx_prs - Peripheral Resource Sharing module //========================================================== #ifndef NRFX_PRS_ENABLED #define NRFX_PRS_ENABLED 1 #endif // <q> NRFX_PRS_BOX_0_ENABLED - Enables box 0 in the module. #ifndef NRFX_PRS_BOX_0_ENABLED #define NRFX_PRS_BOX_0_ENABLED 0 #endif // <q> NRFX_PRS_BOX_1_ENABLED - Enables box 1 in the module. #ifndef NRFX_PRS_BOX_1_ENABLED #define NRFX_PRS_BOX_1_ENABLED 0 #endif // <q> NRFX_PRS_BOX_2_ENABLED - Enables box 2 in the module. #ifndef NRFX_PRS_BOX_2_ENABLED #define NRFX_PRS_BOX_2_ENABLED 0 #endif // <q> NRFX_PRS_BOX_3_ENABLED - Enables box 3 in the module. #ifndef NRFX_PRS_BOX_3_ENABLED #define NRFX_PRS_BOX_3_ENABLED 0 #endif // <q> NRFX_PRS_BOX_4_ENABLED - Enables box 4 in the module. #ifndef NRFX_PRS_BOX_4_ENABLED #define NRFX_PRS_BOX_4_ENABLED 1 #endif // <e> NRFX_PRS_CONFIG_LOG_ENABLED - Enables logging in the module. //========================================================== #ifndef NRFX_PRS_CONFIG_LOG_ENABLED #define NRFX_PRS_CONFIG_LOG_ENABLED 0 #endif // <o> NRFX_PRS_CONFIG_LOG_LEVEL - Default Severity level // <0=> Off // <1=> Error // <2=> Warning // <3=> Info // <4=> Debug #ifndef NRFX_PRS_CONFIG_LOG_LEVEL #define NRFX_PRS_CONFIG_LOG_LEVEL 3 #endif // <o> NRFX_PRS_CONFIG_INFO_COLOR - ANSI escape code prefix. // <0=> Default // <1=> Black // <2=> Red // <3=> Green // <4=> Yellow // <5=> Blue // <6=> Magenta // <7=> Cyan // <8=> White #ifndef NRFX_PRS_CONFIG_INFO_COLOR #define NRFX_PRS_CONFIG_INFO_COLOR 0 #endif // <o> NRFX_PRS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. // <0=> Default // <1=> Black // <2=> Red // <3=> Green // <4=> Yellow // <5=> Blue // <6=> Magenta // <7=> Cyan // <8=> White #ifndef NRFX_PRS_CONFIG_DEBUG_COLOR #define NRFX_PRS_CONFIG_DEBUG_COLOR 0 #endif // </e> // </e> // <e> NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver //========================================================== #ifndef NRFX_UARTE_ENABLED #define NRFX_UARTE_ENABLED 1 #endif // <o> NRFX_UARTE0_ENABLED - Enable UARTE0 instance #ifndef NRFX_UARTE0_ENABLED #define NRFX_UARTE0_ENABLED 0 #endif // <o> NRFX_UARTE_DEFAULT_CONFIG_HWFC - Hardware Flow Control // <0=> Disabled // <1=> Enabled #ifndef NRFX_UARTE_DEFAULT_CONFIG_HWFC #define NRFX_UARTE_DEFAULT_CONFIG_HWFC 0 #endif // <o> NRFX_UARTE_DEFAULT_CONFIG_PARITY - Parity // <0=> Excluded // <14=> Included #ifndef NRFX_UARTE_DEFAULT_CONFIG_PARITY #define NRFX_UARTE_DEFAULT_CONFIG_PARITY 0 #endif // <o> NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE - Default Baudrate // <323584=> 1200 baud // <643072=> 2400 baud // <1290240=> 4800 baud // <2576384=> 9600 baud // <3862528=> 14400 baud // <5152768=> 19200 baud // <7716864=> 28800 baud // <8388608=> 31250 baud // <10289152=> 38400 baud // <15007744=> 56000 baud // <15400960=> 57600 baud // <20615168=> 76800 baud // <30801920=> 115200 baud // <61865984=> 230400 baud // <67108864=> 250000 baud // <121634816=> 460800 baud // <251658240=> 921600 baud // <268435456=> 1000000 baud #ifndef NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE #define NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE 30801920 #endif // <o> NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority // <0=> 0 (highest) // <1=> 1 // <2=> 2 // <3=> 3 // <4=> 4 // <5=> 5 // <6=> 6 // <7=> 7 #ifndef NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY #define NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY 6 #endif // <e> NRFX_UARTE_CONFIG_LOG_ENABLED - Enables logging in the module. //========================================================== #ifndef NRFX_UARTE_CONFIG_LOG_ENABLED #define NRFX_UARTE_CONFIG_LOG_ENABLED 0 #endif // <o> NRFX_UARTE_CONFIG_LOG_LEVEL - Default Severity level // <0=> Off // <1=> Error // <2=> Warning // <3=> Info // <4=> Debug #ifndef NRFX_UARTE_CONFIG_LOG_LEVEL #define NRFX_UARTE_CONFIG_LOG_LEVEL 3 #endif // <o> NRFX_UARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. // <0=> Default // <1=> Black // <2=> Red // <3=> Green // <4=> Yellow // <5=> Blue // <6=> Magenta // <7=> Cyan // <8=> White #ifndef NRFX_UARTE_CONFIG_INFO_COLOR #define NRFX_UARTE_CONFIG_INFO_COLOR 0 #endif // <o> NRFX_UARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. // <0=> Default // <1=> Black // <2=> Red // <3=> Green // <4=> Yellow // <5=> Blue // <6=> Magenta // <7=> Cyan // <8=> White #ifndef NRFX_UARTE_CONFIG_DEBUG_COLOR #define NRFX_UARTE_CONFIG_DEBUG_COLOR 0 #endif // </e> // </e> // <e> NRFX_UART_ENABLED - nrfx_uart - UART peripheral driver //========================================================== #ifndef NRFX_UART_ENABLED #define NRFX_UART_ENABLED 0 #endif // <o> NRFX_UART0_ENABLED - Enable UART0 instance #ifndef NRFX_UART0_ENABLED #define NRFX_UART0_ENABLED 0 #endif // <o> NRFX_UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control // <0=> Disabled // <1=> Enabled #ifndef NRFX_UART_DEFAULT_CONFIG_HWFC #define NRFX_UART_DEFAULT_CONFIG_HWFC 0 #endif // <o> NRFX_UART_DEFAULT_CONFIG_PARITY - Parity // <0=> Excluded // <14=> Included #ifndef NRFX_UART_DEFAULT_CONFIG_PARITY #define NRFX_UART_DEFAULT_CONFIG_PARITY 0 #endif // <o> NRFX_UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate // <323584=> 1200 baud // <643072=> 2400 baud // <1290240=> 4800 baud // <2576384=> 9600 baud // <3866624=> 14400 baud // <5152768=> 19200 baud // <7729152=> 28800 baud // <8388608=> 31250 baud // <10309632=> 38400 baud // <15007744=> 56000 baud // <15462400=> 57600 baud // <20615168=> 76800 baud // <30924800=> 115200 baud // <61845504=> 230400 baud // <67108864=> 250000 baud // <123695104=> 460800 baud // <247386112=> 921600 baud // <268435456=> 1000000 baud #ifndef NRFX_UART_DEFAULT_CONFIG_BAUDRATE #define NRFX_UART_DEFAULT_CONFIG_BAUDRATE 30924800 #endif // <o> NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority // <0=> 0 (highest) // <1=> 1 // <2=> 2 // <3=> 3 // <4=> 4 // <5=> 5 // <6=> 6 // <7=> 7 #ifndef NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY #define NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 #endif // <e> NRFX_UART_CONFIG_LOG_ENABLED - Enables logging in the module. //========================================================== #ifndef NRFX_UART_CONFIG_LOG_ENABLED #define NRFX_UART_CONFIG_LOG_ENABLED 0 #endif // <o> NRFX_UART_CONFIG_LOG_LEVEL - Default Severity level // <0=> Off // <1=> Error // <2=> Warning // <3=> Info // <4=> Debug #ifndef NRFX_UART_CONFIG_LOG_LEVEL #define NRFX_UART_CONFIG_LOG_LEVEL 3 #endif // <o> NRFX_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. // <0=> Default // <1=> Black // <2=> Red // <3=> Green // <4=> Yellow // <5=> Blue // <6=> Magenta // <7=> Cyan // <8=> White #ifndef NRFX_UART_CONFIG_INFO_COLOR #define NRFX_UART_CONFIG_INFO_COLOR 0 #endif // <o> NRFX_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. // <0=> Default // <1=> Black // <2=> Red // <3=> Green // <4=> Yellow // <5=> Blue // <6=> Magenta // <7=> Cyan // <8=> White #ifndef NRFX_UART_CONFIG_DEBUG_COLOR #define NRFX_UART_CONFIG_DEBUG_COLOR 0 #endif // </e> // </e> // <e> UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer //========================================================== #ifndef UART_ENABLED #define UART_ENABLED 1 #endif // <o> UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control // <0=> Disabled // <1=> Enabled #ifndef UART_DEFAULT_CONFIG_HWFC #define UART_DEFAULT_CONFIG_HWFC 0 #endif // <o> UART_DEFAULT_CONFIG_PARITY - Parity // <0=> Excluded // <14=> Included #ifndef UART_DEFAULT_CONFIG_PARITY #define UART_DEFAULT_CONFIG_PARITY 0 #endif // <o> UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate // <323584=> 1200 baud // <643072=> 2400 baud // <1290240=> 4800 baud // <2576384=> 9600 baud // <3862528=> 14400 baud // <5152768=> 19200 baud // <7716864=> 28800 baud // <10289152=> 38400 baud // <15400960=> 57600 baud // <20615168=> 76800 baud // <30801920=> 115200 baud // <61865984=> 230400 baud // <67108864=> 250000 baud // <121634816=> 460800 baud // <251658240=> 921600 baud // <268435456=> 1000000 baud #ifndef UART_DEFAULT_CONFIG_BAUDRATE #define UART_DEFAULT_CONFIG_BAUDRATE 30801920 #endif // <o> UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority // <i> Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice // <0=> 0 (highest) // <1=> 1 // <2=> 2 // <3=> 3 // <4=> 4 // <5=> 5 // <6=> 6 // <7=> 7 #ifndef UART_DEFAULT_CONFIG_IRQ_PRIORITY #define UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 #endif // <q> UART_EASY_DMA_SUPPORT - Driver supporting EasyDMA #ifndef UART_EASY_DMA_SUPPORT #define UART_EASY_DMA_SUPPORT 1 #endif // <q> UART_LEGACY_SUPPORT - Driver supporting Legacy mode #ifndef UART_LEGACY_SUPPORT #define UART_LEGACY_SUPPORT 0 #endif // <e> UART0_ENABLED - Enable UART0 instance //========================================================== #ifndef UART0_ENABLED #define UART0_ENABLED 1 #endif // <q> UART0_CONFIG_USE_EASY_DMA - Default setting for using EasyDMA #ifndef UART0_CONFIG_USE_EASY_DMA #define UART0_CONFIG_USE_EASY_DMA 1 #endif // </e> // </e>
Please share your experience if you had the same issues to me, thank you!!
BR,
Jonathan