From 65c154406872a124b844311a1fd65ffc2da5e0b4 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Sun, 15 Aug 2021 11:41:07 +0800 Subject: [PATCH 1/2] Fixed telemetry for NV14 external module. --- radio/src/targets/nv14/telemetry_driver.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/radio/src/targets/nv14/telemetry_driver.cpp b/radio/src/targets/nv14/telemetry_driver.cpp index adf82c752..db356b5c7 100644 --- a/radio/src/targets/nv14/telemetry_driver.cpp +++ b/radio/src/targets/nv14/telemetry_driver.cpp @@ -65,8 +65,11 @@ void telemetryPortInit(uint32_t baudrate, uint8_t mode) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(TELEMETRY_REV_GPIO, &GPIO_InitStructure); - TELEMETRY_TX_POL_INV(); - TELEMETRY_RX_POL_INV(); +// TELEMETRY_TX_POL_INV(); +// TELEMETRY_RX_POL_INV(); + + TELEMETRY_TX_POL_NORM(); + TELEMETRY_RX_POL_NORM(); USART_InitStructure.USART_BaudRate = baudrate; if (mode & TELEMETRY_SERIAL_8E2) { @@ -113,6 +116,8 @@ void telemetryPortSetDirectionInput() void sportSendByte(uint8_t byte) { + telemetryPortSetDirectionOutput(); + while (!(TELEMETRY_USART->SR & USART_SR_TXE)); USART_SendData(TELEMETRY_USART, byte); } From b14336d33dbebde8ff8713d4391b6d6efca50253 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Sun, 15 Aug 2021 15:35:15 +0800 Subject: [PATCH 2/2] Change telemetryy driver to support inv and noinv configurations. --- radio/src/targets/nv14/telemetry_driver.cpp | 25 +++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/radio/src/targets/nv14/telemetry_driver.cpp b/radio/src/targets/nv14/telemetry_driver.cpp index db356b5c7..3e89f0c05 100644 --- a/radio/src/targets/nv14/telemetry_driver.cpp +++ b/radio/src/targets/nv14/telemetry_driver.cpp @@ -28,7 +28,7 @@ DMAFifo telemetryDMAFifo __DMA (TELEMETRY_DMA_Stream_RX); uint8_t telemetryFifoMode; #endif -void telemetryPortInit(uint32_t baudrate, uint8_t mode) +void telemetryPortInitCommon(uint32_t baudrate, uint8_t mode, uint8_t noinv = 0) { if (baudrate == 0) { USART_DeInit(TELEMETRY_USART); @@ -65,11 +65,17 @@ void telemetryPortInit(uint32_t baudrate, uint8_t mode) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(TELEMETRY_REV_GPIO, &GPIO_InitStructure); -// TELEMETRY_TX_POL_INV(); -// TELEMETRY_RX_POL_INV(); - - TELEMETRY_TX_POL_NORM(); - TELEMETRY_RX_POL_NORM(); + + if (noinv == 0) + { + TELEMETRY_TX_POL_NORM(); + TELEMETRY_RX_POL_NORM(); + } + else + { + TELEMETRY_TX_POL_INV(); + TELEMETRY_RX_POL_INV(); + } USART_InitStructure.USART_BaudRate = baudrate; if (mode & TELEMETRY_SERIAL_8E2) { @@ -92,9 +98,14 @@ void telemetryPortInit(uint32_t baudrate, uint8_t mode) NVIC_EnableIRQ(TELEMETRY_USART_IRQn); } +void telemetryPortInit(uint32_t baudrate, uint8_t mode) +{ + telemetryPortInitCommon(baudrate, mode, 0); +} + void telemetryPortInvertedInit(uint32_t baudrate) { -#warning "TODO telemetryPortInvertedInit"; + telemetryPortInitCommon(baudrate, TELEMETRY_SERIAL_DEFAULT, 1); } /*void extmoduleSendInvertedByte(uint8_t byte)