403 lines
11 KiB
Plaintext
403 lines
11 KiB
Plaintext
# 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
|