mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-20 06:45:16 +03:00
[H7] Enable transponder
This commit is contained in:
parent
77ef37bad0
commit
f346336aa8
5 changed files with 19 additions and 6 deletions
|
@ -80,7 +80,7 @@
|
|||
uint8_t erlt[TRANSPONDER_DMA_BUFFER_SIZE_ERLT]; // 91-200
|
||||
} transponderIrDMABuffer_t;
|
||||
|
||||
#elif defined(STM32F4) || defined(STM32F7)
|
||||
#elif defined(STM32F4) || defined(STM32F7) || defined(STM32H7)
|
||||
|
||||
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(UNIT_TEST)
|
||||
#if defined(STM32F3) || defined(STM32F4)|| defined(STM32F7) || defined(STM32H7) || defined(UNIT_TEST)
|
||||
transponderIrDMABuffer_t transponderIrDMABuffer;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#include "drivers/transponder_ir.h"
|
||||
#include "drivers/transponder_ir_arcitimer.h"
|
||||
|
||||
#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(UNIT_TEST)
|
||||
#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(UNIT_TEST)
|
||||
|
||||
extern const struct transponderVTable arcitimerTansponderVTable;
|
||||
static uint16_t dmaBufferOffset;
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include "drivers/transponder_ir.h"
|
||||
#include "drivers/transponder_ir_erlt.h"
|
||||
|
||||
#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(UNIT_TEST)
|
||||
#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(UNIT_TEST)
|
||||
|
||||
static uint16_t dmaBufferOffset;
|
||||
extern const struct transponderVTable erltTansponderVTable;
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include "drivers/transponder_ir.h"
|
||||
#include "drivers/transponder_ir_ilap.h"
|
||||
|
||||
#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(UNIT_TEST)
|
||||
#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(UNIT_TEST)
|
||||
|
||||
static uint16_t dmaBufferOffset;
|
||||
extern const struct transponderVTable ilapTansponderVTable;
|
||||
|
|
|
@ -48,11 +48,15 @@ static uint16_t timerChannel = 0;
|
|||
static uint8_t output;
|
||||
static uint8_t alternateFunction;
|
||||
|
||||
#if !defined(STM32F7)
|
||||
#if !(defined(STM32F7) || defined(STM32H7))
|
||||
#error "Transponder (via HAL) not supported on this MCU."
|
||||
#endif
|
||||
|
||||
#ifdef STM32H7
|
||||
DMA_RAM transponder_t transponder;
|
||||
#else
|
||||
transponder_t transponder;
|
||||
#endif
|
||||
bool transponderInitialised = false;
|
||||
|
||||
static void TRANSPONDER_DMA_IRQHandler(dmaChannelDescriptor_t* descriptor)
|
||||
|
@ -85,7 +89,11 @@ void transponderIrHardwareInit(ioTag_t ioTag, transponder_t *transponder)
|
|||
uint32_t dmaChannel = dmaSpec->channel;
|
||||
#else
|
||||
dmaStream_t *dmaRef = timerHardware->dmaRef;
|
||||
#ifdef STM32H7
|
||||
uint32_t dmaChannel = timerHardware->dmaRequest;
|
||||
#else
|
||||
uint32_t dmaChannel = timerHardware->dmaChannel;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (dmaRef == NULL) {
|
||||
|
@ -119,9 +127,14 @@ void transponderIrHardwareInit(ioTag_t ioTag, transponder_t *transponder)
|
|||
IOConfigGPIOAF(transponderIO, IO_CONFIG(GPIO_MODE_AF_PP, GPIO_SPEED_FREQ_VERY_HIGH, GPIO_PULLDOWN), timerHardware->alternateFunction);
|
||||
|
||||
__DMA1_CLK_ENABLE();
|
||||
__DMA2_CLK_ENABLE();
|
||||
|
||||
/* Set the parameters to be configured */
|
||||
#ifdef STM32H7
|
||||
hdma_tim.Init.Request = dmaChannel;
|
||||
#else
|
||||
hdma_tim.Init.Channel = dmaChannel;
|
||||
#endif
|
||||
hdma_tim.Init.Direction = DMA_MEMORY_TO_PERIPH;
|
||||
hdma_tim.Init.PeriphInc = DMA_PINC_DISABLE;
|
||||
hdma_tim.Init.MemInc = DMA_MINC_ENABLE;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue