From fcc68c45fadef48b29b43303ac82979b774a8267 Mon Sep 17 00:00:00 2001 From: jflyper Date: Mon, 2 Mar 2020 11:23:27 +0900 Subject: [PATCH] [G4] Transponder support (not tested) --- src/main/drivers/transponder_ir.h | 4 ++-- src/main/drivers/transponder_ir_arcitimer.c | 2 +- src/main/drivers/transponder_ir_erlt.c | 2 +- src/main/drivers/transponder_ir_ilap.c | 2 +- src/main/drivers/transponder_ir_io_hal.c | 10 +++++++--- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/drivers/transponder_ir.h b/src/main/drivers/transponder_ir.h index fc403ebc42..77e15ed8e6 100644 --- a/src/main/drivers/transponder_ir.h +++ b/src/main/drivers/transponder_ir.h @@ -80,7 +80,7 @@ uint8_t erlt[TRANSPONDER_DMA_BUFFER_SIZE_ERLT]; // 91-200 } transponderIrDMABuffer_t; -#elif defined(STM32F4) || defined(STM32F7) || defined(STM32H7) +#elif defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4) typedef union transponderIrDMABuffer_s { uint32_t arcitimer[TRANSPONDER_DMA_BUFFER_SIZE_ARCITIMER]; // 620 @@ -96,7 +96,7 @@ typedef struct transponder_s { uint16_t bitToggleOne; uint32_t dma_buffer_size; - #if defined(STM32F3) || defined(STM32F4)|| defined(STM32F7) || defined(STM32H7) || defined(UNIT_TEST) + #if defined(STM32F3) || defined(STM32F4)|| defined(STM32F7) || defined(STM32H7) || defined(STM32G4) || defined(UNIT_TEST) transponderIrDMABuffer_t transponderIrDMABuffer; #endif diff --git a/src/main/drivers/transponder_ir_arcitimer.c b/src/main/drivers/transponder_ir_arcitimer.c index 6e80e217e1..d262904aa5 100644 --- a/src/main/drivers/transponder_ir_arcitimer.c +++ b/src/main/drivers/transponder_ir_arcitimer.c @@ -29,7 +29,7 @@ #include "drivers/transponder_ir.h" #include "drivers/transponder_ir_arcitimer.h" -#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(UNIT_TEST) +#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4) || defined(UNIT_TEST) extern const struct transponderVTable arcitimerTansponderVTable; static uint16_t dmaBufferOffset; diff --git a/src/main/drivers/transponder_ir_erlt.c b/src/main/drivers/transponder_ir_erlt.c index e226a69e9b..7c562d96c4 100644 --- a/src/main/drivers/transponder_ir_erlt.c +++ b/src/main/drivers/transponder_ir_erlt.c @@ -28,7 +28,7 @@ #include "drivers/transponder_ir.h" #include "drivers/transponder_ir_erlt.h" -#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(UNIT_TEST) +#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4) || defined(UNIT_TEST) static uint16_t dmaBufferOffset; extern const struct transponderVTable erltTansponderVTable; diff --git a/src/main/drivers/transponder_ir_ilap.c b/src/main/drivers/transponder_ir_ilap.c index 0de93ee117..0749c40656 100644 --- a/src/main/drivers/transponder_ir_ilap.c +++ b/src/main/drivers/transponder_ir_ilap.c @@ -28,7 +28,7 @@ #include "drivers/transponder_ir.h" #include "drivers/transponder_ir_ilap.h" -#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(UNIT_TEST) +#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4) || defined(UNIT_TEST) static uint16_t dmaBufferOffset; extern const struct transponderVTable ilapTansponderVTable; diff --git a/src/main/drivers/transponder_ir_io_hal.c b/src/main/drivers/transponder_ir_io_hal.c index 3b6e8b9823..717792f5d4 100644 --- a/src/main/drivers/transponder_ir_io_hal.c +++ b/src/main/drivers/transponder_ir_io_hal.c @@ -46,12 +46,14 @@ static uint16_t timerChannel = 0; static uint8_t output; static uint8_t alternateFunction; -#if !(defined(STM32F7) || defined(STM32H7)) +#if !(defined(STM32F7) || defined(STM32H7) || defined(STM32G4)) #error "Transponder (via HAL) not supported on this MCU." #endif -#ifdef STM32H7 +#if defined(STM32H7) DMA_RAM transponder_t transponder; +#elif defined(STM32G4) +DMA_RAM_W transponder_t transponder; #else transponder_t transponder; #endif @@ -124,7 +126,7 @@ void transponderIrHardwareInit(ioTag_t ioTag, transponder_t *transponder) __DMA2_CLK_ENABLE(); /* Set the parameters to be configured */ -#ifdef STM32H7 +#if defined(STM32H7) || defined(STM32G4) hdma_tim.Init.Request = dmaChannel; #else hdma_tim.Init.Channel = dmaChannel; @@ -136,10 +138,12 @@ void transponderIrHardwareInit(ioTag_t ioTag, transponder_t *transponder) hdma_tim.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; hdma_tim.Init.Mode = DMA_NORMAL; hdma_tim.Init.Priority = DMA_PRIORITY_HIGH; +#if !defined(STM32G4) hdma_tim.Init.FIFOMode = DMA_FIFOMODE_DISABLE; hdma_tim.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; hdma_tim.Init.MemBurst = DMA_MBURST_SINGLE; hdma_tim.Init.PeriphBurst = DMA_PBURST_SINGLE; +#endif /* Set hdma_tim instance */ hdma_tim.Instance = (DMA_ARCH_TYPE *)dmaRef;