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

145 lines
3.5 KiB
C

// ELRS Target Selection - automatically defined by PlatformIO environment
// #define ELRS_BSIP_SUPERX_MONO_DUAL
// #define ELRS_DIY_TRUE_DIVERSITY_PWM16_S3_2400
// #define ELRS_DIY_TRUE_DIVERSITY_VTX_PWM11_S3_2400
// #define ELRS_SPRACING_RXG1_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
// bsip superx-mono
#ifdef ELRS_BSIP_SUPERX_MONO_DUAL
#define USE_LR1121
#define TWO_RADIOS
// Radio pins
#define LORA_BUSY 14
#define LORA_CS 4
#define LORA_DIO1 11
#define LORA_MISO 7
#define LORA_MOSI 6
#define LORA_RESET 12
#define LORA_SCK 5
// Second radio pins (true diversity)
#define LORA_BUSY_2 36
#define LORA_CS_2 13
#define LORA_DIO1_2 21
#define LORA_RESET_2 33
// Other pins
#define NEOPIXEL_DATA 2
#define SERIAL_RX_PIN 44
#define SERIAL_TX_PIN 43
// RGB LED
#define HAS_NEOPIXEL
#define NEOPIXEL_COUNT 1
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#endif // ELRS_BSIP_SUPERX_MONO_DUAL
// Pin Configuration 2 - Shared by multiple targets
#if defined(ELRS_DIY_TRUE_DIVERSITY_PWM16_S3_2400) || defined(ELRS_DIY_TRUE_DIVERSITY_VTX_PWM11_S3_2400)
#define USE_SX1280
#define TWO_RADIOS
// Radio pins
#define LORA_BUSY 4
#define LORA_CS 17
#define LORA_DIO1 5
#define LORA_MISO 15
#define LORA_MOSI 16
#define LORA_RESET 6
#define LORA_SCK 7
// Second radio pins (true diversity)
#define LORA_BUSY_2 18
#define LORA_CS_2 46
#define LORA_DIO1_2 8
#define LORA_RESET_2 3
// Other pins
#define NEOPIXEL_DATA 48
#define SERIAL_RX_PIN 44
#define SERIAL_TX_PIN 43
// RGB LED
#define HAS_NEOPIXEL
#define NEOPIXEL_COUNT 1
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#endif // defined(ELRS_DIY_TRUE_DIVERSITY_PWM16_S3_2400) || defined(ELRS_DIY_TRUE_DIVERSITY_VTX_PWM11_S3_2400)
// spracing rxg1
#ifdef ELRS_SPRACING_RXG1_2400
#define USE_SX1280
#define TWO_RADIOS
// Radio pins
#define LORA_BUSY 7
#define LORA_CS 10
#define LORA_DIO1 6
#define LORA_MISO 13
#define LORA_MOSI 11
#define LORA_RESET 9
#define LORA_SCK 12
// Second radio pins (true diversity)
#define LORA_BUSY_2 5
#define LORA_CS_2 8
#define LORA_DIO1_2 4
#define LORA_RESET_2 46
// Other pins
#define NEOPIXEL_DATA 38
#define SERIAL_RX_PIN 44
#define SERIAL_TX_PIN 43
// RGB LED
#define HAS_NEOPIXEL
#define NEOPIXEL_COUNT 1
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#endif // ELRS_SPRACING_RXG1_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_BSIP_SUPERX_MONO_DUAL) + defined(ELRS_DIY_TRUE_DIVERSITY_PWM16_S3_2400) + defined(ELRS_DIY_TRUE_DIVERSITY_VTX_PWM11_S3_2400) + defined(ELRS_SPRACING_RXG1_2400) != 1
#error "Exactly one ELRS target must be defined"
#endif