diff --git a/radio/src/targets/horus/telemetry_driver.cpp b/radio/src/targets/horus/telemetry_driver.cpp index 1beadee7b..baf41346f 100644 --- a/radio/src/targets/horus/telemetry_driver.cpp +++ b/radio/src/targets/horus/telemetry_driver.cpp @@ -65,12 +65,14 @@ void telemetryPortInit(uint32_t baudrate, uint8_t mode) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz; + GPIO_InitStructure.GPIO_Speed = baudrate <= 400000 ? GPIO_Speed_2MHz : GPIO_Speed_25MHz; GPIO_Init(TELEMETRY_GPIO, &GPIO_InitStructure); telemetryInitDirPin(); - USART_OverSampling8Cmd(TELEMETRY_USART, ENABLE); + USART_DeInit(TELEMETRY_USART); + + USART_OverSampling8Cmd(TELEMETRY_USART, baudrate <= 400000 ? DISABLE : ENABLE); USART_InitStructure.USART_BaudRate = baudrate; if (mode & TELEMETRY_SERIAL_8E2) { diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index feb8e57bf..c888aa79a 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -57,14 +57,14 @@ void telemetryPortInit(uint32_t baudrate, uint8_t mode) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz; + GPIO_InitStructure.GPIO_Speed = baudrate <= 400000 ? GPIO_Speed_2MHz : GPIO_Speed_25MHz; GPIO_Init(TELEMETRY_GPIO, &GPIO_InitStructure); telemetryInitDirPin(); USART_DeInit(TELEMETRY_USART); - USART_OverSampling8Cmd(TELEMETRY_USART, ENABLE); + USART_OverSampling8Cmd(TELEMETRY_USART, baudrate <= 400000 ? DISABLE : ENABLE); USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = baudrate;