From 65c154406872a124b844311a1fd65ffc2da5e0b4 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Sun, 15 Aug 2021 11:41:07 +0800 Subject: [PATCH 1/3] 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/3] 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) From 478e345a32ab299402bf891096b3b6b2957af862 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Tue, 17 Aug 2021 14:32:04 +0200 Subject: [PATCH 3/3] [nv14] Fix key support in bootloader Resolves #597 --- radio/src/targets/common/arm/stm32/bootloader/boot.cpp | 9 ++++----- radio/src/targets/nv14/board.h | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp index 97a488f44..fd7c36a6d 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp +++ b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp @@ -83,11 +83,10 @@ void interrupt10ms() #endif uint8_t index = 0; - uint8_t in = readKeys(); - for (uint8_t i = 1; i != uint8_t(1u << TRM_BASE); i <<= 1) { - uint8_t value = (in & i); - keys[index].input(value); - ++index; + uint32_t in = readKeys(); + + for (int i = 0; i < TRM_BASE; i++) { + keys[index++].input(in & (1 << i)); } #if defined(ROTARY_ENCODER_NAVIGATION) diff --git a/radio/src/targets/nv14/board.h b/radio/src/targets/nv14/board.h index c272bd0d7..3209b7270 100644 --- a/radio/src/targets/nv14/board.h +++ b/radio/src/targets/nv14/board.h @@ -146,9 +146,9 @@ enum EnumKeys KEY_PGDN, KEY_ENTER, KEY_MODEL, - KEY_UP = KEY_MODEL, + KEY_UP /*= KEY_MODEL*/, KEY_EXIT, - KEY_DOWN = KEY_EXIT, + KEY_DOWN /*= KEY_EXIT*/, KEY_TELEM, KEY_RIGHT = KEY_TELEM, KEY_RADIO,