Faketec board support, including build targets
This commit is contained in:
78
boards/supermini_nrf52840.json
Normal file
78
boards/supermini_nrf52840.json
Normal file
@@ -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": "SuperMini nRF52840",
|
||||||
|
"mcu": "nrf52840",
|
||||||
|
"variant": "supermini_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": "Nologo SuperMini 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"
|
||||||
|
}
|
||||||
@@ -92,6 +92,10 @@
|
|||||||
#include <helpers/nrf52/TechoBoard.h>
|
#include <helpers/nrf52/TechoBoard.h>
|
||||||
#include <helpers/CustomSX1262Wrapper.h>
|
#include <helpers/CustomSX1262Wrapper.h>
|
||||||
static TechoBoard board;
|
static TechoBoard board;
|
||||||
|
#elif defined(FAKETEC)
|
||||||
|
#include <helpers/nrf52/faketecBoard.h>
|
||||||
|
#include <helpers/CustomSX1262Wrapper.h>
|
||||||
|
static faketecBoard board;
|
||||||
#else
|
#else
|
||||||
#error "need to provide a 'board' object"
|
#error "need to provide a 'board' object"
|
||||||
#endif
|
#endif
|
||||||
@@ -1290,7 +1294,9 @@ void setup() {
|
|||||||
sprintf(dev_name, "MeshCore-%s", the_mesh.getNodeName());
|
sprintf(dev_name, "MeshCore-%s", the_mesh.getNodeName());
|
||||||
serial_interface.begin(dev_name, the_mesh.getBLEPin());
|
serial_interface.begin(dev_name, the_mesh.getBLEPin());
|
||||||
#else
|
#else
|
||||||
|
#ifdef RAK_4631
|
||||||
pinMode(WB_IO2, OUTPUT);
|
pinMode(WB_IO2, OUTPUT);
|
||||||
|
#endif
|
||||||
serial_interface.begin(Serial);
|
serial_interface.begin(Serial);
|
||||||
#endif
|
#endif
|
||||||
the_mesh.startInterface(serial_interface);
|
the_mesh.startInterface(serial_interface);
|
||||||
|
|||||||
@@ -96,6 +96,10 @@
|
|||||||
#include <helpers/nrf52/TechoBoard.h>
|
#include <helpers/nrf52/TechoBoard.h>
|
||||||
#include <helpers/CustomSX1262Wrapper.h>
|
#include <helpers/CustomSX1262Wrapper.h>
|
||||||
static TechoBoard board;
|
static TechoBoard board;
|
||||||
|
#elif defined(FAKETEC)
|
||||||
|
#include <helpers/nrf52/faketecBoard.h>
|
||||||
|
#include <helpers/CustomSX1262Wrapper.h>
|
||||||
|
static faketecBoard board;
|
||||||
#else
|
#else
|
||||||
#error "need to provide a 'board' object"
|
#error "need to provide a 'board' object"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -100,6 +100,10 @@
|
|||||||
#include <helpers/nrf52/TechoBoard.h>
|
#include <helpers/nrf52/TechoBoard.h>
|
||||||
#include <helpers/CustomSX1262Wrapper.h>
|
#include <helpers/CustomSX1262Wrapper.h>
|
||||||
static TechoBoard board;
|
static TechoBoard board;
|
||||||
|
#elif defined(FAKETEC)
|
||||||
|
#include <helpers/nrf52/faketecBoard.h>
|
||||||
|
#include <helpers/CustomSX1262Wrapper.h>
|
||||||
|
static faketecBoard board;
|
||||||
#else
|
#else
|
||||||
#error "need to provide a 'board' object"
|
#error "need to provide a 'board' object"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -78,6 +78,10 @@
|
|||||||
#include <helpers/nrf52/T1000eBoard.h>
|
#include <helpers/nrf52/T1000eBoard.h>
|
||||||
#include <helpers/CustomLR1110Wrapper.h>
|
#include <helpers/CustomLR1110Wrapper.h>
|
||||||
static T1000eBoard board;
|
static T1000eBoard board;
|
||||||
|
#elif defined(FAKETEC)
|
||||||
|
#include <helpers/nrf52/faketecBoard.h>
|
||||||
|
#include <helpers/CustomSX1262Wrapper.h>
|
||||||
|
static faketecBoard board;
|
||||||
#else
|
#else
|
||||||
#error "need to provide a 'board' object"
|
#error "need to provide a 'board' object"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -947,3 +947,91 @@ build_src_filter = ${LilyGo_Techo.build_src_filter}
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${LilyGo_Techo.lib_deps}
|
${LilyGo_Techo.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
||||||
|
|
||||||
|
[faketec]
|
||||||
|
extends = nrf52840_base
|
||||||
|
board = supermini_nrf52840
|
||||||
|
#board_check = true
|
||||||
|
build_src_filter = ${nrf52840_base.build_src_filter} +<helpers/nrf52/faketecBoard.cpp>
|
||||||
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
|
-D FAKETEC
|
||||||
|
-D RADIO_CLASS=CustomSX1262
|
||||||
|
-D WRAPPER_CLASS=CustomSX1262Wrapper
|
||||||
|
-D LORA_TX_POWER=22
|
||||||
|
-D SX126X_CURRENT_LIMIT=130
|
||||||
|
|
||||||
|
[env:Faketec_Repeater]
|
||||||
|
extends = faketec
|
||||||
|
build_src_filter = ${faketec.build_src_filter} +<../examples/simple_repeater/main.cpp>
|
||||||
|
build_flags =
|
||||||
|
${faketec.build_flags}
|
||||||
|
-D ADVERT_NAME="\"Faketec Repeater\""
|
||||||
|
-D ADVERT_LAT=-37.0
|
||||||
|
-D ADVERT_LON=145.0
|
||||||
|
-D ADMIN_PASSWORD="\"password\""
|
||||||
|
; -D MESH_PACKET_LOGGING=1
|
||||||
|
; -D MESH_DEBUG=1
|
||||||
|
lib_deps =
|
||||||
|
${faketec.lib_deps}
|
||||||
|
adafruit/RTClib @ ^2.1.3
|
||||||
|
|
||||||
|
[env:Faketec_room_server]
|
||||||
|
extends = faketec
|
||||||
|
build_src_filter = ${faketec.build_src_filter} +<../examples/simple_room_server/main.cpp>
|
||||||
|
build_flags =
|
||||||
|
${faketec.build_flags}
|
||||||
|
-D ADVERT_NAME="\"Test Room\""
|
||||||
|
-D ADVERT_LAT=-37.0
|
||||||
|
-D ADVERT_LON=145.0
|
||||||
|
-D ADMIN_PASSWORD="\"password\""
|
||||||
|
-D ROOM_PASSWORD="\"hello\""
|
||||||
|
; -D MESH_PACKET_LOGGING=1
|
||||||
|
; -D MESH_DEBUG=1
|
||||||
|
lib_deps =
|
||||||
|
${faketec.lib_deps}
|
||||||
|
adafruit/RTClib @ ^2.1.3
|
||||||
|
|
||||||
|
[env:Faketec_terminal_chat]
|
||||||
|
extends = faketec
|
||||||
|
build_flags =
|
||||||
|
${faketec.build_flags}
|
||||||
|
-D MAX_CONTACTS=100
|
||||||
|
-D MAX_GROUP_CHANNELS=1
|
||||||
|
; -D MESH_PACKET_LOGGING=1
|
||||||
|
; -D MESH_DEBUG=1
|
||||||
|
build_src_filter = ${faketec.build_src_filter} +<../examples/simple_secure_chat/main.cpp>
|
||||||
|
lib_deps =
|
||||||
|
${faketec.lib_deps}
|
||||||
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
adafruit/RTClib @ ^2.1.3
|
||||||
|
|
||||||
|
[env:Faketec_companion_radio_usb]
|
||||||
|
extends = faketec
|
||||||
|
build_flags =
|
||||||
|
${faketec.build_flags}
|
||||||
|
-D MAX_CONTACTS=100
|
||||||
|
-D MAX_GROUP_CHANNELS=1
|
||||||
|
; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1
|
||||||
|
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
|
||||||
|
build_src_filter = ${faketec.build_src_filter} +<../examples/companion_radio/main.cpp>
|
||||||
|
lib_deps =
|
||||||
|
${faketec.lib_deps}
|
||||||
|
adafruit/RTClib @ ^2.1.3
|
||||||
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
||||||
|
[env:Faketec_companion_radio_ble]
|
||||||
|
extends = faketec
|
||||||
|
build_flags =
|
||||||
|
${faketec.build_flags}
|
||||||
|
-D MAX_CONTACTS=100
|
||||||
|
-D MAX_GROUP_CHANNELS=1
|
||||||
|
-D BLE_PIN_CODE=123456
|
||||||
|
-D BLE_DEBUG_LOGGING=1
|
||||||
|
; -D MESH_PACKET_LOGGING=1
|
||||||
|
; -D MESH_DEBUG=1
|
||||||
|
build_src_filter = ${faketec.build_src_filter} +<helpers/nrf52/SerialBLEInterface.cpp> +<../examples/companion_radio/main.cpp>
|
||||||
|
lib_deps =
|
||||||
|
${faketec.lib_deps}
|
||||||
|
adafruit/RTClib @ ^2.1.3
|
||||||
|
densaugeo/base64 @ ~1.4.0
|
||||||
63
src/helpers/nrf52/faketecBoard.cpp
Normal file
63
src/helpers/nrf52/faketecBoard.cpp
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
#include <Arduino.h>
|
||||||
|
#include "faketecBoard.h"
|
||||||
|
|
||||||
|
#include <bluefruit.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
|
||||||
|
static BLEDfu bledfu;
|
||||||
|
|
||||||
|
static void connect_callback(uint16_t conn_handle)
|
||||||
|
{
|
||||||
|
(void)conn_handle;
|
||||||
|
MESH_DEBUG_PRINTLN("BLE client connected");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void disconnect_callback(uint16_t conn_handle, uint8_t reason)
|
||||||
|
{
|
||||||
|
(void)conn_handle;
|
||||||
|
(void)reason;
|
||||||
|
|
||||||
|
MESH_DEBUG_PRINTLN("BLE client disconnected");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool faketecBoard::startOTAUpdate() {
|
||||||
|
// Config the peripheral connection with maximum bandwidth
|
||||||
|
// more SRAM required by SoftDevice
|
||||||
|
// Note: All config***() function must be called before begin()
|
||||||
|
Bluefruit.configPrphBandwidth(BANDWIDTH_MAX);
|
||||||
|
Bluefruit.configPrphConn(92, BLE_GAP_EVENT_LENGTH_MIN, 16, 16);
|
||||||
|
|
||||||
|
Bluefruit.begin(1, 0);
|
||||||
|
// Set max power. Accepted values are: -40, -30, -20, -16, -12, -8, -4, 0, 4
|
||||||
|
Bluefruit.setTxPower(4);
|
||||||
|
// Set the BLE device name
|
||||||
|
Bluefruit.setName("Faketec_OTA");
|
||||||
|
|
||||||
|
Bluefruit.Periph.setConnectCallback(connect_callback);
|
||||||
|
Bluefruit.Periph.setDisconnectCallback(disconnect_callback);
|
||||||
|
|
||||||
|
// To be consistent OTA DFU should be added first if it exists
|
||||||
|
bledfu.begin();
|
||||||
|
|
||||||
|
// Set up and start advertising
|
||||||
|
// Advertising packet
|
||||||
|
Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
|
||||||
|
Bluefruit.Advertising.addTxPower();
|
||||||
|
Bluefruit.Advertising.addName();
|
||||||
|
|
||||||
|
/* Start Advertising
|
||||||
|
- Enable auto advertising if disconnected
|
||||||
|
- Interval: fast mode = 20 ms, slow mode = 152.5 ms
|
||||||
|
- Timeout for fast mode is 30 seconds
|
||||||
|
- Start(timeout) with timeout = 0 will advertise forever (until connected)
|
||||||
|
|
||||||
|
For recommended advertising interval
|
||||||
|
https://developer.apple.com/library/content/qa/qa1931/_index.html
|
||||||
|
*/
|
||||||
|
Bluefruit.Advertising.restartOnDisconnect(true);
|
||||||
|
Bluefruit.Advertising.setInterval(32, 244); // in unit of 0.625 ms
|
||||||
|
Bluefruit.Advertising.setFastTimeout(30); // number of seconds in fast mode
|
||||||
|
Bluefruit.Advertising.start(0); // 0 = Don't stop advertising after n seconds
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
61
src/helpers/nrf52/faketecBoard.h
Normal file
61
src/helpers/nrf52/faketecBoard.h
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <MeshCore.h>
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#define P_LORA_NSS D13
|
||||||
|
#define P_LORA_DIO_1 D11
|
||||||
|
#define P_LORA_RESET D10
|
||||||
|
#define P_LORA_BUSY D16
|
||||||
|
#define P_LORA_MISO D15
|
||||||
|
#define P_LORA_SCLK D12
|
||||||
|
#define P_LORA_MOSI D14
|
||||||
|
#define SX126X_POWER_EN EXT_VCC
|
||||||
|
|
||||||
|
#define SX126X_DIO2_AS_RF_SWITCH true
|
||||||
|
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
||||||
|
|
||||||
|
#define PIN_VBAT_READ PIN_A2
|
||||||
|
#define ADC_MULTIPLIER (1.815) // dependent on voltage divider resistors. TODO: more accurate battery tracking
|
||||||
|
|
||||||
|
class faketecBoard : public mesh::MainBoard {
|
||||||
|
protected:
|
||||||
|
uint8_t startup_reason;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void begin() {
|
||||||
|
// for future use, sub-classes SHOULD call this from their begin()
|
||||||
|
startup_reason = BD_STARTUP_NORMAL;
|
||||||
|
|
||||||
|
pinMode(PIN_VBAT_READ, INPUT);
|
||||||
|
|
||||||
|
pinMode(SX126X_POWER_EN, OUTPUT);
|
||||||
|
digitalWrite(SX126X_POWER_EN, HIGH);
|
||||||
|
delay(10); // give sx1262 some time to power up
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t getStartupReason() const override { return startup_reason; }
|
||||||
|
|
||||||
|
#define BATTERY_SAMPLES 8
|
||||||
|
|
||||||
|
uint16_t getBattMilliVolts() override {
|
||||||
|
analogReadResolution(12);
|
||||||
|
|
||||||
|
uint32_t raw = 0;
|
||||||
|
for (int i = 0; i < BATTERY_SAMPLES; i++) {
|
||||||
|
raw += analogRead(PIN_VBAT_READ);
|
||||||
|
}
|
||||||
|
raw = raw / BATTERY_SAMPLES;
|
||||||
|
return (ADC_MULTIPLIER * raw);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* getManufacturerName() const override {
|
||||||
|
return "Faketec DIY";
|
||||||
|
}
|
||||||
|
|
||||||
|
void reboot() override {
|
||||||
|
NVIC_SystemReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool startOTAUpdate() override;
|
||||||
|
};
|
||||||
52
variants/supermini_nrf52840/variant.cpp
Normal file
52
variants/supermini_nrf52840/variant.cpp
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
#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);
|
||||||
|
}
|
||||||
|
|
||||||
176
variants/supermini_nrf52840/variant.h
Normal file
176
variants/supermini_nrf52840/variant.h
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
#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
|
||||||
Reference in New Issue
Block a user