diff --git a/boards/promicro_nrf52840.json b/boards/promicro_nrf52840.json new file mode 100644 index 00000000..346f0f26 --- /dev/null +++ b/boards/promicro_nrf52840.json @@ -0,0 +1,78 @@ +{ + "build": { + "arduino":{ + "ldscript": "nrf52840_s140_v6.ld" + }, + "core": "nRF5", + "cpu": "cortex-m4", + "extra_flags": "-DARDUINO_NRF52840_FEATHER -DNRF52840_XXAA", + "f_cpu": "64000000L", + "hwids": [ + [ + "0x239A", + "0x00B3" + ], + [ + "0x239A", + "0x8029" + ], + [ + "0x239A", + "0x0029" + ], + [ + "0x239A", + "0x002A" + ], + [ + "0x239A", + "0x802A" + ] + ], + "usb_product": "ProMicro NRF52840", + "mcu": "nrf52840", + "variant": "promicro_nrf52840", + "variants_dir": "variants", + "bsp": { + "name": "adafruit" + }, + "softdevice": { + "sd_flags": "-DS140", + "sd_name": "s140", + "sd_version": "6.1.1", + "sd_fwid": "0x00B6" + }, + "bootloader": { + "settings_addr": "0xFF000" + } + }, + "connectivity": [ + "bluetooth" + ], + "debug": { + "jlink_device": "nRF52840_xxAA", + "svd_path": "nrf52840.svd" + }, + "frameworks": [ + "arduino", + "zephyr" + ], + "name": "ProMicro NRF52840", + "upload": { + "maximum_ram_size": 248832, + "maximum_size": 815104, + "speed": 115200, + "protocol": "nrfutil", + "protocols": [ + "jlink", + "nrfjprog", + "nrfutil", + "stlink" + ], + "use_1200bps_touch": true, + "require_upload_port": true, + "wait_for_upload_port": true + }, + "url": "https://www.nologo.tech/en/product/otherboard/NRF52840.html", + "vendor": "Nologo" + } \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index a3abb38e..5e22eb56 100644 --- a/platformio.ini +++ b/platformio.ini @@ -951,8 +951,7 @@ lib_deps = [faketec] extends = nrf52840_base -board = supermini_nrf52840 -#board_check = true +board = promicro_nrf52840 build_src_filter = ${nrf52840_base.build_src_filter} + build_flags = ${nrf52840_base.build_flags} -D FAKETEC diff --git a/src/helpers/nrf52/faketecBoard.h b/src/helpers/nrf52/faketecBoard.h index cd4a73ff..b5cebb78 100644 --- a/src/helpers/nrf52/faketecBoard.h +++ b/src/helpers/nrf52/faketecBoard.h @@ -4,20 +4,20 @@ #include #include -#define P_LORA_NSS D13 //P1.13 45 -#define P_LORA_DIO_1 D11 //P0.10 10 -#define P_LORA_RESET D10 //P0.09 9 -#define P_LORA_BUSY D16 //P0.29 29 -#define P_LORA_MISO D15 //P0.02 2 -#define P_LORA_SCLK D12 //P1.11 43 -#define P_LORA_MOSI D14 //P1.15 47 -#define SX126X_POWER_EN EXT_VCC //P0.13 13 -#define SX126X_RXEN D2 //P0.17 +#define P_LORA_NSS 13 //P1.13 45 +#define P_LORA_DIO_1 11 //P0.10 10 +#define P_LORA_RESET 10 //P0.09 9 +#define P_LORA_BUSY 16 //P0.29 29 +#define P_LORA_MISO 15 //P0.02 2 +#define P_LORA_SCLK 12 //P1.11 43 +#define P_LORA_MOSI 14 //P1.15 47 +#define SX126X_POWER_EN 21 //P0.13 13 +#define SX126X_RXEN 2 //P0.17 #define SX126X_TXEN RADIOLIB_NC #define SX126X_DIO2_AS_RF_SWITCH true #define SX126X_DIO3_TCXO_VOLTAGE (1.8f) -#define PIN_VBAT_READ PIN_A2 +#define PIN_VBAT_READ 17 #define ADC_MULTIPLIER (1.815f) // dependent on voltage divider resistors. TODO: more accurate battery tracking class faketecBoard : public mesh::MainBoard { diff --git a/variants/promicro_nrf52840/variant.cpp b/variants/promicro_nrf52840/variant.cpp new file mode 100644 index 00000000..0a4c3aac --- /dev/null +++ b/variants/promicro_nrf52840/variant.cpp @@ -0,0 +1,15 @@ +#include "variant.h" +#include "wiring_constants.h" +#include "wiring_digital.h" + +const uint32_t g_ADigitalPinMap[] = { + 8, 6, 17, 20, 22, 24, 32, 11, 36, 38, + 9, 10, 43, 45, 47, 2, 29, 31, + 33, 34, 37, + 13, 15 +}; + +void initVariant() +{ +} + diff --git a/variants/promicro_nrf52840/variant.h b/variants/promicro_nrf52840/variant.h new file mode 100644 index 00000000..98489da1 --- /dev/null +++ b/variants/promicro_nrf52840/variant.h @@ -0,0 +1,82 @@ +/* + * variant.h + * Copyright (C) 2023 Seeed K.K. + * MIT License + */ + + #pragma once + + #include "WVariant.h" + + //////////////////////////////////////////////////////////////////////////////// + // Low frequency clock source + +#define VARIANT_MCK (64000000ul) + +//#define USE_LFXO // 32.768 kHz crystal oscillator +#define USE_LFRC // 32.768 kHz RC oscillator + +//////////////////////////////////////////////////////////////////////////////// +// Power + +#define PIN_EXT_VCC (21) +#define EXT_VCC (PIN_EXT_VCC) + +#define BATTERY_PIN (17) +#define ADC_RESOLUTION 12 + +//////////////////////////////////////////////////////////////////////////////// +// Number of pins + +#define PINS_COUNT (23) +#define NUM_DIGITAL_PINS (23) +#define NUM_ANALOG_INPUTS (3) +#define NUM_ANALOG_OUTPUTS (0) + +//////////////////////////////////////////////////////////////////////////////// +// UART pin definition + +#define PIN_SERIAL1_TX (1) +#define PIN_SERIAL1_RX (0) + +//////////////////////////////////////////////////////////////////////////////// +// I2C pin definition + +#define WIRE_INTERFACES_COUNT 2 + +#define PIN_WIRE_SDA (6) +#define PIN_WIRE_SCL (7) +#define PIN_WIRE1_SDA (13) +#define PIN_WIRE1_SCL (14) + +//////////////////////////////////////////////////////////////////////////////// +// SPI pin definition + +#define SPI_INTERFACES_COUNT 2 + +#define PIN_SPI_SCK (2) +#define PIN_SPI_MISO (3) +#define PIN_SPI_MOSI (4) + +#define PIN_SPI_NSS (5) + +#define PIN_SPI1_SCK (18) +#define PIN_SPI1_MISO (19) +#define PIN_SPI1_MOSI (20) + +//////////////////////////////////////////////////////////////////////////////// +// Builtin LEDs + +#define PIN_LED (22) +#define LED_PIN PIN_LED +#define LED_BLUE PIN_LED +#define LED_BUILTIN PIN_LED +#define LED_STATE_ON 1 + +//////////////////////////////////////////////////////////////////////////////// +// Builtin buttons + +#define PIN_BUTTON1 (6) +#define BUTTON_PIN PIN_BUTTON1 + + diff --git a/variants/supermini_nrf52840/variant.cpp b/variants/supermini_nrf52840/variant.cpp deleted file mode 100644 index 2e832f31..00000000 --- a/variants/supermini_nrf52840/variant.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include "variant.h" -#include "wiring_constants.h" -#include "wiring_digital.h" -#include "nrf.h" - -const uint32_t g_ADigitalPinMap[] = -{ - // D0 - D9 (left side, top to bottom) - 6, // D0 is P0.06 (D0, TX) - 8, // D1 is P0.08 (D1, RX) - 17, // D2 is P0.17 (D2, SCK) - 20, // D3 is P0.20 (D3, MISO) - 22, // D4 is P0.22 (D4, MOSI) - 24, // D5 is P0.24 (D5, CS) - 32, // D6 is P1.00 (D6, SDA) - 11, // D7 is P0.11 (D7, SCL) - 36, // D8 is P1.04 (D8) - 38, // D9 is P1.06 (D9) - - // D10 - D17 (right side, bottom to top) - 9, // D10 is P0.09 (D10, NFC1) - 10, // D11 is P0.10 (D11, NFC2) - 43, // D12 is P1.11 (D12) - 45, // D13 is P1.13 (D13, SDA1) - 47, // D14 is P1.15 (D14, SCL1) - 2, // D15 is P0.02 (D15, A0) - 29, // D16 is P0.29 (D16, A1) - 31, // D17 is P0.31 (D17, A2) - - // D18 - D20 (extra center pins, left to right) - 33, // D18 is P1.01 (D18, SCK1) - 34, // D19 is P1.02 (D19, MISO1) - 39, // D20 is P1.07 (D20, MOSI1) - - // EXT_VCC - 13, // 'D21' is P0.13 (EXT_VCC) [active high] - - // LED - 15, // 'D22' is P0.15 (LED) -}; - -void initVariant() -{ - // enable EXT_VCC by default - pinMode(EXT_VCC, OUTPUT); - digitalWrite(EXT_VCC, HIGH); - - // enable LED by default - pinMode(LED_BUILTIN, OUTPUT); - digitalWrite(LED_BUILTIN, HIGH); -} - diff --git a/variants/supermini_nrf52840/variant.h b/variants/supermini_nrf52840/variant.h deleted file mode 100644 index b7b59c8e..00000000 --- a/variants/supermini_nrf52840/variant.h +++ /dev/null @@ -1,176 +0,0 @@ -#ifndef _SUPERMINI_NRF52840_H_ -#define _SUPERMINI_NRF52840_H_ - -#define TARGET_SUPERMINI_NRF52840 - -/** 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 (23) -#define NUM_DIGITAL_PINS (23) -#define NUM_ANALOG_INPUTS (3) -#define NUM_ANALOG_OUTPUTS (0) - -// NOTE: -// -// BATTERY VOLTAGE IS READ VIA VDDH/5 BY CALLING -// -// analogReadVDDHDIV5() // returns uint32_t - -// 3V3 Regulator Disable -#define PIN_EXT_VCC (21) // EXT_VCC is P0.13 (set low to disable 3v3) -#define EXT_VCC (PIN_EXT_VCC) - -// LEDs -#define PIN_LED (22) // USR LED is P0.15 -#define LED_PWR (PINS_COUNT) // no LED_PWR -#define PIN_NEOPIXEL (PINS_COUNT) // no neopixel -#define NEOPIXEL_NUM 0 -#define LED_BLUE PIN_LED // required by bluefruit library - -#define LED_BUILTIN PIN_LED - -#define LED_STATE_ON 1 // State when LED is on - -/* - * Buttons - */ -#define PIN_BUTTON1 (PINS_COUNT) // no button - -// Digital PINs -// NOTE: THIS IS A RENUMBERING OF THE PINS -// AND DOES NOT CORRESPOND TO THE NICENANO DIAGRAM - -// left side (top to bottom) -#define D0 (0ul) // P0.06 (TX) -#define D1 (1ul) // P0.08 (RX) -#define D2 (2ul) // P0.17 (SCK) -#define D3 (3ul) // P0.20 (MISO) -#define D4 (4ul) // P0.22 (MOSI) -#define D5 (5ul) // P0.24 (CS) -#define D6 (6ul) // P1.00 (SDA) -#define D7 (7ul) // P0.11 (SCL) -#define D8 (8ul) // P1.04 -#define D9 (9ul) // P1.06 - -// right side (bottom to top) -#define D10 (10ul) // P0.09 (NFC1) -#define D11 (11ul) // P0.10 (NFC2) -#define D12 (12ul) // P1.11 -#define D13 (13ul) // P1.13 (SDA1) -#define D14 (14ul) // P1.15 (SCL1) -#define D15 (15ul) // P0.02/AIN0 (A0) -#define D16 (16ul) // P0.29/AIN6 (A1) -#define D17 (17ul) // P0.31/AIN7 (A2) - -// extra center pins (left to right) -#define D18 (18ul) // P1.01 (SCK1) -#define D19 (19ul) // P1.02 (MISO1) -#define D20 (20ul) // P1.07 (MOSI1) - -/* - * Macros for nRF pin numbers for compatibility - */ -#define P0_06 (D0) -#define P0_08 (D1) -#define P0_17 (D2) -#define P0_20 (D3) -#define P0_22 (D4) -#define P0_24 (D5) -#define P1_00 (D6) -#define P0_11 (D7) -#define P1_04 (D8) -#define P1_06 (D9) -#define P0_09 (D10) -#define P0_10 (D11) -#define P1_11 (D12) -#define P1_13 (D13) -#define P1_15 (D14) -#define P0_02 (D15) -#define P0_29 (D16) -#define P0_31 (D17) -#define P1_01 (D18) -#define P1_02 (D19) -#define P1_07 (D20) -#define P0_13 (EXT_VCC) -#define P0_15 (PIN_LED) - -/* - * Analog pins - */ -#define PIN_A0 (15) // P0.02 (D15) -#define PIN_A1 (16) // P0.29 (D16) -#define PIN_A2 (17) // P0.31 (D17) - -static const uint8_t A0 = PIN_A0 ; -static const uint8_t A1 = PIN_A1 ; -static const uint8_t A2 = PIN_A2 ; -#define ADC_RESOLUTION 12 - -/* - * Other pins - */ -#define PIN_NFC1 (10) // P0.09 - also D10 -#define PIN_NFC2 (11) // P0.10 - also D11 - -/* - * Serial interfaces - */ -#define PIN_SERIAL1_TX (0) // P0.06 - also D0 -#define PIN_SERIAL1_RX (1) // P0.08 - also D1 - -/* - * SPI Interfaces - */ -#define SPI_INTERFACES_COUNT 2 - -#define PIN_SPI_SCK (2) // P0.17 - D2 -#define PIN_SPI_MISO (3) // P0.20 - D3 -#define PIN_SPI_MOSI (4) // P0.22 - D4 - -static const uint8_t SS = (5); // P0.24 - D5 -static const uint8_t MOSI = PIN_SPI_MOSI ; -static const uint8_t MISO = PIN_SPI_MISO ; -static const uint8_t SCK = PIN_SPI_SCK ; - -#define PIN_SPI1_SCK (18) // P1.01 - D18 -#define PIN_SPI1_MISO (19) // P1.02 - D19 -#define PIN_SPI1_MOSI (20) // P1.07 - D20 - -/* - * Wire Interfaces - */ -#define WIRE_INTERFACES_COUNT 2 - -#define PIN_WIRE_SDA (6) // P1.00 - D6 -#define PIN_WIRE_SCL (7) // P0.11 - D7 - -static const uint8_t SDA = PIN_WIRE_SDA; -static const uint8_t SCL = PIN_WIRE_SCL; - -#define PIN_WIRE1_SDA (13) // P1.13 - D13 -#define PIN_WIRE1_SCL (14) // P1.15 - D14 - -#ifdef __cplusplus -} -#endif - -/*---------------------------------------------------------------------------- - * Arduino objects - C++ only - *----------------------------------------------------------------------------*/ - -#endif