kopia lustrzana https://github.com/meshtastic/firmware
203 wiersze
4.8 KiB
C
203 wiersze
4.8 KiB
C
#ifndef _SEEED_XIAO_NRF52840_SENSE_H_
|
|
#define _SEEED_XIAO_NRF52840_SENSE_H_
|
|
|
|
/** Master clock frequency */
|
|
#define VARIANT_MCK (64000000ul)
|
|
|
|
#define USE_LFXO // Board uses 32khz crystal for LF
|
|
// #define USE_LFRC // Board uses RC for LF
|
|
|
|
/*----------------------------------------------------------------------------
|
|
* Headers
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
#include "WVariant.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
|
|
#define PINS_COUNT (33)
|
|
#define NUM_DIGITAL_PINS (33)
|
|
#define NUM_ANALOG_INPUTS (8) // A6 is used for battery, A7 is analog reference
|
|
#define NUM_ANALOG_OUTPUTS (0)
|
|
|
|
// LEDs
|
|
|
|
#define LED_RED 11
|
|
#define LED_BLUE 12
|
|
#define LED_GREEN 13
|
|
|
|
#define PIN_LED1 LED_GREEN
|
|
#define PIN_LED2 LED_BLUE
|
|
#define PIN_LED3 LED_RED
|
|
|
|
#define PIN_LED PIN_LED1
|
|
#define LED_PWR (PINS_COUNT)
|
|
|
|
#define LED_BUILTIN PIN_LED
|
|
|
|
#define LED_STATE_ON 1 // State when LED is lit
|
|
|
|
/*
|
|
* Buttons
|
|
*/
|
|
#define PIN_BUTTON1 (PINS_COUNT)
|
|
|
|
// Digital PINs
|
|
#define D0 (0ul)
|
|
#define D1 (1ul)
|
|
#define D2 (2ul)
|
|
#define D3 (3ul)
|
|
#define D4 (4ul)
|
|
#define D5 (5ul)
|
|
#define D6 (6ul)
|
|
#define D7 (7ul)
|
|
#define D8 (8ul)
|
|
#define D9 (9ul)
|
|
#define D10 (10ul)
|
|
|
|
/*
|
|
* Analog pins
|
|
*/
|
|
#define PIN_A0 (0)
|
|
#define PIN_A1 (1)
|
|
#define PIN_A2 (2)
|
|
#define PIN_A3 (3)
|
|
#define PIN_A4 (4)
|
|
#define PIN_A5 (5)
|
|
#define PIN_VBAT (32)
|
|
#define VBAT_ENABLE (14)
|
|
|
|
static const uint8_t A0 = PIN_A0;
|
|
static const uint8_t A1 = PIN_A1;
|
|
static const uint8_t A2 = PIN_A2;
|
|
static const uint8_t A3 = PIN_A3;
|
|
static const uint8_t A4 = PIN_A4;
|
|
static const uint8_t A5 = PIN_A5;
|
|
#define ADC_RESOLUTION 12
|
|
|
|
// Other pins
|
|
#define PIN_NFC1 (30)
|
|
#define PIN_NFC2 (31)
|
|
|
|
/*
|
|
* Serial interfaces
|
|
*/
|
|
#define PIN_SERIAL1_RX (-1) // (7)
|
|
#define PIN_SERIAL1_TX (-1) // (6)
|
|
|
|
#define PIN_SERIAL2_RX (-1)
|
|
#define PIN_SERIAL2_TX (-1)
|
|
|
|
/*
|
|
* SPI Interfaces
|
|
*/
|
|
#define SPI_INTERFACES_COUNT 1
|
|
|
|
#define PIN_SPI_MISO (9)
|
|
#define PIN_SPI_MOSI (10)
|
|
#define PIN_SPI_SCK (8)
|
|
|
|
static const uint8_t SS = D0;
|
|
static const uint8_t MOSI = PIN_SPI_MOSI;
|
|
static const uint8_t MISO = PIN_SPI_MISO;
|
|
static const uint8_t SCK = PIN_SPI_SCK;
|
|
|
|
// supported modules list
|
|
#define USE_SX1262
|
|
|
|
// common pinouts for SX126X modules
|
|
#define SX126X_CS D0
|
|
#define SX126X_DIO1 D1
|
|
#define SX126X_BUSY D2
|
|
#define SX126X_RESET D3
|
|
|
|
// ----------------------------------------------------------------
|
|
|
|
// E22 Tx/Rx control options:
|
|
|
|
// 1. Let the E22 control Tx and Rx automagically via DIO2.
|
|
|
|
// * The E22's TXEN and DIO2 pins are connected to each other, but not to the MCU.
|
|
// * The E22's RXEN pin *is* connected to the MCU.
|
|
// * E22_TXEN_CONNECTED_TO_DIO2 is defined so the logic in SX126XInterface.cpp handles this configuration correctly.
|
|
|
|
#define SX126X_TXEN RADIOLIB_NC
|
|
#define SX126X_RXEN D7
|
|
|
|
// ------------------------------ OR ------------------------------
|
|
|
|
// 2. Control Tx and Rx manually.
|
|
|
|
// * The E22's TXEN and RXEN pins are both connected to the MCU.
|
|
|
|
// #define SX126X_TXEN D6
|
|
// #define SX126X_RXEN D7
|
|
|
|
// ----------------------------------------------------------------
|
|
|
|
#ifdef EBYTE_E22
|
|
// Internally the TTGO module hooks the SX126x-DIO2 in to control the TX/RX switch
|
|
// (which is the default for the sx1262interface code)
|
|
#define SX126X_DIO2_AS_RF_SWITCH
|
|
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
|
#endif
|
|
|
|
/*
|
|
* Wire Interfaces
|
|
*/
|
|
#define WIRE_INTERFACES_COUNT 1 // 2
|
|
|
|
#define PIN_WIRE_SDA (4)
|
|
#define PIN_WIRE_SCL (5)
|
|
|
|
static const uint8_t SDA = PIN_WIRE_SDA;
|
|
static const uint8_t SCL = PIN_WIRE_SCL;
|
|
|
|
#define PIN_LSM6DS3TR_C_POWER (15)
|
|
#define PIN_LSM6DS3TR_C_INT1 (18)
|
|
|
|
// PDM Interfaces
|
|
// ---------------
|
|
#define PIN_PDM_PWR (19)
|
|
#define PIN_PDM_CLK (20)
|
|
#define PIN_PDM_DIN (21)
|
|
|
|
// QSPI Pins
|
|
#define PIN_QSPI_SCK (24)
|
|
#define PIN_QSPI_CS (25)
|
|
#define PIN_QSPI_IO0 (26)
|
|
#define PIN_QSPI_IO1 (27)
|
|
#define PIN_QSPI_IO2 (28)
|
|
#define PIN_QSPI_IO3 (29)
|
|
|
|
// On-board QSPI Flash
|
|
#define EXTERNAL_FLASH_DEVICES P25Q16H
|
|
#define EXTERNAL_FLASH_USE_QSPI
|
|
|
|
// Battery
|
|
|
|
#define BAT_READ \
|
|
14 // P0_14 = 14 Reads battery voltage from divider on signal board. (PIN_VBAT is reading voltage divider on XIAO and is
|
|
// program pin 32 / or P0.31)
|
|
#define BATTERY_SENSE_RESOLUTION_BITS 10
|
|
#define CHARGE_LED 23 // P0_17 = 17 D23 YELLOW CHARGE LED
|
|
#define HICHG 22 // P0_13 = 13 D22 Charge-select pin for Lipo for 100 mA instead of default 50mA charge
|
|
|
|
// The battery sense is hooked to pin A0 (5)
|
|
#define BATTERY_PIN PIN_VBAT // PIN_A0
|
|
|
|
// ratio of voltage divider = 3.0 (R17=1M, R18=510k)
|
|
#define ADC_MULTIPLIER 3 // 3.0 + a bit for being optimistic
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/*----------------------------------------------------------------------------
|
|
* Arduino objects - C++ only
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
#endif
|