Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions boards.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1074,6 +1074,92 @@ seeed52840sense.menu.bootloader.none.bootloader.flags=
seeed52840sense.menu.bootloader.none.build.bootloader.file=tools/none_bootloader.hex


# Arduino

nano33blesense.name=Arduino Nano 33 BLE Sense

nano33blesense.vid.0=0x2341
nano33blesense.pid.0=0x805a
nano33blesense.vid.1=0x2341
nano33blesense.pid.1=0x005a
nano33blesense.vid.2=0x2341
nano33blesense.pid.2=0x025a
nano33blesense.vid.3=0x2341
nano33blesense.pid.3=0x015a

nano33blesense.upload.tool=openocd
nano33blesense.upload.target=nrf52
nano33blesense.upload.jlink_device=nRF52840_xxAA
nano33blesense.upload.use_1200bps_touch=true
nano33blesense.upload.wait_for_upload_port=true
nano33blesense.upload.maximum_size=1032192
nano33blesense.upload.maximum_data_size=262144
nano33blesense.bootloader.tool=openocd

nano33blesense.build.dfu_pattern={adafruit-nrfutil.dfu_pattern}
nano33blesense.build.mcu=cortex-m4
nano33blesense.build.f_cpu=64000000
nano33blesense.build.board=ARDUINO_NANO33BLE_SENSE
nano33blesense.build.core=nRF5
nano33blesense.build.variant=Arduino_Nano33BLE_Sense
nano33blesense.build.variant_system_lib=
nano33blesense.build.usb_manufacturer="Arduino"
nano33blesense.build.usb_product="Nano 33 BLE Sense"
nano33blesense.build.vid=0x2341
nano33blesense.build.pid=0x805a
nano33blesense.build.float_flags=-mfloat-abi=hard -mfpu=fpv4-sp-d16
nano33blesense.build.extra_flags=-DNRF52_SERIES -DNRF52840_XXAA {bootloader.flags} {build.flags.usb} -DCONFIG_NIMBLE_CPP_LOG_LEVEL={build.cpp_debug} {build.nimble_flags}
nano33blesense.build.ldscript=nrf52840_xxaa.ld

nano33blesense.menu.role.all=All
nano33blesense.menu.role.all.build.nimble_flags=
nano33blesense.menu.role.periph=Peripheral
nano33blesense.menu.role.periph.build.nimble_flags=-DCONFIG_BT_NIMBLE_ROLE_CENTRAL_DISABLED -DCONFIG_BT_NIMBLE_ROLE_OBSERVER_DISABLED
nano33blesense.menu.role.adv=Advertiser
nano33blesense.menu.role.adv.build.nimble_flags=-DCONFIG_BT_NIMBLE_ROLE_CENTRAL_DISABLED -DCONFIG_BT_NIMBLE_ROLE_OBSERVER_DISABLED -DCONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED
nano33blesense.menu.role.scan=Scanner
nano33blesense.menu.role.scan.build.nimble_flags=-DCONFIG_BT_NIMBLE_ROLE_CENTRAL_DISABLED -DCONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED -DCONFIG_BT_NIMBLE_ROLE_CENTRAL_DISABLED
nano33blesense.menu.role.central=Client
nano33blesense.menu.role.central.build.nimble_flags=-DCONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED -DCONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED

nano33blesense.menu.cppDbgLvl.none=None
nano33blesense.menu.cppDbgLvl.none.build.cpp_debug=0
nano33blesense.menu.cppDbgLvl.error=Error
nano33blesense.menu.cppDbgLvl.error.build.cpp_debug=1
nano33blesense.menu.cppDbgLvl.warn=Warn
nano33blesense.menu.cppDbgLvl.warn.build.cpp_debug=2
nano33blesense.menu.cppDbgLvl.info=Info
nano33blesense.menu.cppDbgLvl.info.build.cpp_debug=3
nano33blesense.menu.cppDbgLvl.debug=Debug
nano33blesense.menu.cppDbgLvl.debug.build.cpp_debug=4

nano33blesense.menu.bootloader.adafruit_ble=Adafruit BLE (s140 v7 softdevice)
nano33blesense.menu.bootloader.adafruit_ble.bootloader.flags=-DUSE_ADA_BL -DADA_SD_BL
nano33blesense.menu.bootloader.adafruit_ble.upload.tool=adafruit-nrfutil
nano33blesense.menu.bootloader.adafruit_ble.upload.protocol=adafruit-nrfutil
nano33blesense.menu.bootloader.adafruit_ble.upload.tool=adafruit-nrfutil
nano33blesense.menu.bootloader.adafruit_ble.upload.maximum_size=823296
nano33blesense.menu.bootloader.adafruit_ble.upload.maximum_data_size=237568
nano33blesense.menu.bootloader.adafruit_ble.build.dfu_pattern={adafruit-nrfutil.dfu_pattern}
nano33blesense.menu.bootloader.adafruit_ble.build.bootloader.file=tools/nrf52840_s140_v7_adabl.hex
nano33blesense.menu.bootloader.adafruit_ble.build.ldscript=nrf52840_s140_v7_adabl.ld

nano33blesense.menu.bootloader.adafruit_serial=Adafruit Serial (no softdevice)
nano33blesense.menu.bootloader.adafruit_serial.bootloader.flags=-DUSE_ADA_BL
nano33blesense.menu.bootloader.adafruit_serial.upload.tool=adafruit-nrfutil
nano33blesense.menu.bootloader.adafruit_serial.upload.protocol=adafruit-nrfutil
nano33blesense.menu.bootloader.adafruit_serial.upload.tool=adafruit-nrfutil
nano33blesense.menu.bootloader.adafruit_serial.upload.maximum_size=978944
nano33blesense.menu.bootloader.adafruit_serial.upload.maximum_data_size=262136
nano33blesense.menu.bootloader.adafruit_serial.build.dfu_pattern={adafruit-nrfutil.dfu_pattern}
nano33blesense.menu.bootloader.adafruit_serial.build.bootloader.file=tools/nrf52840_serial_adabl.hex
nano33blesense.menu.bootloader.adafruit_serial.build.ldscript=nrf52840_serial_adabl.ld

nano33blesense.menu.bootloader.none=No bootloader
nano33blesense.menu.bootloader.none.bootloader.flags=
nano33blesense.menu.bootloader.none.build.bootloader.file=tools/none_bootloader.hex


# Adafruit

feather52840.name=Adafruit Feather nRF52840 Express
Expand Down
68 changes: 68 additions & 0 deletions variants/Arduino_Nano33BLE_Sense/variant.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#include "variant.h"
#include "wiring_constants.h"
#include "wiring_digital.h"
#include "nrf.h"

const uint32_t g_ADigitalPinMap[] =
{
// D0 .. D13
35, // D0 is P1.03 (TX)
42, // D1 is P1.10 (RX)
43, // D2 is P1.11
44, // D3 is P1.12
47, // D4 is P1.15
45, // D5 is P1.13
46, // D6 is P1.14
23, // D7 is P0.23
21, // D8 is P0.21
27, // D9 is P0.27
34, // D10 is P1.02 (SS)
33, // D11 is P1.01 (MOSI)
40, // D12 is P1.08 (MISO)
13, // D13 is P0.13 (SCK / LED_BUILTIN)

// A0 .. A7 (D14 .. D21)
4, // D14 is P0.04 (A0)
5, // D15 is P0.05 (A1)
30, // D16 is P0.30 (A2)
29, // D17 is P0.29 (A3)
31, // D18 is P0.31 (A4 / SDA)
2, // D19 is P0.02 (A5 / SCL)
28, // D20 is P0.28 (A6)
3, // D21 is P0.03 (A7)

// LEDs (D22 .. D25)
24, // D22 is P0.24 (LED_RED)
16, // D23 is P0.16 (LED_GREEN)
6, // D24 is P0.06 (LED_BLUE)
41, // D25 is P1.09 (LED_PWR)

// Interrupt (D26)
19, // D26 is P0.19 (INT_APDS)

// PDM microphone (D27 .. D29)
17, // D27 is P0.17 (PDM_PWR)
26, // D28 is P0.26 (PDM_CLK)
25, // D29 is P0.25 (PDM_DIN)

// Internal I2C for sensors (D30 .. D31)
14, // D30 is P0.14 (Wire1 SDA)
15, // D31 is P0.15 (Wire1 SCL)

// Internal power control (D32 .. D33)
32, // D32 is P1.00 (I2C pull-up enable)
22, // D33 is P0.22 (VDD_ENV / sensors 3V3 enable)
};

void initVariant()
{
// Turn on the power LED
pinMode(LED_PWR, OUTPUT);
digitalWrite(LED_PWR, HIGH);

// Enable 3.3V power rail and I2C pull-ups for the onboard sensors
pinMode(PIN_ENABLE_SENSORS_3V3, OUTPUT);
pinMode(PIN_ENABLE_I2C_PULLUP, OUTPUT);
digitalWrite(PIN_ENABLE_SENSORS_3V3, HIGH);
digitalWrite(PIN_ENABLE_I2C_PULLUP, HIGH);
}
138 changes: 138 additions & 0 deletions variants/Arduino_Nano33BLE_Sense/variant.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
#ifndef _ARDUINO_NANO33BLE_SENSE_H_
#define _ARDUINO_NANO33BLE_SENSE_H_

#define TARGET_ARDUINO_NANO33BLE_SENSE

/** 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 (34)
#define NUM_DIGITAL_PINS (34)
#define NUM_ANALOG_INPUTS (8)
#define NUM_ANALOG_OUTPUTS (0)

// LEDs
#define PIN_LED (13u)
#define LED_BUILTIN PIN_LED

#define LED_RED (22u)
#define LED_GREEN (23u)
#define LED_BLUE (24u)
#define LED_PWR (25u)

#define LED_STATE_ON (1) // State when LED is litted

// Buttons
#define PIN_BUTTON1 (PINS_COUNT)

// Digital pins
static const uint8_t D0 = 0;
static const uint8_t D1 = 1;
static const uint8_t D2 = 2;
static const uint8_t D3 = 3;
static const uint8_t D4 = 4;
static const uint8_t D5 = 5;
static const uint8_t D6 = 6;
static const uint8_t D7 = 7;
static const uint8_t D8 = 8;
static const uint8_t D9 = 9;
static const uint8_t D10 = 10;
static const uint8_t D11 = 11;
static const uint8_t D12 = 12;
static const uint8_t D13 = 13;

// Analog pins
#define PIN_A0 (14u)
#define PIN_A1 (15u)
#define PIN_A2 (16u)
#define PIN_A3 (17u)
#define PIN_A4 (18u)
#define PIN_A5 (19u)
#define PIN_A6 (20u)
#define PIN_A7 (21u)

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 (12)

// Serial interfaces
#ifndef USB_CDC_DEFAULT_SERIAL
#define USB_CDC_DEFAULT_SERIAL (1)
#endif

#if USB_CDC_DEFAULT_SERIAL
#define PIN_SERIAL1_TX (0)
#define PIN_SERIAL1_RX (1)
#else
#define PIN_SERIAL_TX (0)
#define PIN_SERIAL_RX (1)
#endif

// SPI Interfaces
#define SPI_INTERFACES_COUNT (1)

#define PIN_SPI_MISO (12)
#define PIN_SPI_MOSI (11)
#define PIN_SPI_SCK (13)

static const uint8_t SS = 10;
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 (2)

// External I2C (A4/A5)
#define PIN_WIRE_SDA (18u)
#define PIN_WIRE_SCL (19u)

static const uint8_t SDA = PIN_WIRE_SDA;
static const uint8_t SCL = PIN_WIRE_SCL;

// Internal I2C for onboard sensors
#define PIN_WIRE1_SDA (30u)
#define PIN_WIRE1_SCL (31u)

// APDS9960 interrupt pin
#define PIN_INT_APDS (26u)

// PDM microphone (MP34DT05)
#define PIN_PDM_PWR (27u)
#define PIN_PDM_CLK (28u)
#define PIN_PDM_DIN (29u)

// Internal power control pins
#define PIN_ENABLE_I2C_PULLUP (32u)
#define PIN_ENABLE_SENSORS_3V3 (33u)

#ifdef __cplusplus
}
#endif

/*----------------------------------------------------------------------------
* Arduino objects - C++ only
*----------------------------------------------------------------------------*/

#endif