arch/arm/src/stm32f7/stm32_serial.c: Add Tx U[S]ART DMA.
This commit is contained in:
parent
d3e0d5ee72
commit
baeaf54c6c
@ -1785,6 +1785,13 @@ config USART1_RXDMA
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may eliminate Rx overrun errors
|
||||
|
||||
config USART1_TXDMA
|
||||
bool "USART1 Tx DMA"
|
||||
default n
|
||||
depends on STM32F7_USART1 && STM32F7_DMA2
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may reduce CPU Load
|
||||
|
||||
config USART2_RS485
|
||||
bool "RS-485 on USART2"
|
||||
default n
|
||||
@ -1810,6 +1817,13 @@ config USART2_RXDMA
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may eliminate Rx overrun errors
|
||||
|
||||
config USART2_TXDMA
|
||||
bool "USART2 Tx DMA"
|
||||
default n
|
||||
depends on STM32F7_USART2 && STM32F7_DMA1
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may reduce CPU Load
|
||||
|
||||
config USART3_RS485
|
||||
bool "RS-485 on USART3"
|
||||
default n
|
||||
@ -1835,6 +1849,13 @@ config USART3_RXDMA
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may eliminate Rx overrun errors
|
||||
|
||||
config USART3_TXDMA
|
||||
bool "USART3 Tx DMA"
|
||||
default n
|
||||
depends on STM32F7_USART3 && STM32F7_DMA1
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may reduce CPU Load
|
||||
|
||||
config UART4_RS485
|
||||
bool "RS-485 on UART4"
|
||||
default n
|
||||
@ -1860,6 +1881,13 @@ config UART4_RXDMA
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may eliminate Rx overrun errors
|
||||
|
||||
config UART4_TXDMA
|
||||
bool "UART4 Tx DMA"
|
||||
default n
|
||||
depends on STM32F7_UART4 && STM32F7_DMA1
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may reduce CPU Load
|
||||
|
||||
config UART5_RS485
|
||||
bool "RS-485 on UART5"
|
||||
default n
|
||||
@ -1885,6 +1913,13 @@ config UART5_RXDMA
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may eliminate Rx overrun errors
|
||||
|
||||
config UART5_TXDMA
|
||||
bool "UART5 Tx DMA"
|
||||
default n
|
||||
depends on STM32F7_UART5 && STM32F7_DMA1
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may reduce CPU Load
|
||||
|
||||
config USART6_RS485
|
||||
bool "RS-485 on USART6"
|
||||
default n
|
||||
@ -1910,6 +1945,13 @@ config USART6_RXDMA
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may eliminate Rx overrun errors
|
||||
|
||||
config USART6_TXDMA
|
||||
bool "USART6 Tx DMA"
|
||||
default n
|
||||
depends on STM32F7_USART6 && STM32F7_DMA2
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may reduce CPU Load
|
||||
|
||||
config UART7_RS485
|
||||
bool "RS-485 on UART7"
|
||||
default n
|
||||
@ -1931,10 +1973,17 @@ config UART7_RS485_DIR_POLARITY
|
||||
config UART7_RXDMA
|
||||
bool "UART7 Rx DMA"
|
||||
default n
|
||||
depends on STM32F7_UART7 && STM32F7_DMA2
|
||||
depends on STM32F7_UART7 && STM32F7_DMA1
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may eliminate Rx overrun errors
|
||||
|
||||
config UART7_TXDMA
|
||||
bool "UART7 Tx DMA"
|
||||
default n
|
||||
depends on STM32F7_UART7 && STM32F7_DMA1
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may reduce CPU Load
|
||||
|
||||
config UART8_RS485
|
||||
bool "RS-485 on UART8"
|
||||
default n
|
||||
@ -1956,10 +2005,17 @@ config UART8_RS485_DIR_POLARITY
|
||||
config UART8_RXDMA
|
||||
bool "UART8 Rx DMA"
|
||||
default n
|
||||
depends on STM32F7_UART8 && STM32F7_DMA2
|
||||
depends on STM32F7_UART8 && STM32F7_DMA1
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may eliminate Rx overrun errors
|
||||
|
||||
config UART8_TXDMA
|
||||
bool "UART8 Tx DMA"
|
||||
default n
|
||||
depends on STM32F7_UART8 && STM32F7_DMA1
|
||||
---help---
|
||||
In high data rate usage, Rx DMA may reduce CPU Load
|
||||
|
||||
config STM32F7_SERIAL_RXDMA_BUFFER_SIZE
|
||||
int "Rx DMA buffer size"
|
||||
default 32
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -187,101 +187,173 @@
|
||||
|
||||
#if !defined(HAVE_UART) || !defined(CONFIG_ARCH_DMA)
|
||||
# undef CONFIG_USART1_RXDMA
|
||||
# undef CONFIG_USART1_TXDMA
|
||||
# undef CONFIG_USART2_RXDMA
|
||||
# undef CONFIG_USART2_TXDMA
|
||||
# undef CONFIG_USART3_RXDMA
|
||||
# undef CONFIG_USART3_TXDMA
|
||||
# undef CONFIG_UART4_RXDMA
|
||||
# undef CONFIG_UART4_TXDMA
|
||||
# undef CONFIG_UART5_RXDMA
|
||||
# undef CONFIG_UART5_TXDMA
|
||||
# undef CONFIG_USART6_RXDMA
|
||||
# undef CONFIG_USART6_TXDMA
|
||||
# undef CONFIG_UART7_RXDMA
|
||||
# undef CONFIG_UART7_TXDMA
|
||||
# undef CONFIG_UART8_RXDMA
|
||||
# undef CONFIG_UART8_TXDMA
|
||||
#endif
|
||||
|
||||
/* Disable the DMA configuration on all unused USARTs */
|
||||
|
||||
#ifndef CONFIG_STM32F7_USART1
|
||||
# undef CONFIG_USART1_RXDMA
|
||||
# undef CONFIG_USART1_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32F7_USART2
|
||||
# undef CONFIG_USART2_RXDMA
|
||||
# undef CONFIG_USART2_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32F7_USART3
|
||||
# undef CONFIG_USART3_RXDMA
|
||||
# undef CONFIG_USART3_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32F7_UART4
|
||||
# undef CONFIG_UART4_RXDMA
|
||||
# undef CONFIG_UART4_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32F7_UART5
|
||||
# undef CONFIG_UART5_RXDMA
|
||||
# undef CONFIG_UART5_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32F7_USART6
|
||||
# undef CONFIG_USART6_RXDMA
|
||||
# undef CONFIG_USART6_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32F7_UART7
|
||||
# undef CONFIG_UART7_RXDMA
|
||||
# undef CONFIG_UART7_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32F7_UART8
|
||||
# undef CONFIG_UART8_RXDMA
|
||||
# undef CONFIG_UART8_TXDMA
|
||||
#endif
|
||||
|
||||
/* Is DMA available on any (enabled) USART? */
|
||||
/* Is RX DMA available on any (enabled) USART? */
|
||||
|
||||
#undef SERIAL_HAVE_DMA
|
||||
#undef SERIAL_HAVE_RXDMA
|
||||
#if defined(CONFIG_USART1_RXDMA) || defined(CONFIG_USART2_RXDMA) || \
|
||||
defined(CONFIG_USART3_RXDMA) || defined(CONFIG_UART4_RXDMA) || \
|
||||
defined(CONFIG_UART5_RXDMA) || defined(CONFIG_USART6_RXDMA) || \
|
||||
defined(CONFIG_UART7_RXDMA) || defined(CONFIG_UART8_RXDMA)
|
||||
# define SERIAL_HAVE_DMA 1
|
||||
# define SERIAL_HAVE_RXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is DMA used on the console UART? */
|
||||
/* Is TX DMA available on any (enabled) USART? */
|
||||
|
||||
#undef SERIAL_HAVE_CONSOLE_DMA
|
||||
#undef SERIAL_HAVE_TXDMA
|
||||
#if defined(CONFIG_USART1_TXDMA) || defined(CONFIG_USART2_TXDMA) || \
|
||||
defined(CONFIG_USART3_TXDMA) || defined(CONFIG_UART4_TXDMA) || \
|
||||
defined(CONFIG_UART5_TXDMA) || defined(CONFIG_USART6_TXDMA) || \
|
||||
defined(CONFIG_UART7_TXDMA) || defined(CONFIG_UART8_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is RX DMA used on the console UART? */
|
||||
|
||||
#undef SERIAL_HAVE_CONSOLE_RXDMA
|
||||
#if defined(CONFIG_USART1_SERIAL_CONSOLE) && defined(CONFIG_USART1_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_USART2_SERIAL_CONSOLE) && defined(CONFIG_USART2_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_USART3_SERIAL_CONSOLE) && defined(CONFIG_USART3_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_UART4_SERIAL_CONSOLE) && defined(CONFIG_UART4_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_UART5_SERIAL_CONSOLE) && defined(CONFIG_UART5_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_USART6_SERIAL_CONSOLE) && defined(CONFIG_USART6_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_UART7_SERIAL_CONSOLE) && defined(CONFIG_UART7_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_UART8_SERIAL_CONSOLE) && defined(CONFIG_UART8_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is DMA used on all (enabled) USARTs */
|
||||
/* Is TX DMA used on the console UART? */
|
||||
|
||||
#define SERIAL_HAVE_ONLY_DMA 1
|
||||
#undef SERIAL_HAVE_CONSOLE_TXDMA
|
||||
#if defined(CONFIG_USART1_SERIAL_CONSOLE) && defined(CONFIG_USART1_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_USART2_SERIAL_CONSOLE) && defined(CONFIG_USART2_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_USART3_SERIAL_CONSOLE) && defined(CONFIG_USART3_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_UART4_SERIAL_CONSOLE) && defined(CONFIG_UART4_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_UART5_SERIAL_CONSOLE) && defined(CONFIG_UART5_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_USART6_SERIAL_CONSOLE) && defined(CONFIG_USART6_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_UART7_SERIAL_CONSOLE) && defined(CONFIG_UART7_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_UART8_SERIAL_CONSOLE) && defined(CONFIG_UART8_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is RX DMA used on all (enabled) USARTs */
|
||||
|
||||
#define SERIAL_HAVE_ONLY_RXDMA 1
|
||||
#if defined(CONFIG_STM32F7_USART1) && !defined(CONFIG_USART1_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32F7_USART2) && !defined(CONFIG_USART2_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32F7_USART3) && !defined(CONFIG_USART3_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32F7_UART4) && !defined(CONFIG_UART4_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32F7_UART5) && !defined(CONFIG_UART5_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32F7_USART6) && !defined(CONFIG_USART6_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32F7_UART7) && !defined(CONFIG_UART7_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32F7_UART8) && !defined(CONFIG_UART8_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#endif
|
||||
|
||||
/* Is TX DMA used on all (enabled) USARTs */
|
||||
|
||||
#define SERIAL_HAVE_ONLY_TXDMA 1
|
||||
#if defined(CONFIG_STM32F7_USART1) && !defined(CONFIG_USART1_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32F7_USART2) && !defined(CONFIG_USART2_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32F7_USART3) && !defined(CONFIG_USART3_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32F7_UART4) && !defined(CONFIG_UART4_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32F7_UART5) && !defined(CONFIG_UART5_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32F7_USART6) && !defined(CONFIG_USART6_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32F7_UART7) && !defined(CONFIG_UART7_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32F7_UART8) && !defined(CONFIG_UART8_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#endif
|
||||
|
||||
#undef SERIAL_HAVE_ONLY_DMA
|
||||
#if defined(SERIAL_HAVE_ONLY_RXDMA) && defined(SERIAL_HAVE_ONLY_TXDMA)
|
||||
#define SERIAL_HAVE_ONLY_DMA
|
||||
#endif
|
||||
/* Is RS-485 used? */
|
||||
|
||||
#if defined(CONFIG_USART1_RS485) || defined(CONFIG_USART2_RS485) || \
|
||||
@ -333,7 +405,7 @@ extern "C"
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
#ifdef SERIAL_HAVE_DMA
|
||||
#ifdef SERIAL_HAVE_RXDMA
|
||||
void stm32_serial_dma_poll(void);
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user