[G4] Treat LPUART1 as UART9
This commit is contained in:
parent
0f93dc9c88
commit
fecc1a5ca8
|
@ -68,8 +68,8 @@ typedef struct dmaTimerMapping_s {
|
|||
#define DMA_REQUEST_UART2_TX DMA_REQUEST_USART2_TX
|
||||
#define DMA_REQUEST_UART3_RX DMA_REQUEST_USART3_RX
|
||||
#define DMA_REQUEST_UART3_TX DMA_REQUEST_USART3_TX
|
||||
#define DMA_REQUEST_UART6_RX DMA_REQUEST_LPUART1_RX
|
||||
#define DMA_REQUEST_UART6_TX DMA_REQUEST_LPUART1_TX
|
||||
#define DMA_REQUEST_UART9_RX DMA_REQUEST_LPUART1_RX
|
||||
#define DMA_REQUEST_UART9_TX DMA_REQUEST_LPUART1_TX
|
||||
|
||||
static const dmaPeripheralMapping_t dmaPeripheralMapping[] = {
|
||||
#ifdef USE_SPI
|
||||
|
@ -102,8 +102,8 @@ static const dmaPeripheralMapping_t dmaPeripheralMapping[] = {
|
|||
REQMAP_DIR(UART, 4, RX),
|
||||
REQMAP_DIR(UART, 5, TX),
|
||||
REQMAP_DIR(UART, 5, RX),
|
||||
REQMAP_DIR(UART, 6, TX),
|
||||
REQMAP_DIR(UART, 6, RX),
|
||||
REQMAP_DIR(UART, 9, TX),
|
||||
REQMAP_DIR(UART, 9, RX),
|
||||
#endif
|
||||
|
||||
#ifdef USE_TIMER
|
||||
|
|
|
@ -205,6 +205,18 @@
|
|||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef USE_UART9
|
||||
# if !defined(UART9_RX_PIN)
|
||||
# define UART9_RX_PIN NONE
|
||||
# endif
|
||||
# if !defined(UART9_TX_PIN)
|
||||
# define UART9_TX_PIN NONE
|
||||
# endif
|
||||
# if !defined(INVERTER_PIN_UART9)
|
||||
# define INVERTER_PIN_UART9 NONE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef USE_SOFTSERIAL1
|
||||
# if !defined(SOFTSERIAL1_RX_PIN)
|
||||
# define SOFTSERIAL1_RX_PIN NONE
|
||||
|
@ -254,6 +266,9 @@ static const serialDefaultPin_t serialDefaultPin[] = {
|
|||
#ifdef USE_UART8
|
||||
{ SERIAL_PORT_USART8, IO_TAG(UART8_RX_PIN), IO_TAG(UART8_TX_PIN), IO_TAG(INVERTER_PIN_UART8) },
|
||||
#endif
|
||||
#ifdef USE_UART9
|
||||
{ SERIAL_PORT_LPUART1, IO_TAG(UART9_RX_PIN), IO_TAG(UART9_TX_PIN), IO_TAG(INVERTER_PIN_UART9) },
|
||||
#endif
|
||||
#ifdef USE_SOFTSERIAL1
|
||||
{ SERIAL_PORT_SOFTSERIAL1, IO_TAG(SOFTSERIAL1_RX_PIN), IO_TAG(SOFTSERIAL1_TX_PIN), IO_TAG(NONE) },
|
||||
#endif
|
||||
|
|
|
@ -97,6 +97,10 @@ UART_BUFFERS(7);
|
|||
UART_BUFFERS(8);
|
||||
#endif
|
||||
|
||||
#ifdef USE_UART9
|
||||
UART_BUFFERS(9);
|
||||
#endif
|
||||
|
||||
#undef UART_BUFFERS
|
||||
|
||||
serialPort_t *uartOpen(UARTDevice_e device, serialReceiveCallbackPtr rxCallback, void *rxCallbackData, uint32_t baudRate, portMode_e mode, portOptions_e options)
|
||||
|
@ -370,12 +374,8 @@ UART_IRQHandler(UART, 5, 5) // UART5 Rx/Tx IRQ Handler
|
|||
#endif
|
||||
|
||||
#ifdef USE_UART6
|
||||
#ifdef STM32G4
|
||||
UART_IRQHandler(LPUART, 1, 6) // UART6 (implemented with LPUART1) Rx/Tx IRQ Handler
|
||||
#else
|
||||
UART_IRQHandler(USART, 6, 6) // USART6 Rx/Tx IRQ Handler
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef USE_UART7
|
||||
UART_IRQHandler(UART, 7, 7) // UART7 Rx/Tx IRQ Handler
|
||||
|
@ -385,4 +385,8 @@ UART_IRQHandler(UART, 7, 7) // UART7 Rx/Tx IRQ Handler
|
|||
UART_IRQHandler(UART, 8, 8) // UART8 Rx/Tx IRQ Handler
|
||||
#endif
|
||||
|
||||
#ifdef USE_UART9
|
||||
UART_IRQHandler(LPUART, 1, 9) // UART9 (implemented with LPUART1) Rx/Tx IRQ Handler
|
||||
#endif
|
||||
|
||||
#endif // USE_UART
|
||||
|
|
|
@ -37,7 +37,8 @@ typedef enum {
|
|||
UARTDEV_5 = 4,
|
||||
UARTDEV_6 = 5,
|
||||
UARTDEV_7 = 6,
|
||||
UARTDEV_8 = 7
|
||||
UARTDEV_8 = 7,
|
||||
UARTDEV_9 = 8,
|
||||
} UARTDevice_e;
|
||||
|
||||
typedef struct uartPort_s {
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
#define UART_TX_BUFFER_SIZE 256
|
||||
#endif
|
||||
#elif defined(STM32G4)
|
||||
#define UARTDEV_COUNT_MAX 6
|
||||
#define UARTDEV_COUNT_MAX 9 // UART1~5 + UART9 (Implemented with LPUART1)
|
||||
#define UARTHARDWARE_MAX_PINS 3
|
||||
#ifndef UART_RX_BUFFER_SIZE
|
||||
#define UART_RX_BUFFER_SIZE 128
|
||||
|
@ -130,7 +130,13 @@
|
|||
#define UARTDEV_COUNT_8 0
|
||||
#endif
|
||||
|
||||
#define UARTDEV_COUNT (UARTDEV_COUNT_1 + UARTDEV_COUNT_2 + UARTDEV_COUNT_3 + UARTDEV_COUNT_4 + UARTDEV_COUNT_5 + UARTDEV_COUNT_6 + UARTDEV_COUNT_7 + UARTDEV_COUNT_8)
|
||||
#ifdef USE_UART9
|
||||
#define UARTDEV_COUNT_9 1
|
||||
#else
|
||||
#define UARTDEV_COUNT_9 0
|
||||
#endif
|
||||
|
||||
#define UARTDEV_COUNT (UARTDEV_COUNT_1 + UARTDEV_COUNT_2 + UARTDEV_COUNT_3 + UARTDEV_COUNT_4 + UARTDEV_COUNT_5 + UARTDEV_COUNT_6 + UARTDEV_COUNT_7 + UARTDEV_COUNT_8 + UARTDEV_COUNT_9)
|
||||
|
||||
typedef struct uartPinDef_s {
|
||||
ioTag_t pin;
|
||||
|
@ -252,4 +258,8 @@ UART_BUFFERS_EXTERN(7);
|
|||
UART_BUFFERS_EXTERN(8);
|
||||
#endif
|
||||
|
||||
#ifdef USE_UART9
|
||||
UART_BUFFERS_EXTERN(9);
|
||||
#endif
|
||||
|
||||
#undef UART_BUFFERS_EXTERN
|
||||
|
|
|
@ -67,11 +67,11 @@
|
|||
#ifndef UART5_RX_DMA_CHANNEL
|
||||
#define UART5_RX_DMA_CHANNEL NULL
|
||||
#endif
|
||||
#ifndef UART6_TX_DMA_CHANNEL
|
||||
#define UART6_TX_DMA_CHANNEL NULL
|
||||
#ifndef UART9_TX_DMA_CHANNEL
|
||||
#define UART9_TX_DMA_CHANNEL NULL
|
||||
#endif
|
||||
#ifndef UART6_RX_DMA_CHANNEL
|
||||
#define UART6_RX_DMA_CHANNEL NULL
|
||||
#ifndef UART9_RX_DMA_CHANNEL
|
||||
#define UART9_RX_DMA_CHANNEL NULL
|
||||
#endif
|
||||
|
||||
const uartHardware_t uartHardware[UARTDEV_COUNT] = {
|
||||
|
@ -222,16 +222,16 @@ const uartHardware_t uartHardware[UARTDEV_COUNT] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#ifdef USE_UART6
|
||||
// On G474, UART6 is implemented as LPUART1
|
||||
#ifdef USE_UART9
|
||||
// On G474, UART9 is implemented as LPUART1
|
||||
{
|
||||
.device = UARTDEV_6,
|
||||
.device = UARTDEV_9,
|
||||
.reg = LPUART1,
|
||||
#ifdef USE_DMA
|
||||
.rxDMAChannel = DMA_REQUEST_LPUART1_RX,
|
||||
.rxDMAResource = (dmaResource_t *)UART6_RX_DMA_CHANNEL,
|
||||
.rxDMAResource = (dmaResource_t *)UART9_RX_DMA_CHANNEL,
|
||||
.txDMAChannel = DMA_REQUEST_LPUART1_TX,
|
||||
.txDMAResource = (dmaResource_t *)UART6_TX_DMA_CHANNEL,
|
||||
.txDMAResource = (dmaResource_t *)UART9_TX_DMA_CHANNEL,
|
||||
#endif
|
||||
.rxPins = {
|
||||
{ DEFIO_TAG_E(PA3), GPIO_AF12_LPUART1 },
|
||||
|
@ -247,10 +247,10 @@ const uartHardware_t uartHardware[UARTDEV_COUNT] = {
|
|||
.rxIrq = LPUART1_IRQn,
|
||||
.txPriority = NVIC_PRIO_SERIALUART6_TXDMA,
|
||||
.rxPriority = NVIC_PRIO_SERIALUART6,
|
||||
.txBuffer = uart6TxBuffer,
|
||||
.rxBuffer = uart6RxBuffer,
|
||||
.txBufferSize = sizeof(uart6TxBuffer),
|
||||
.rxBufferSize = sizeof(uart6RxBuffer),
|
||||
.txBuffer = uart9TxBuffer,
|
||||
.rxBuffer = uart9RxBuffer,
|
||||
.txBufferSize = sizeof(uart9TxBuffer),
|
||||
.rxBufferSize = sizeof(uart9RxBuffer),
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
|
|
@ -93,6 +93,9 @@ const serialPortIdentifier_e serialPortIdentifiers[SERIAL_PORT_COUNT] = {
|
|||
#ifdef USE_UART8
|
||||
SERIAL_PORT_USART8,
|
||||
#endif
|
||||
#ifdef USE_UART9
|
||||
SERIAL_PORT_LPUART1,
|
||||
#endif
|
||||
#ifdef USE_SOFTSERIAL1
|
||||
SERIAL_PORT_SOFTSERIAL1,
|
||||
#endif
|
||||
|
@ -391,6 +394,9 @@ serialPort_t *openSerialPort(
|
|||
#ifdef USE_UART8
|
||||
case SERIAL_PORT_USART8:
|
||||
#endif
|
||||
#ifdef USE_UART9
|
||||
case SERIAL_PORT_LPUART1:
|
||||
#endif
|
||||
#if defined(SIMULATOR_BUILD)
|
||||
// emulate serial ports over TCP
|
||||
serialPort = serTcpOpen(SERIAL_PORT_IDENTIFIER_TO_UARTDEV(identifier), rxCallback, rxCallbackData, baudRate, mode, options);
|
||||
|
|
|
@ -87,6 +87,7 @@ typedef enum {
|
|||
SERIAL_PORT_USART6,
|
||||
SERIAL_PORT_USART7,
|
||||
SERIAL_PORT_USART8,
|
||||
SERIAL_PORT_LPUART1,
|
||||
SERIAL_PORT_USB_VCP = 20,
|
||||
SERIAL_PORT_SOFTSERIAL1 = 30,
|
||||
SERIAL_PORT_SOFTSERIAL2,
|
||||
|
@ -95,7 +96,7 @@ typedef enum {
|
|||
|
||||
extern const serialPortIdentifier_e serialPortIdentifiers[SERIAL_PORT_COUNT];
|
||||
|
||||
#define SERIAL_PORT_IDENTIFIER_TO_INDEX(x) (((x) <= SERIAL_PORT_USART8) ? (x) : (RESOURCE_SOFT_OFFSET + ((x) - SERIAL_PORT_SOFTSERIAL1)))
|
||||
#define SERIAL_PORT_IDENTIFIER_TO_INDEX(x) (((x) < RESOURCE_SOFT_OFFSET) ? (x) : (RESOURCE_SOFT_OFFSET + ((x) - SERIAL_PORT_SOFTSERIAL1)))
|
||||
|
||||
#define SERIAL_PORT_IDENTIFIER_TO_UARTDEV(x) ((x) - SERIAL_PORT_USART1 + UARTDEV_1)
|
||||
|
||||
|
|
|
@ -68,6 +68,9 @@ static uartDmaopt_t uartDmaopt[] = {
|
|||
#ifdef USE_UART8
|
||||
{ UARTDEV_8, UART8_TX_DMA_OPT, UART8_RX_DMA_OPT },
|
||||
#endif
|
||||
#ifdef USE_UART9
|
||||
{ UARTDEV_9, UART9_TX_DMA_OPT, UART9_RX_DMA_OPT },
|
||||
#endif
|
||||
};
|
||||
|
||||
void pgResetFn_serialUartConfig(serialUartConfig_t *config)
|
||||
|
|
|
@ -638,6 +638,15 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef USE_UART9
|
||||
#ifndef UART9_TX_DMA_OPT
|
||||
#define UART9_TX_DMA_OPT (DMA_OPT_UNUSED)
|
||||
#endif
|
||||
#ifndef UART9_RX_DMA_OPT
|
||||
#define UART9_RX_DMA_OPT (DMA_OPT_UNUSED)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef RTC6705_CS_PIN
|
||||
#define RTC6705_CS_PIN NONE
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue