stm32g0: add support for USART3 and USART4
This commit is contained in:
parent
76ccbc9a73
commit
5c1c18af03
3 changed files with 166 additions and 12 deletions
|
@ -803,6 +803,8 @@ config STM32F0L0G0_STM32F0
|
|||
config STM32F0L0G0_STM32G0
|
||||
bool
|
||||
default n
|
||||
select STM32F0L0G0_HAVE_USART3
|
||||
select STM32F0L0G0_HAVE_USART4
|
||||
select STM32F0L0G0_HAVE_DMAMUX
|
||||
select STM32F0L0G0_HAVE_IP_USART_V2
|
||||
select STM32F0L0G0_HAVE_IP_EXTI_V2
|
||||
|
|
|
@ -96,7 +96,41 @@
|
|||
|
||||
/* TODO: RTC */
|
||||
|
||||
/* TODO: SPI */
|
||||
/* SPI */
|
||||
|
||||
#define GPIO_SPI1_SCK_1 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN1)
|
||||
#define GPIO_SPI1_SCK_2 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN5)
|
||||
#define GPIO_SPI1_SCK_3 (GPIO_ALT | GPIO_AF0 | GPIO_PORTB | GPIO_PIN3)
|
||||
#define GPIO_SPI1_SCK_4 (GPIO_ALT | GPIO_AF1 | GPIO_PORTD | GPIO_PIN8)
|
||||
#define GPIO_SPI1_MISO_1 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN6)
|
||||
#define GPIO_SPI1_MISO_2 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN11)
|
||||
#define GPIO_SPI1_MISO_3 (GPIO_ALT | GPIO_AF0 | GPIO_PORTB | GPIO_PIN4)
|
||||
#define GPIO_SPI1_MISO_4 (GPIO_ALT | GPIO_AF1 | GPIO_PORTD | GPIO_PIN5)
|
||||
#define GPIO_SPI1_MOSI_1 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN2)
|
||||
#define GPIO_SPI1_MOSI_2 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN7)
|
||||
#define GPIO_SPI1_MOSI_3 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN12)
|
||||
#define GPIO_SPI1_MOSI_4 (GPIO_ALT | GPIO_AF0 | GPIO_PORTB | GPIO_PIN5)
|
||||
#define GPIO_SPI1_MOSI_5 (GPIO_ALT | GPIO_AF1 | GPIO_PORTD | GPIO_PIN6)
|
||||
|
||||
#define GPIO_SPI2_SCK_1 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN0)
|
||||
#define GPIO_SPI2_SCK_2 (GPIO_ALT | GPIO_AF0 | GPIO_PORTB | GPIO_PIN13)
|
||||
#define GPIO_SPI2_SCK_3 (GPIO_ALT | GPIO_AF1 | GPIO_PORTB | GPIO_PIN13)
|
||||
#define GPIO_SPI2_SCK_4 (GPIO_ALT | GPIO_AF1 | GPIO_PORTD | GPIO_PIN1)
|
||||
#define GPIO_SPI2_SCK_5 (GPIO_ALT | GPIO_AF5 | GPIO_PORTB | GPIO_PIN10)
|
||||
#define GPIO_SPI2_MISO_1 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN3)
|
||||
#define GPIO_SPI2_MISO_2 (GPIO_ALT | GPIO_AF4 | GPIO_PORTA | GPIO_PIN9)
|
||||
#define GPIO_SPI2_MISO_3 (GPIO_ALT | GPIO_AF1 | GPIO_PORTB | GPIO_PIN2)
|
||||
#define GPIO_SPI2_MISO_4 (GPIO_ALT | GPIO_AF4 | GPIO_PORTB | GPIO_PIN6)
|
||||
#define GPIO_SPI2_MISO_5 (GPIO_ALT | GPIO_AF0 | GPIO_PORTB | GPIO_PIN14)
|
||||
#define GPIO_SPI2_MISO_6 (GPIO_ALT | GPIO_AF1 | GPIO_PORTC | GPIO_PIN2)
|
||||
#define GPIO_SPI2_MISO_7 (GPIO_ALT | GPIO_AF1 | GPIO_PORTD | GPIO_PIN3)
|
||||
#define GPIO_SPI2_MOSI_1 (GPIO_ALT | GPIO_AF1 | GPIO_PORTA | GPIO_PIN4)
|
||||
#define GPIO_SPI2_MOSI_2 (GPIO_ALT | GPIO_AF0 | GPIO_PORTA | GPIO_PIN10)
|
||||
#define GPIO_SPI2_MOSI_3 (GPIO_ALT | GPIO_AF1 | GPIO_PORTB | GPIO_PIN7)
|
||||
#define GPIO_SPI2_MOSI_4 (GPIO_ALT | GPIO_AF1 | GPIO_PORTB | GPIO_PIN11)
|
||||
#define GPIO_SPI2_MOSI_5 (GPIO_ALT | GPIO_AF0 | GPIO_PORTB | GPIO_PIN15)
|
||||
#define GPIO_SPI2_MOSI_6 (GPIO_ALT | GPIO_AF1 | GPIO_PORTC | GPIO_PIN3)
|
||||
#define GPIO_SPI2_MOSI_7 (GPIO_ALT | GPIO_AF1 | GPIO_PORTD | GPIO_PIN4)
|
||||
|
||||
/* Timers */
|
||||
|
||||
|
@ -192,9 +226,30 @@
|
|||
#define GPIO_USART2_TX_2 (GPIO_ALT | GPIO_PULLUP | GPIO_AF1 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTA | GPIO_PIN14)
|
||||
#define GPIO_USART2_TX_3 (GPIO_ALT | GPIO_PULLUP | GPIO_AF0 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTD | GPIO_PIN6)
|
||||
|
||||
/* TODO: USART3 */
|
||||
#define GPIO_USART3_CTS_1 (GPIO_ALT | GPIO_AF4 | GPIO_PORTA | GPIO_PIN6)
|
||||
#define GPIO_USART3_CTS_2 (GPIO_ALT | GPIO_AF4 | GPIO_PORTB | GPIO_PIN13)
|
||||
#define GPIO_USART3_RX_1 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTA | GPIO_PIN3)
|
||||
#define GPIO_USART3_RX_2 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTB | GPIO_PIN0)
|
||||
#define GPIO_USART3_RX_3 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTB | GPIO_PIN9)
|
||||
#define GPIO_USART3_RX_4 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTB | GPIO_PIN11)
|
||||
#define GPIO_USART3_RX_5 (GPIO_ALT | GPIO_PULLUP | GPIO_AF0 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTC | GPIO_PIN5)
|
||||
#define GPIO_USART3_RX_6 (GPIO_ALT | GPIO_PULLUP | GPIO_AF0 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTC | GPIO_PIN11)
|
||||
#define GPIO_USART3_TX_1 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTA | GPIO_PIN5)
|
||||
#define GPIO_USART3_TX_2 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTB | GPIO_PIN2)
|
||||
#define GPIO_USART3_TX_3 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTB | GPIO_PIN8)
|
||||
#define GPIO_USART3_TX_4 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTB | GPIO_PIN10)
|
||||
#define GPIO_USART3_TX_5 (GPIO_ALT | GPIO_PULLUP | GPIO_AF0 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTC | GPIO_PIN4)
|
||||
#define GPIO_USART3_TX_6 (GPIO_ALT | GPIO_PULLUP | GPIO_AF0 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTC | GPIO_PIN10)
|
||||
#define GPIO_USART3_RTS_1 (GPIO_ALT | GPIO_AF5 | GPIO_PORTA | GPIO_PIN15)
|
||||
#define GPIO_USART3_RTS_2 (GPIO_ALT | GPIO_AF4 | GPIO_PORTB | GPIO_PIN1)
|
||||
#define GPIO_USART3_RTS_3 (GPIO_ALT | GPIO_AF4 | GPIO_PORTB | GPIO_PIN14)
|
||||
|
||||
/* TODO: USART4 */
|
||||
#define GPIO_USART4_CTS_1 (GPIO_ALT | GPIO_AF4 | GPIO_PORTB | GPIO_PIN7)
|
||||
#define GPIO_USART4_RX_1 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTA | GPIO_PIN1)
|
||||
#define GPIO_USART4_RX_2 (GPIO_ALT | GPIO_PULLUP | GPIO_AF1 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTC | GPIO_PIN11)
|
||||
#define GPIO_USART4_TX_1 (GPIO_ALT | GPIO_PULLUP | GPIO_AF4 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTA | GPIO_PIN0)
|
||||
#define GPIO_USART4_TX_2 (GPIO_ALT | GPIO_PULLUP | GPIO_AF1 | GPIO_SPEED_HIGH | GPIO_PUSHPULL | GPIO_PORTC | GPIO_PIN10)
|
||||
#define GPIO_USART4_RTS_1 (GPIO_ALT | GPIO_AF4 | GPIO_PORTA | GPIO_PIN15)
|
||||
|
||||
/* TODO: LPTIM */
|
||||
|
||||
|
|
|
@ -52,13 +52,6 @@
|
|||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#ifdef CONFIG_STM32F0L0G0_USART3
|
||||
# error not supported yet
|
||||
#endif
|
||||
#ifdef CONFIG_STM32F0L0G0_USART4
|
||||
# error not supported yet
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
@ -349,9 +342,113 @@ static struct up_dev_s g_usart2priv =
|
|||
};
|
||||
#endif
|
||||
|
||||
/* TODO: USART3 */
|
||||
/* This describes the state of the STM32 USART3 port. */
|
||||
|
||||
/* TODO: USART4 */
|
||||
#ifdef CONFIG_STM32F0L0G0_USART3
|
||||
static struct up_dev_s g_usart3priv =
|
||||
{
|
||||
.dev =
|
||||
{
|
||||
#if CONSOLE_USART == 3
|
||||
.isconsole = true,
|
||||
#endif
|
||||
.recv =
|
||||
{
|
||||
.size = CONFIG_USART3_RXBUFSIZE,
|
||||
.buffer = g_usart3rxbuffer,
|
||||
},
|
||||
.xmit =
|
||||
{
|
||||
.size = CONFIG_USART3_TXBUFSIZE,
|
||||
.buffer = g_usart3txbuffer,
|
||||
},
|
||||
.ops = &g_uart_ops,
|
||||
.priv = &g_usart3priv,
|
||||
},
|
||||
|
||||
.irq = STM32_IRQ_USART3,
|
||||
.rxftcfg = 0, /* No FIFO */
|
||||
.parity = CONFIG_USART3_PARITY,
|
||||
.bits = CONFIG_USART3_BITS,
|
||||
.stopbits2 = CONFIG_USART3_2STOP,
|
||||
.baud = CONFIG_USART3_BAUD,
|
||||
.apbclock = STM32_PCLK1_FREQUENCY,
|
||||
.usartbase = STM32_USART3_BASE,
|
||||
.tx_gpio = GPIO_USART3_TX,
|
||||
.rx_gpio = GPIO_USART3_RX,
|
||||
#if defined(CONFIG_SERIAL_OFLOWCONTROL) && defined(CONFIG_USART3_OFLOWCONTROL)
|
||||
.oflow = true,
|
||||
.cts_gpio = GPIO_USART3_CTS,
|
||||
#endif
|
||||
#if defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_USART3_IFLOWCONTROL)
|
||||
.iflow = true,
|
||||
.rts_gpio = GPIO_USART3_RTS,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USART3_RS485
|
||||
.rs485_dir_gpio = GPIO_USART3_RS485_DIR,
|
||||
# if (CONFIG_USART3_RS485_DIR_POLARITY == 0)
|
||||
.rs485_dir_polarity = false,
|
||||
# else
|
||||
.rs485_dir_polarity = true,
|
||||
# endif
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
/* This describes the state of the STM32 USART4 port. */
|
||||
|
||||
#ifdef CONFIG_STM32F0L0G0_USART4
|
||||
static struct up_dev_s g_usart4priv =
|
||||
{
|
||||
.dev =
|
||||
{
|
||||
#if CONSOLE_USART == 4
|
||||
.isconsole = true,
|
||||
#endif
|
||||
.recv =
|
||||
{
|
||||
.size = CONFIG_USART4_RXBUFSIZE,
|
||||
.buffer = g_usart4rxbuffer,
|
||||
},
|
||||
.xmit =
|
||||
{
|
||||
.size = CONFIG_USART4_TXBUFSIZE,
|
||||
.buffer = g_usart4txbuffer,
|
||||
},
|
||||
.ops = &g_uart_ops,
|
||||
.priv = &g_usart4priv,
|
||||
},
|
||||
|
||||
.irq = STM32_IRQ_USART4,
|
||||
.rxftcfg = 0, /* No FIFO */
|
||||
.parity = CONFIG_USART4_PARITY,
|
||||
.bits = CONFIG_USART4_BITS,
|
||||
.stopbits2 = CONFIG_USART4_2STOP,
|
||||
.baud = CONFIG_USART4_BAUD,
|
||||
.apbclock = STM32_PCLK1_FREQUENCY,
|
||||
.usartbase = STM32_USART4_BASE,
|
||||
.tx_gpio = GPIO_USART4_TX,
|
||||
.rx_gpio = GPIO_USART4_RX,
|
||||
#if defined(CONFIG_SERIAL_OFLOWCONTROL) && defined(CONFIG_USART4_OFLOWCONTROL)
|
||||
.oflow = true,
|
||||
.cts_gpio = GPIO_USART4_CTS,
|
||||
#endif
|
||||
#if defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_USART4_IFLOWCONTROL)
|
||||
.iflow = true,
|
||||
.rts_gpio = GPIO_USART4_RTS,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USART4_RS485
|
||||
.rs485_dir_gpio = GPIO_USART4_RS485_DIR,
|
||||
# if (CONFIG_USART4_RS485_DIR_POLARITY == 0)
|
||||
.rs485_dir_polarity = false,
|
||||
# else
|
||||
.rs485_dir_polarity = true,
|
||||
# endif
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
/* This table lets us iterate over the configured USARTs */
|
||||
|
||||
|
|
Loading…
Reference in a new issue