mirror of
https://github.com/meshtastic/firmware.git
synced 2025-02-03 03:09:59 +00:00
32fea4cbd7
Build tested on RAK4631 with battery and their solar panel box. This is from the log: 17:40:30 102 [Power] Battery: usbPower=0, isCharging=0, batMv=4164, batPct=96 Note that mV reading and Pct is ok. It does not detect being connected to USB and charging. Also tested on TBEAM where it seems to be ok. There still seems to be a problem with the FW for this board that it goes to sleep for ever after running for a few hours.
203 lines
5.7 KiB
C
203 lines
5.7 KiB
C
/*
|
|
Copyright (c) 2014-2015 Arduino LLC. All right reserved.
|
|
Copyright (c) 2016 Sandeep Mistry All right reserved.
|
|
Copyright (c) 2018, Adafruit Industries (adafruit.com)
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the GNU Lesser General Public License for more details.
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef _VARIANT_RAK4630_
|
|
#define _VARIANT_RAK4630_
|
|
|
|
#define RAK4630
|
|
|
|
/** 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
|
|
|
|
// Number of pins defined in PinDescription array
|
|
#define PINS_COUNT (48)
|
|
#define NUM_DIGITAL_PINS (48)
|
|
#define NUM_ANALOG_INPUTS (6)
|
|
#define NUM_ANALOG_OUTPUTS (0)
|
|
|
|
// LEDs
|
|
#define PIN_LED1 (35)
|
|
#define PIN_LED2 (36)
|
|
|
|
#define LED_BUILTIN PIN_LED1
|
|
#define LED_CONN PIN_LED2
|
|
|
|
#define LED_GREEN PIN_LED1
|
|
#define LED_BLUE PIN_LED2
|
|
|
|
#define LED_STATE_ON 1 // State when LED is litted
|
|
|
|
/*
|
|
* Buttons
|
|
*/
|
|
#define PIN_BUTTON1 11
|
|
#define PIN_BUTTON2 12
|
|
#define PIN_BUTTON3 24
|
|
#define PIN_BUTTON4 25
|
|
|
|
/*
|
|
* Analog pins
|
|
*/
|
|
#define PIN_A0 (5)
|
|
#define PIN_A1 (31)
|
|
#define PIN_A2 (28)
|
|
#define PIN_A3 (29)
|
|
#define PIN_A4 (30)
|
|
#define PIN_A5 (31)
|
|
#define PIN_A6 (0xff)
|
|
#define PIN_A7 (0xff)
|
|
|
|
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;
|
|
static const uint8_t A6 = PIN_A6;
|
|
static const uint8_t A7 = PIN_A7;
|
|
#define ADC_RESOLUTION 14
|
|
|
|
// Other pins
|
|
#define PIN_AREF (2)
|
|
#define PIN_NFC1 (9)
|
|
#define PIN_NFC2 (10)
|
|
|
|
static const uint8_t AREF = PIN_AREF;
|
|
|
|
/*
|
|
* Serial interfaces
|
|
*/
|
|
#define PIN_SERIAL1_RX (15)
|
|
#define PIN_SERIAL1_TX (16)
|
|
|
|
// Connected to Jlink CDC
|
|
#define PIN_SERIAL2_RX (8)
|
|
#define PIN_SERIAL2_TX (6)
|
|
|
|
/*
|
|
* SPI Interfaces
|
|
*/
|
|
#define SPI_INTERFACES_COUNT 1
|
|
|
|
#define PIN_SPI_MISO (45)
|
|
#define PIN_SPI_MOSI (44)
|
|
#define PIN_SPI_SCK (43)
|
|
|
|
static const uint8_t SS = 42;
|
|
static const uint8_t MOSI = PIN_SPI_MOSI;
|
|
static const uint8_t MISO = PIN_SPI_MISO;
|
|
static const uint8_t SCK = PIN_SPI_SCK;
|
|
|
|
/*
|
|
* Wire Interfaces
|
|
*/
|
|
#define WIRE_INTERFACES_COUNT 1
|
|
|
|
#define PIN_WIRE_SDA (13)
|
|
#define PIN_WIRE_SCL (14)
|
|
|
|
// QSPI Pins
|
|
#define PIN_QSPI_SCK 3
|
|
#define PIN_QSPI_CS 26
|
|
#define PIN_QSPI_IO0 30
|
|
#define PIN_QSPI_IO1 29
|
|
#define PIN_QSPI_IO2 28
|
|
#define PIN_QSPI_IO3 2
|
|
|
|
// On-board QSPI Flash
|
|
#define EXTERNAL_FLASH_DEVICES IS25LP080D
|
|
#define EXTERNAL_FLASH_USE_QSPI
|
|
|
|
/* @note RAK5005-O GPIO mapping to RAK4631 GPIO ports
|
|
RAK5005-O <-> nRF52840
|
|
IO1 <-> P0.17 (Arduino GPIO number 17)
|
|
IO2 <-> P1.02 (Arduino GPIO number 34)
|
|
IO3 <-> P0.21 (Arduino GPIO number 21)
|
|
IO4 <-> P0.04 (Arduino GPIO number 4)
|
|
IO5 <-> P0.09 (Arduino GPIO number 9)
|
|
IO6 <-> P0.10 (Arduino GPIO number 10)
|
|
SW1 <-> P0.01 (Arduino GPIO number 1)
|
|
A0 <-> P0.04/AIN2 (Arduino Analog A2
|
|
A1 <-> P0.31/AIN7 (Arduino Analog A7
|
|
SPI_CS <-> P0.26 (Arduino GPIO number 26)
|
|
*/
|
|
|
|
// RAK4630 LoRa module
|
|
#define SX1262_CS (42)
|
|
#define SX1262_DIO1 (47)
|
|
#define SX1262_BUSY (46)
|
|
#define SX1262_RESET (38)
|
|
#define SX1262_TXEN (39)
|
|
#define SX1262_RXEN (37)
|
|
#define SX1262_E22 // DIO2 controlls an antenna switch and the TCXO voltage is controlled by DIO3
|
|
|
|
// RAK1910 GPS module
|
|
// If using the wisblock GPS module and pluged into Port A on WisBlock base
|
|
// IO1 is hooked to PPS (pin 12 on header) = gpio 17
|
|
// IO2 is hooked to GPS RESET = gpio 34, but it can not be used to this because IO2 is ALSO used to control 3V3_S power (1 is on).
|
|
// Therefore must be 1 to keep peripherals powered
|
|
// Power is on the controllable 3V3_S rail
|
|
// #define PIN_GPS_RESET (34)
|
|
#define PIN_GPS_EN (34)
|
|
#define PIN_GPS_PPS (17) // Pulse per second input from the GPS
|
|
#define GPS_RX_PIN PIN_SERIAL1_RX
|
|
#define GPS_TX_PIN PIN_SERIAL1_TX
|
|
|
|
// Battery
|
|
// The battery sense is hooked to pin A0 (5)
|
|
#define BATTERY_PIN PIN_A0
|
|
// and has 12 bit resolution
|
|
#define BATTERY_SENSE_RESOLUTION_BITS 12
|
|
#define BATTERY_SENSE_RESOLUTION 4096.0
|
|
// Definition of milliVolt per LSB => 3.0V ADC range and 12-bit ADC resolution = 3000mV/4096
|
|
#define VBAT_MV_PER_LSB (0.73242188F)
|
|
// Voltage divider value => 1.5M + 1M voltage divider on VBAT = (1.5M / (1M + 1.5M))
|
|
#define VBAT_DIVIDER (0.4F)
|
|
// Compensation factor for the VBAT divider
|
|
#define VBAT_DIVIDER_COMP (1.73)
|
|
// Fixed calculation of milliVolt from compensation value
|
|
#define REAL_VBAT_MV_PER_LSB (VBAT_DIVIDER_COMP * VBAT_MV_PER_LSB)
|
|
#undef AREF_VOLTAGE
|
|
#define AREF_VOLTAGE 3.0
|
|
#define VBAT_AR_INTERNAL AR_INTERNAL_3_0
|
|
#define ADC_MULTIPLIER VBAT_DIVIDER_COMP //REAL_VBAT_MV_PER_LSB
|
|
#define VBAT_RAW_TO_SCALED(x) (REAL_VBAT_MV_PER_LSB * x)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/*----------------------------------------------------------------------------
|
|
* Arduino objects - C++ only
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
#endif
|