From 1c84b6d0e867e53dad008c435ca4e4f9ccf0a659 Mon Sep 17 00:00:00 2001 From: Paul Kendall Date: Mon, 13 Sep 2021 16:27:16 +1200 Subject: [PATCH] Enable medium GPI speed and 8bit sampling on high baud rates only --- radio/src/targets/horus/telemetry_driver.cpp | 6 ++++-- radio/src/targets/taranis/telemetry_driver.cpp | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) 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;