diff --git a/src/main/drivers/serial.h b/src/main/drivers/serial.h index 7187313144..a6d6836ab2 100644 --- a/src/main/drivers/serial.h +++ b/src/main/drivers/serial.h @@ -28,6 +28,7 @@ typedef enum portMode_t { MODE_RXTX = MODE_RX | MODE_TX, MODE_SBUS = 1 << 2, MODE_BIDIR = 1 << 3, + MODE_STOPBITS2 = 1 << 4, } portMode_t; typedef void (*serialReceiveCallbackPtr)(uint16_t data); // used by serial drivers to return frames to app diff --git a/src/main/drivers/serial_uart.c b/src/main/drivers/serial_uart.c index 0057b7ba92..651a11ad44 100644 --- a/src/main/drivers/serial_uart.c +++ b/src/main/drivers/serial_uart.c @@ -79,7 +79,11 @@ static void uartReconfigure(uartPort_t *uartPort) USART_InitStructure.USART_StopBits = USART_StopBits_2; USART_InitStructure.USART_Parity = USART_Parity_Even; } else { - USART_InitStructure.USART_StopBits = USART_StopBits_1; + if (uartPort->port.mode & MODE_STOPBITS2) + USART_InitStructure.USART_StopBits = USART_StopBits_2; + else + USART_InitStructure.USART_StopBits = USART_StopBits_1; + USART_InitStructure.USART_Parity = USART_Parity_No; } USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; diff --git a/src/main/io/serial.c b/src/main/io/serial.c index 562c31169c..4f0ab6eea7 100644 --- a/src/main/io/serial.c +++ b/src/main/io/serial.c @@ -68,7 +68,7 @@ serialPortIdentifier_e serialPortIdentifiers[SERIAL_PORT_COUNT] = { #endif }; -uint32_t baudRates[] = {0, 9600, 19200, 38400, 57600, 115200}; // see baudRate_e +uint32_t baudRates[] = {0, 9600, 19200, 38400, 57600, 115200, 230400, 250000}; // see baudRate_e #define BAUD_RATE_COUNT (sizeof(baudRates) / sizeof(baudRates[0])) diff --git a/src/main/io/serial.h b/src/main/io/serial.h index 188e16e651..b9e6f1cef3 100644 --- a/src/main/io/serial.h +++ b/src/main/io/serial.h @@ -41,7 +41,9 @@ typedef enum { BAUD_19200, BAUD_38400, BAUD_57600, - BAUD_115200 + BAUD_115200, + BAUD_230400, + BAUD_250000, } baudRate_e; extern uint32_t baudRates[];