Files
meshtastic_firmware/variants/nrf52840/diy/moonshine_NRF52_mini/variant.h
T
2026-07-19 16:19:59 +08:00

112 lines
3.7 KiB
C

#ifndef _VARIANT_MOONSHINE_NRF52_MINI_
#define _VARIANT_MOONSHINE_NRF52_MINI_
/** Master clock frequency */
#define VARIANT_MCK (64000000ul)
#define USE_LFXO // Board uses 32khz crystal for LF
/*----------------------------------------------------------------------------
* Headers
*----------------------------------------------------------------------------*/
#include "WVariant.h"
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
/*
MOONSHINE NRF52 MINI PIN ASSIGNMENT (minimal system: nRF52840 + RA-01S-P)
| Pin | Function | Notes |
| ----- | ----------- | --------------------------- |
| P0.02 | SPI MISO | LORA_MISO |
| P0.09 | LORA RESET | SX126X_RESET |
| P0.10 | LORA DIO1 | SX126X_DIO1 (IRQ) |
| P0.15 | LED | Status LED (active high) |
| P0.17 | LORA RXEN | SX126X_RXEN |
| P0.29 | LORA BUSY | SX126X_BUSY |
| P1.11 | SPI SCK | LORA_SCK |
| P1.13 | LORA CS | SX126X_CS |
| P1.15 | SPI MOSI | LORA_MOSI |
*/
// Number of pins defined in PinDescription array
#define PINS_COUNT (48)
#define NUM_DIGITAL_PINS (48)
#define NUM_ANALOG_INPUTS (0)
#define NUM_ANALOG_OUTPUTS (0)
// No dedicated 3V3 enable pin on this board
#define PIN_3V3_EN (-1)
// LED - status LED on P0.15 (active high)
#define PIN_LED1 (0 + 15) // P0.15
#define LED_BLUE PIN_LED1
#define LED_STATE_ON 1 // State when LED is lit (active high)
// Analog pins - no ADC devices wired
#define PIN_A0 (-1)
#define PIN_AREF (-1)
#define ADC_RESOLUTION 14
// UART interfaces - no physical serial ports wired. The Adafruit nRF52 core
// always declares Serial1/Serial2 and requires these macros to exist; -1 means
// no pin assigned. SerialModule.cpp also references Serial2 unconditionally.
#define PIN_SERIAL1_RX (-1)
#define PIN_SERIAL1_TX (-1)
#define PIN_SERIAL2_RX (-1)
#define PIN_SERIAL2_TX (-1)
// WIRE - no physical I2C devices, but WIRE_INTERFACES_COUNT must be >= 1 so the
// Adafruit core declares the Wire singleton (referenced by display lib deps).
#define WIRE_INTERFACES_COUNT 1
#define PIN_WIRE_SDA (32 + 4) // P1.04 - free pin, no I2C device wired
#define PIN_WIRE_SCL (0 + 11) // P0.11 - free pin, no I2C device wired
// Serial interfaces
#define SPI_INTERFACES_COUNT 1
#define PIN_SPI_MISO (0 + 2) // P0.02
#define PIN_SPI_MOSI (32 + 15) // P1.15
#define PIN_SPI_SCK (32 + 11) // P1.11
#define LORA_MISO PIN_SPI_MISO
#define LORA_MOSI PIN_SPI_MOSI
#define LORA_SCK PIN_SPI_SCK
#define LORA_CS (32 + 13) // P1.13
// GPS - no GPS hardware; sentinels required by GPS code paths
#define GPS_RX_PIN (-1)
#define GPS_TX_PIN (-1)
#define PIN_GPS_EN (-1)
#define PIN_GPS_PPS (-1)
// LORA MODULE - RA-01S-P (Ai-Thinker SX1262, no TCXO, internal RF switch, 22dBm)
#define USE_SX1262
// SX126X CONFIG
#define SX126X_CS (32 + 13) // P1.13 FIXME - we really should define LORA_CS instead
#define SX126X_DIO1 (0 + 10) // P0.10 IRQ
#define SX126X_DIO2_AS_RF_SWITCH // DIO2 drives TXEN for automatic TX/RX switching
#define SX126X_BUSY (0 + 29) // P0.29
#define SX126X_RESET (0 + 9) // P0.09
#define SX126X_RXEN (0 + 17) // P0.17
#define SX126X_TXEN RADIOLIB_NC // Assuming that DIO2 is connected to TXEN pin. If not, TXEN must be connected.
#define SX126X_MAX_POWER 22 // RA-01S-P max is 22dBm
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
#define TCXO_OPTIONAL // RA-01S-P has no TCXO - firmware tries XTAL first, falls back to TCXO
#ifdef __cplusplus
}
#endif
/*----------------------------------------------------------------------------
* Arduino objects - C++ only
*----------------------------------------------------------------------------*/
#endif