mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-21 15:25:36 +03:00
Cherry-pick CF/fbb3f92
This commit is contained in:
parent
d373857e59
commit
fac694ce4b
7 changed files with 157 additions and 11 deletions
|
@ -28,6 +28,8 @@
|
|||
#define TRANSPONDER_DMA_BUFFER_SIZE_ARCITIMER 155 * TRANSPONDER_TOGGLES_PER_BIT_ARCITIMER // 620
|
||||
#define TRANSPONDER_TIMER_MHZ_ARCITIMER 24
|
||||
#define TRANSPONDER_CARRIER_HZ_ARCITIMER 41886
|
||||
#define TRANSPONDER_TRANSMIT_DELAY_ARCITIMER 4500
|
||||
#define TRANSPONDER_TRANSMIT_JITTER_ARCITIMER 10000
|
||||
/*** ******** ***/
|
||||
|
||||
|
||||
|
@ -36,12 +38,29 @@
|
|||
#define TRANSPONDER_DATA_LENGTH_ILAP 6
|
||||
#define TRANSPONDER_TOGGLES_PER_BIT_ILAP 11
|
||||
#define TRANSPONDER_GAP_TOGGLES_ILAP 1
|
||||
#define TRANSPONDER_TOGGLES (TRANSPONDER_TOGGLES_PER_BIT_ILAP + TRANSPONDER_GAP_TOGGLES_ILAP)
|
||||
#define TRANSPONDER_TOGGLES_ILAP (TRANSPONDER_TOGGLES_PER_BIT_ILAP + TRANSPONDER_GAP_TOGGLES_ILAP)
|
||||
#define TRANSPONDER_DMA_BUFFER_SIZE_ILAP ((TRANSPONDER_TOGGLES_PER_BIT_ILAP + 1) * TRANSPONDER_BITS_PER_BYTE_ILAP * TRANSPONDER_DATA_LENGTH_ILAP) //720
|
||||
#define TRANSPONDER_TIMER_MHZ_ILAP 24
|
||||
#define TRANSPONDER_CARRIER_HZ_ILAP 460750
|
||||
#define TRANSPONDER_TRANSMIT_DELAY_ILAP 4500
|
||||
#define TRANSPONDER_TRANSMIT_JITTER_ILAP 10000
|
||||
/*** ******** ***/
|
||||
|
||||
|
||||
/*** ERLT ***/
|
||||
#define TRANSPONDER_DATA_LENGTH_ERLT 1
|
||||
|
||||
#define ERLTBitQuiet 0
|
||||
#define ERLTCyclesForOneBit 25
|
||||
#define ERLTCyclesForZeroBit 10
|
||||
#define TRANSPONDER_DMA_BUFFER_SIZE_ERLT 200 // actually ERLT is variable length 91-196 depending on the ERLT id
|
||||
#define TRANSPONDER_TIMER_MHZ_ERLT 18
|
||||
#define TRANSPONDER_CARRIER_HZ_ERLT 38000
|
||||
#define TRANSPONDER_TRANSMIT_DELAY_ERLT 22500
|
||||
#define TRANSPONDER_TRANSMIT_JITTER_ERLT 5000
|
||||
/*** ******** ***/
|
||||
|
||||
|
||||
/*
|
||||
* Implementation note:
|
||||
* Using around over 700 bytes for a transponder DMA buffer is a little excessive, likely an alternative implementation that uses a fast
|
||||
|
@ -55,6 +74,7 @@
|
|||
typedef union transponderIrDMABuffer_s {
|
||||
uint8_t arcitimer[TRANSPONDER_DMA_BUFFER_SIZE_ARCITIMER]; // 620
|
||||
uint8_t ilap[TRANSPONDER_DMA_BUFFER_SIZE_ILAP]; // 720
|
||||
uint8_t erlt[TRANSPONDER_DMA_BUFFER_SIZE_ERLT]; // 91-200
|
||||
} transponderIrDMABuffer_t;
|
||||
|
||||
#elif defined(STM32F4)
|
||||
|
@ -62,6 +82,7 @@
|
|||
typedef union transponderIrDMABuffer_s {
|
||||
uint32_t arcitimer[TRANSPONDER_DMA_BUFFER_SIZE_ARCITIMER]; // 620
|
||||
uint32_t ilap[TRANSPONDER_DMA_BUFFER_SIZE_ILAP]; // 720
|
||||
uint32_t erlt[TRANSPONDER_DMA_BUFFER_SIZE_ERLT]; // 91-200
|
||||
} transponderIrDMABuffer_t;
|
||||
#endif
|
||||
|
||||
|
@ -80,11 +101,14 @@ typedef struct transponder_s {
|
|||
} transponder_t;
|
||||
|
||||
typedef enum {
|
||||
NONE,
|
||||
ARCITIMER,
|
||||
ILAP
|
||||
TRANSPONDER_NONE = 0,
|
||||
TRANSPONDER_ILAP,
|
||||
TRANSPONDER_ARCITIMER,
|
||||
TRANSPONDER_ERLT
|
||||
} transponderProvider_e;
|
||||
|
||||
#define TRANSPONDER_PROVIDER_COUNT 3
|
||||
|
||||
struct transponderVTable {
|
||||
void (*updateTransponderDMABuffer)(transponder_t *transponder, const uint8_t* transponderData);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue