firmware/variants/esp32/elrs/esp32-c3/variant.h

240 lines
9.1 KiB
C

// ELRS Target Selection - automatically defined by PlatformIO environment
// #define ELRS_BAYCKRC_RRD1_2400
// #define ELRS_GENERIC_C3_TD_2400
// #define ELRS_HDZERO_HALO_2400
// #define ELRS_BAYCKRC_PWMC3_2400
// #define ELRS_GENERIC_C3_PWM_2400
// #define ELRS_JUMPER_C3_PWM6_2400
// #define ELRS_BAYCKRC_RRD2_DUAL
// #define ELRS_BAYCKRC_DUALC3_DUAL
// #define ELRS_BETAFPV_SUPERX_NANO_DUAL
// #define ELRS_BROTHERHOBBY_DUALC3_DUAL
// #define ELRS_GENERIC_C3_TRUE_DIVERSITY_DUAL
// #define ELRS_BAYCKRC_RR2_DUAL
// #define ELRS_BAYCKRC_SINGLE_DUAL
// #define ELRS_BAYCKRC_UR100_DUAL
// #define ELRS_BAYCKRC_UR500_DUAL
// #define ELRS_BAYCKRC_UR1000_DUAL
// #define ELRS_BETAFPV_SUPERX_MONO_DUAL
// #define ELRS_DAKEFPV_RX900_DUAL
// #define ELRS_GENERIC_C3_PLAIN_DUAL
// #define ELRS_GEPRC_SINGLE_DUAL
// #define ELRS_SUB250_SINGLE_DUAL
// #define ELRS_RADIOMASTER_XR2_DUAL
// #define ELRS_RADIOMASTER_XR1_DUAL
// #define ELRS_RADIOMASTER_XR3_DUAL
// #define ELRS_BAYCKRC_PWM_DUAL
// #define ELRS_GENERIC_C3_PWM_DUAL
// #define ELRS_BOTLAB_BOTLINK1_2400
// #define ELRS_FLYCOLOR_C3_2400
// #define ELRS_GENERIC_C3_PLAIN_2400
// #define ELRS_GENERIC_C3_PLAIN_PA_2400
// #define ELRS_HDZERO_AIO15_2400
// #define ELRS_NEWBEEDRONE_MICROG_2400
// #define ELRS_NEWBEEDRONE_C324D_2400
// #define ELRS_SPEEDYBEE_AIO_2400
// #define ELRS_TUNERC_TUNERC_2400_NANO_PA_RX_2400
// Common settings
#undef HAS_GPS
#undef GPS_RX_PIN
#undef GPS_TX_PIN
#undef EXT_NOTIFY_OUT
// Global chip-specific pin mappings
// SX128X mappings (2.4GHz)
#define SX128X_CS LORA_CS
#define SX128X_DIO1 LORA_DIO1
#define SX128X_BUSY LORA_BUSY
#define SX128X_RESET LORA_RESET
// LR1121 mappings (dual-band)
#define LR1121_SPI_NSS_PIN LORA_CS
#define LR1121_SPI_SCK_PIN LORA_SCK
#define LR1121_SPI_MOSI_PIN LORA_MOSI
#define LR1121_SPI_MISO_PIN LORA_MISO
#define LR1121_NRESET_PIN LORA_RESET
#define LR1121_BUSY_PIN LORA_BUSY
#define LR1121_IRQ_PIN LORA_DIO1
#define LR11X0_DIO_AS_RF_SWITCH
// Second radio mappings for true diversity
#define SX128X_CS_2 LORA_CS_2
#define SX128X_DIO0_2 LORA_DIO0_2
#define SX128X_DIO1_2 LORA_DIO1_2
#define SX128X_BUSY_2 LORA_BUSY_2
#define SX128X_RESET_2 LORA_RESET_2
#define LR1121_SPI_NSS_2_PIN LORA_CS_2
#define LR1121_NRESET_2_PIN LORA_RESET_2
#define LR1121_BUSY_2_PIN LORA_BUSY_2
#define LR1121_IRQ_2_PIN LORA_DIO1_2
// Pin Configuration 1 - Shared by multiple targets
#if defined(ELRS_BAYCKRC_RRD1_2400) || defined(ELRS_GENERIC_C3_TD_2400) || defined(ELRS_HDZERO_HALO_2400)
#define USE_SX1280
#define TWO_RADIOS
// Radio pins
#define LORA_BUSY 3
#define LORA_CS 0
#define LORA_DIO1 1
#define LORA_MISO 5
#define LORA_MOSI 4
#define LORA_RESET 2
#define LORA_SCK 6
// Second radio pins (true diversity)
#define LORA_BUSY_2 8
#define LORA_CS_2 7
#define LORA_DIO1_2 18
#define LORA_RESET_2 10
// Other pins
#define NEOPIXEL_DATA 19
#define SERIAL_RX_PIN 20
#define SERIAL_TX_PIN 21
// RGB LED
#define HAS_NEOPIXEL
#define NEOPIXEL_COUNT 1
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#endif // defined(ELRS_BAYCKRC_RRD1_2400) || defined(ELRS_GENERIC_C3_TD_2400) || defined(ELRS_HDZERO_HALO_2400)
// Pin Configuration 2 - Shared by multiple targets
#if defined(ELRS_BAYCKRC_PWMC3_2400) || defined(ELRS_GENERIC_C3_PWM_2400) || defined(ELRS_JUMPER_C3_PWM6_2400)
#define USE_SX1280
// Radio pins
#define LORA_BUSY 3
#define LORA_CS 7
#define LORA_DIO1 1
#define LORA_MISO 5
#define LORA_MOSI 4
#define LORA_RESET 2
#define LORA_SCK 6
// Other pins
#define NEOPIXEL_DATA 8
// RGB LED
#define HAS_NEOPIXEL
#define NEOPIXEL_COUNT 1
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#endif // defined(ELRS_BAYCKRC_PWMC3_2400) || defined(ELRS_GENERIC_C3_PWM_2400) || defined(ELRS_JUMPER_C3_PWM6_2400)
// Pin Configuration 3 - Shared by multiple targets
#if defined(ELRS_BAYCKRC_RRD2_DUAL) || defined(ELRS_BAYCKRC_DUALC3_DUAL) || defined(ELRS_BETAFPV_SUPERX_NANO_DUAL) || defined(ELRS_BROTHERHOBBY_DUALC3_DUAL) || defined(ELRS_GENERIC_C3_TRUE_DIVERSITY_DUAL)
#define USE_LR1121
#define TWO_RADIOS
// Radio pins
#define LORA_BUSY 3
#define LORA_CS 0
#define LORA_DIO1 1
#define LORA_MISO 5
#define LORA_MOSI 4
#define LORA_RESET 2
#define LORA_SCK 6
// Second radio pins (true diversity)
#define LORA_BUSY_2 8
#define LORA_CS_2 7
#define LORA_DIO1_2 18
#define LORA_RESET_2 10
// Other pins
#define NEOPIXEL_DATA 19
#define SERIAL_RX_PIN 20
#define SERIAL_TX_PIN 21
// RGB LED
#define HAS_NEOPIXEL
#define NEOPIXEL_COUNT 1
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#endif // defined(ELRS_BAYCKRC_RRD2_DUAL) || defined(ELRS_BAYCKRC_DUALC3_DUAL) || defined(ELRS_BETAFPV_SUPERX_NANO_DUAL) || defined(ELRS_BROTHERHOBBY_DUALC3_DUAL) || defined(ELRS_GENERIC_C3_TRUE_DIVERSITY_DUAL)
// Pin Configuration 4 - Shared by multiple targets
#if defined(ELRS_BAYCKRC_RR2_DUAL) || defined(ELRS_BAYCKRC_SINGLE_DUAL) || defined(ELRS_BAYCKRC_UR100_DUAL) || defined(ELRS_BAYCKRC_UR500_DUAL) || defined(ELRS_BAYCKRC_UR1000_DUAL) || defined(ELRS_BETAFPV_SUPERX_MONO_DUAL) || defined(ELRS_DAKEFPV_RX900_DUAL) || defined(ELRS_GENERIC_C3_PLAIN_DUAL) || defined(ELRS_GEPRC_SINGLE_DUAL) || defined(ELRS_SUB250_SINGLE_DUAL) || defined(ELRS_RADIOMASTER_XR2_DUAL) || defined(ELRS_RADIOMASTER_XR1_DUAL) || defined(ELRS_RADIOMASTER_XR3_DUAL)
#define USE_LR1121
// Radio pins
#define LORA_BUSY 3
#define LORA_CS 7
#define LORA_DIO1 1
#define LORA_MISO 5
#define LORA_MOSI 4
#define LORA_RESET 2
#define LORA_SCK 6
// Other pins
#define NEOPIXEL_DATA 8
#define SERIAL_RX_PIN 20
#define SERIAL_TX_PIN 21
// RGB LED
#define HAS_NEOPIXEL
#define NEOPIXEL_COUNT 1
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#endif // defined(ELRS_BAYCKRC_RR2_DUAL) || defined(ELRS_BAYCKRC_SINGLE_DUAL) || defined(ELRS_BAYCKRC_UR100_DUAL) || defined(ELRS_BAYCKRC_UR500_DUAL) || defined(ELRS_BAYCKRC_UR1000_DUAL) || defined(ELRS_BETAFPV_SUPERX_MONO_DUAL) || defined(ELRS_DAKEFPV_RX900_DUAL) || defined(ELRS_GENERIC_C3_PLAIN_DUAL) || defined(ELRS_GEPRC_SINGLE_DUAL) || defined(ELRS_SUB250_SINGLE_DUAL) || defined(ELRS_RADIOMASTER_XR2_DUAL) || defined(ELRS_RADIOMASTER_XR1_DUAL) || defined(ELRS_RADIOMASTER_XR3_DUAL)
// Pin Configuration 5 - Shared by multiple targets
#if defined(ELRS_BAYCKRC_PWM_DUAL) || defined(ELRS_GENERIC_C3_PWM_DUAL)
#define USE_LR1121
// Radio pins
#define LORA_BUSY 3
#define LORA_CS 7
#define LORA_DIO1 1
#define LORA_MISO 5
#define LORA_MOSI 4
#define LORA_RESET 2
#define LORA_SCK 6
// Other pins
#define NEOPIXEL_DATA 8
// RGB LED
#define HAS_NEOPIXEL
#define NEOPIXEL_COUNT 1
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#endif // defined(ELRS_BAYCKRC_PWM_DUAL) || defined(ELRS_GENERIC_C3_PWM_DUAL)
// Pin Configuration 6 - Shared by multiple targets
#if defined(ELRS_BOTLAB_BOTLINK1_2400) || defined(ELRS_FLYCOLOR_C3_2400) || defined(ELRS_GENERIC_C3_PLAIN_2400) || defined(ELRS_GENERIC_C3_PLAIN_PA_2400) || defined(ELRS_HDZERO_AIO15_2400) || defined(ELRS_NEWBEEDRONE_MICROG_2400) || defined(ELRS_NEWBEEDRONE_C324D_2400) || defined(ELRS_SPEEDYBEE_AIO_2400) || defined(ELRS_TUNERC_TUNERC_2400_NANO_PA_RX_2400)
#define USE_SX1280
// Radio pins
#define LORA_BUSY 3
#define LORA_CS 7
#define LORA_DIO1 1
#define LORA_MISO 5
#define LORA_MOSI 4
#define LORA_RESET 2
#define LORA_SCK 6
// Other pins
#define NEOPIXEL_DATA 8
#define SERIAL_RX_PIN 20
#define SERIAL_TX_PIN 21
// RGB LED
#define HAS_NEOPIXEL
#define NEOPIXEL_COUNT 1
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#endif // defined(ELRS_BOTLAB_BOTLINK1_2400) || defined(ELRS_FLYCOLOR_C3_2400) || defined(ELRS_GENERIC_C3_PLAIN_2400) || defined(ELRS_GENERIC_C3_PLAIN_PA_2400) || defined(ELRS_HDZERO_AIO15_2400) || defined(ELRS_NEWBEEDRONE_MICROG_2400) || defined(ELRS_NEWBEEDRONE_C324D_2400) || defined(ELRS_SPEEDYBEE_AIO_2400) || defined(ELRS_TUNERC_TUNERC_2400_NANO_PA_RX_2400)
// Set second radio CS pin high at startup to disable it
#if defined(TWO_RADIOS)
#define PIN_ENABLE_HIGH LORA_CS_2
#endif // TWO_RADIOS
// Ensure only one target is selected
#if defined(ELRS_BAYCKRC_RRD1_2400) + defined(ELRS_GENERIC_C3_TD_2400) + defined(ELRS_HDZERO_HALO_2400) + defined(ELRS_BAYCKRC_PWMC3_2400) + defined(ELRS_GENERIC_C3_PWM_2400) + defined(ELRS_JUMPER_C3_PWM6_2400) + defined(ELRS_BAYCKRC_RRD2_DUAL) + defined(ELRS_BAYCKRC_DUALC3_DUAL) + defined(ELRS_BETAFPV_SUPERX_NANO_DUAL) + defined(ELRS_BROTHERHOBBY_DUALC3_DUAL) + defined(ELRS_GENERIC_C3_TRUE_DIVERSITY_DUAL) + defined(ELRS_BAYCKRC_RR2_DUAL) + defined(ELRS_BAYCKRC_SINGLE_DUAL) + defined(ELRS_BAYCKRC_UR100_DUAL) + defined(ELRS_BAYCKRC_UR500_DUAL) + defined(ELRS_BAYCKRC_UR1000_DUAL) + defined(ELRS_BETAFPV_SUPERX_MONO_DUAL) + defined(ELRS_DAKEFPV_RX900_DUAL) + defined(ELRS_GENERIC_C3_PLAIN_DUAL) + defined(ELRS_GEPRC_SINGLE_DUAL) + defined(ELRS_SUB250_SINGLE_DUAL) + defined(ELRS_RADIOMASTER_XR2_DUAL) + defined(ELRS_RADIOMASTER_XR1_DUAL) + defined(ELRS_RADIOMASTER_XR3_DUAL) + defined(ELRS_BAYCKRC_PWM_DUAL) + defined(ELRS_GENERIC_C3_PWM_DUAL) + defined(ELRS_BOTLAB_BOTLINK1_2400) + defined(ELRS_FLYCOLOR_C3_2400) + defined(ELRS_GENERIC_C3_PLAIN_2400) + defined(ELRS_GENERIC_C3_PLAIN_PA_2400) + defined(ELRS_HDZERO_AIO15_2400) + defined(ELRS_NEWBEEDRONE_MICROG_2400) + defined(ELRS_NEWBEEDRONE_C324D_2400) + defined(ELRS_SPEEDYBEE_AIO_2400) + defined(ELRS_TUNERC_TUNERC_2400_NANO_PA_RX_2400) != 1
#error "Exactly one ELRS target must be defined"
#endif