| # nrfx UART configuration |
| |
| # Copyright (c) 2016 - 2018, Nordic Semiconductor ASA |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| menuconfig UART_NRFX |
| bool "nRF UART nrfx drivers" |
| default y |
| select SERIAL_HAS_DRIVER |
| select SERIAL_SUPPORT_INTERRUPT |
| select SERIAL_SUPPORT_ASYNC |
| depends on SOC_FAMILY_NRF |
| help |
| Enable support for nrfx UART drivers for nRF MCU series. |
| Peripherals with the same instance ID cannot be used together, |
| e.g. UART_0 and UARTE_0. |
| |
| if UART_NRFX |
| |
| # Workaround for not being able to have commas in macro arguments |
| DT_COMPAT_NORDIC_NRF_UART := nordic,nrf-uart |
| DT_COMPAT_NORDIC_NRF_UARTE := nordic,nrf-uarte |
| |
| # ----------------- port 0 ----------------- |
| config UART_0_NRF_UART |
| def_bool $(dt_nodelabel_has_compat,uart0,$(DT_COMPAT_NORDIC_NRF_UART)) |
| select NRF_UART_PERIPHERAL |
| help |
| Enable nRF UART without EasyDMA on port 0. |
| |
| config UART_0_NRF_UARTE |
| def_bool $(dt_nodelabel_has_compat,uart0,$(DT_COMPAT_NORDIC_NRF_UARTE)) |
| select NRF_UARTE_PERIPHERAL |
| help |
| Enable nRF UART with EasyDMA on port 0. |
| |
| if UART_0_NRF_UART || UART_0_NRF_UARTE |
| |
| config UART_0_ENHANCED_POLL_OUT |
| bool "Efficient poll out on port 0" |
| default y |
| depends on UART_0_NRF_UARTE |
| help |
| When enabled, polling out does not trigger interrupt which stops TX. |
| Feature uses a PPI channel. |
| |
| config UART_0_INTERRUPT_DRIVEN |
| bool "Enable interrupt support on port 0" |
| depends on UART_INTERRUPT_DRIVEN |
| default y |
| help |
| This option enables UART interrupt support on port 0. |
| |
| config UART_0_ASYNC |
| bool "Enable Asynchronous API support on port 0" |
| depends on UART_ASYNC_API && !UART_0_INTERRUPT_DRIVEN |
| default y |
| help |
| This option enables UART Asynchronous API support on port 0. |
| |
| config UART_0_NRF_PARITY_BIT |
| bool "Enable parity bit" |
| help |
| Enable parity bit. |
| |
| config UART_0_NRF_TX_BUFFER_SIZE |
| int "Size of RAM buffer" |
| depends on UART_0_NRF_UARTE |
| range 1 65535 |
| default 32 |
| help |
| Size of the transmit buffer for API function: fifo_fill. |
| This value is limited by range of TXD.MAXCNT register for |
| particular SoC. |
| |
| config UART_0_NRF_HW_ASYNC |
| bool "Use hardware RX byte counting" |
| depends on UART_0_NRF_UARTE |
| depends on UART_ASYNC_API |
| help |
| If default driver uses interrupts to count incoming bytes, it is possible |
| that with higher speeds and/or high cpu load some data can be lost. |
| It is recommended to use hardware byte counting in such scenarios. |
| Hardware RX byte counting requires timer instance and one PPI channel |
| |
| config UART_0_NRF_ASYNC_LOW_POWER |
| bool "Low power mode" |
| depends on UART_0_NRF_UARTE |
| depends on UART_ASYNC_API |
| help |
| When enabled, UARTE is enabled before each TX or RX usage and disabled |
| when not used. Disabling UARTE while in idle allows to achieve lowest |
| power consumption. It is only feasible if receiver is not always on. |
| |
| config UART_0_NRF_HW_ASYNC_TIMER |
| int "Timer instance" |
| depends on UART_0_NRF_HW_ASYNC |
| |
| config UART_0_GPIO_MANAGEMENT |
| bool "Enable GPIO management on port 0" |
| depends on PM_DEVICE |
| default y |
| help |
| If enabled, the driver will configure the GPIOs used by the uart to |
| their default configuration when device is powered down. The GPIOs |
| will be configured back to correct state when UART is powered up. |
| |
| endif # UART_0_NRF_UART || UART_0_NRF_UARTE |
| |
| # ----------------- port 1 ----------------- |
| config UART_1_NRF_UARTE |
| def_bool $(dt_nodelabel_has_compat,uart1,$(DT_COMPAT_NORDIC_NRF_UARTE)) |
| select NRF_UARTE_PERIPHERAL |
| help |
| Enable nRF UART with EasyDMA on port 1. |
| |
| if UART_1_NRF_UARTE |
| |
| config UART_1_INTERRUPT_DRIVEN |
| bool "Enable interrupt support on port 1" |
| depends on UART_INTERRUPT_DRIVEN |
| default y |
| help |
| This option enables UART interrupt support on port 1. |
| |
| config UART_1_ASYNC |
| bool "Enable Asynchronous API support on port 1" |
| depends on UART_ASYNC_API && !UART_1_INTERRUPT_DRIVEN |
| default y |
| help |
| This option enables UART Asynchronous API support on port 1. |
| |
| config UART_1_ENHANCED_POLL_OUT |
| bool "Efficient poll out on port 1" |
| default y |
| help |
| When enabled, polling out does not trigger interrupt which stops TX. |
| Feature uses a PPI channel. |
| |
| config UART_1_NRF_PARITY_BIT |
| bool "Enable parity bit" |
| help |
| Enable parity bit. |
| |
| config UART_1_NRF_TX_BUFFER_SIZE |
| int "Size of RAM buffer" |
| depends on UART_INTERRUPT_DRIVEN |
| range 1 65535 |
| default 32 |
| help |
| Size of the transmit buffer for API function: fifo_fill. |
| This value is limited by range of TXD.MAXCNT register for |
| particular SoC. |
| |
| config UART_1_NRF_HW_ASYNC |
| bool "Use hardware RX byte counting" |
| depends on UART_1_ASYNC |
| help |
| If default driver uses interrupts to count incoming bytes, it is possible |
| that with higher speeds and/or high cpu load some data can be lost. |
| It is recommended to use hardware byte counting in such scenarios. |
| Hardware RX byte counting requires timer instance and one PPI channel |
| |
| config UART_1_NRF_ASYNC_LOW_POWER |
| bool "Low power mode" |
| depends on UART_ASYNC_API |
| help |
| When enabled, UARTE is enabled before each TX or RX usage and disabled |
| when not used. Disabling UARTE while in idle allows to achieve lowest |
| power consumption. It is only feasible if receiver is not always on. |
| |
| config UART_1_NRF_HW_ASYNC_TIMER |
| int "Timer instance" |
| depends on UART_1_NRF_HW_ASYNC |
| |
| config UART_1_GPIO_MANAGEMENT |
| bool "Enable GPIO management on port 1" |
| depends on PM_DEVICE |
| default y |
| help |
| If enabled, the driver will configure the GPIOs used by the uart to |
| their default configuration when device is powered down. The GPIOs |
| will be configured back to correct state when UART is powered up. |
| |
| endif # UART_1_NRF_UARTE |
| |
| # ----------------- port 2 ----------------- |
| config UART_2_NRF_UARTE |
| def_bool $(dt_nodelabel_has_compat,uart2,$(DT_COMPAT_NORDIC_NRF_UARTE)) |
| select NRF_UARTE_PERIPHERAL |
| help |
| Enable nRF UART with EasyDMA on port 2. |
| |
| if UART_2_NRF_UARTE |
| |
| config UART_2_INTERRUPT_DRIVEN |
| bool "Enable interrupt support on port 2" |
| depends on UART_INTERRUPT_DRIVEN |
| default y |
| help |
| This option enables UART interrupt support on port 2. |
| |
| config UART_2_ASYNC |
| bool "Enable Asynchronous API support on port 2" |
| depends on UART_ASYNC_API && !UART_2_INTERRUPT_DRIVEN |
| default y |
| help |
| This option enables UART Asynchronous API support on port 2. |
| |
| config UART_2_ENHANCED_POLL_OUT |
| bool "Efficient poll out on port 2" |
| default y |
| help |
| When enabled, polling out does not trigger interrupt which stops TX. |
| Feature uses a PPI channel. |
| |
| config UART_2_NRF_PARITY_BIT |
| bool "Enable parity bit" |
| help |
| Enable parity bit. |
| |
| config UART_2_NRF_TX_BUFFER_SIZE |
| int "Size of RAM buffer" |
| range 1 65535 |
| default 32 |
| help |
| Size of the transmit buffer for API function: fifo_fill. |
| This value is limited by range of TXD.MAXCNT register for |
| particular SoC. |
| |
| config UART_2_NRF_HW_ASYNC |
| bool "Use hardware RX byte counting" |
| depends on UART_2_ASYNC |
| help |
| If default driver uses interrupts to count incoming bytes, it is possible |
| that with higher speeds and/or high cpu load some data can be lost. |
| It is recommended to use hardware byte counting in such scenarios. |
| Hardware RX byte counting requires timer instance and one PPI channel |
| |
| config UART_2_NRF_ASYNC_LOW_POWER |
| bool "Low power mode" |
| depends on UART_ASYNC_API |
| help |
| When enabled, UARTE is enabled before each TX or RX usage and disabled |
| when not used. Disabling UARTE while in idle allows to achieve lowest |
| power consumption. It is only feasible if receiver is not always on. |
| |
| config UART_2_NRF_HW_ASYNC_TIMER |
| int "Timer instance" |
| depends on UART_2_NRF_HW_ASYNC |
| |
| config UART_2_GPIO_MANAGEMENT |
| bool "Enable GPIO management on port 2" |
| depends on PM_DEVICE |
| default y |
| help |
| If enabled, the driver will configure the GPIOs used by the uart to |
| their default configuration when device is powered down. The GPIOs |
| will be configured back to correct state when UART is powered up. |
| |
| endif # UART_2_NRF_UARTE |
| |
| # ----------------- port 3 ----------------- |
| config UART_3_NRF_UARTE |
| def_bool $(dt_nodelabel_has_compat,uart3,$(DT_COMPAT_NORDIC_NRF_UARTE)) |
| select NRF_UARTE_PERIPHERAL |
| help |
| Enable nRF UART with EasyDMA on port 3. |
| |
| if UART_3_NRF_UARTE |
| |
| config UART_3_INTERRUPT_DRIVEN |
| bool "Enable interrupt support on port 3" |
| depends on UART_INTERRUPT_DRIVEN |
| default y |
| help |
| This option enables UART interrupt support on port 3. |
| |
| config UART_3_ASYNC |
| bool "Enable Asynchronous API support on port 3" |
| depends on UART_ASYNC_API && !UART_3_INTERRUPT_DRIVEN |
| default y |
| help |
| This option enables UART Asynchronous API support on port 3. |
| |
| config UART_3_ENHANCED_POLL_OUT |
| bool "Efficient poll out on port 3" |
| default y |
| help |
| When enabled, polling out does not trigger interrupt which stops TX. |
| Feature uses a PPI channel. |
| |
| config UART_3_NRF_PARITY_BIT |
| bool "Enable parity bit" |
| help |
| Enable parity bit. |
| |
| config UART_3_NRF_TX_BUFFER_SIZE |
| int "Size of RAM buffer" |
| range 1 65535 |
| default 32 |
| help |
| Size of the transmit buffer for API function: fifo_fill. |
| This value is limited by range of TXD.MAXCNT register for |
| particular SoC. |
| |
| config UART_3_NRF_HW_ASYNC |
| bool "Use hardware RX byte counting" |
| depends on UART_3_ASYNC |
| help |
| If default driver uses interrupts to count incoming bytes, it is possible |
| that with higher speeds and/or high cpu load some data can be lost. |
| It is recommended to use hardware byte counting in such scenarios. |
| Hardware RX byte counting requires timer instance and one PPI channel |
| |
| config UART_3_NRF_ASYNC_LOW_POWER |
| bool "Low power mode" |
| depends on UART_ASYNC_API |
| help |
| When enabled, UARTE is enabled before each TX or RX usage and disabled |
| when not used. Disabling UARTE while in idle allows to achieve lowest |
| power consumption. It is only feasible if receiver is not always on. |
| |
| config UART_3_NRF_HW_ASYNC_TIMER |
| int "Timer instance" |
| depends on UART_3_NRF_HW_ASYNC |
| |
| config UART_3_GPIO_MANAGEMENT |
| bool "Enable GPIO management on port 3" |
| depends on PM_DEVICE |
| default y |
| help |
| If enabled, the driver will configure the GPIOs used by the uart to |
| their default configuration when device is powered down. The GPIOs |
| will be configured back to correct state when UART is powered up. |
| |
| endif # UART_3_NRF_UARTE |
| |
| |
| config NRFX_TIMER0 |
| default y |
| depends on UART_0_NRF_HW_ASYNC_TIMER = 0 || UART_1_NRF_HW_ASYNC_TIMER = 0 || \ |
| UART_3_NRF_HW_ASYNC_TIMER = 0 || UART_2_NRF_HW_ASYNC_TIMER = 0 |
| |
| config NRFX_TIMER1 |
| default y |
| depends on UART_0_NRF_HW_ASYNC_TIMER = 1 || UART_1_NRF_HW_ASYNC_TIMER = 1 || \ |
| UART_3_NRF_HW_ASYNC_TIMER = 1 || UART_2_NRF_HW_ASYNC_TIMER = 1 |
| |
| config NRFX_TIMER2 |
| default y |
| depends on UART_0_NRF_HW_ASYNC_TIMER = 2 || UART_1_NRF_HW_ASYNC_TIMER = 2 || \ |
| UART_3_NRF_HW_ASYNC_TIMER = 2 || UART_2_NRF_HW_ASYNC_TIMER = 2 |
| |
| config NRFX_TIMER3 |
| default y |
| depends on UART_0_NRF_HW_ASYNC_TIMER = 3 || UART_1_NRF_HW_ASYNC_TIMER = 3 || \ |
| UART_3_NRF_HW_ASYNC_TIMER = 3 || UART_2_NRF_HW_ASYNC_TIMER = 3 |
| |
| config NRFX_TIMER4 |
| default y |
| depends on UART_0_NRF_HW_ASYNC_TIMER = 4 || UART_1_NRF_HW_ASYNC_TIMER = 4 || \ |
| UART_3_NRF_HW_ASYNC_TIMER = 4 || UART_2_NRF_HW_ASYNC_TIMER = 4 |
| |
| |
| if UART_0_NRF_HW_ASYNC || UART_1_NRF_HW_ASYNC || UART_2_NRF_HW_ASYNC || UART_3_NRF_HW_ASYNC |
| |
| config NRFX_TIMER |
| default y |
| |
| config NRFX_PPI |
| depends on HAS_HW_NRF_PPI |
| default y |
| |
| config NRFX_DPPI |
| depends on HAS_HW_NRF_DPPIC |
| default y |
| |
| config UARTE_NRF_HW_ASYNC |
| bool |
| default y |
| |
| endif |
| |
| if UART_0_ENHANCED_POLL_OUT || UART_1_ENHANCED_POLL_OUT || \ |
| UART_2_ENHANCED_POLL_OUT || UART_3_ENHANCED_POLL_OUT |
| |
| config UART_ENHANCED_POLL_OUT |
| bool |
| default y |
| select NRFX_PPI if HAS_HW_NRF_PPI |
| select NRFX_DPPI if HAS_HW_NRF_DPPIC |
| |
| endif |
| |
| config NRF_UART_PERIPHERAL |
| bool |
| |
| config NRF_UARTE_PERIPHERAL |
| bool |
| |
| endif # UART_NRFX |