From 3913a36aebb20b0c1071b5ef332ec6e21b49ed89 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 30 Jan 2016 12:14:35 +0100 Subject: [PATCH] Crossfire again @400000 bauds --- radio/src/pulses/pulses_arm.h | 2 +- radio/src/targets/taranis/telemetry_driver.cpp | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/radio/src/pulses/pulses_arm.h b/radio/src/pulses/pulses_arm.h index db970b3a3..9a8fb4091 100644 --- a/radio/src/pulses/pulses_arm.h +++ b/radio/src/pulses/pulses_arm.h @@ -68,7 +68,7 @@ PACK(struct Dsm2PulsesData { }); #endif -#define CROSSFIRE_BAUDRATE 200000 +#define CROSSFIRE_BAUDRATE 400000 #define CROSSFIRE_FRAME_LEN 25 #define CROSSFIRE_CHANNELS_COUNT 16 PACK(struct CrossfirePulsesData { diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index b49373bb3..d0b10eb99 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -72,15 +72,21 @@ struct SportTxBuffer void telemetryPortSetDirectionOutput() { TELEMETRY_GPIO_DIR->BSRRL = TELEMETRY_DIR_GPIO_PIN; // output enable - TELEMETRY_USART->CR1 &= ~USART_CR1_RE; // turn off receiver + TELEMETRY_USART->CR1 &= ~USART_CR1_RE; // turn off receiver } -void sportSendBuffer(uint8_t *buffer, uint32_t count) +void telemetryPortSetDirectionInput() +{ + TELEMETRY_GPIO_DIR->BSRRH = TELEMETRY_DIR_GPIO_PIN; // output disable + TELEMETRY_USART->CR1 |= USART_CR1_RE; // turn on receiver +} + +void sportSendBuffer(uint8_t * buffer, uint32_t count) { sportTxBuffer.ptr = buffer; sportTxBuffer.count = count; telemetryPortSetDirectionOutput(); - TELEMETRY_USART->CR1 |= USART_CR1_TXEIE ; + TELEMETRY_USART->CR1 |= USART_CR1_TXEIE; } #if !defined(SIMU) @@ -105,11 +111,10 @@ extern "C" void TELEMETRY_USART_IRQHandler() if ((status & USART_SR_TC) && (TELEMETRY_USART->CR1 & USART_CR1_TCIE)) { TELEMETRY_USART->CR1 &= ~USART_CR1_TCIE ; // stop Complete interrupt - TELEMETRY_GPIO_DIR->BSRRH = TELEMETRY_DIR_GPIO_PIN ; // output disable - TELEMETRY_USART->CR1 |= USART_CR1_RE ; + telemetryPortSetDirectionInput(); while (status & (USART_FLAG_RXNE)) { status = TELEMETRY_USART->DR; - status = TELEMETRY_USART->SR ; + status = TELEMETRY_USART->SR; } }