From fbbcccbf8e347beccda4c124e25a9ebf07c8788b Mon Sep 17 00:00:00 2001 From: huwgen <32654742+fabianhugo@users.noreply.github.com> Date: Wed, 20 Dec 2023 01:39:44 +0100 Subject: [PATCH 1/5] adds Calliope mini V3 to the library (#518) * added mini3 * adds calliope pins, working * update readme * adds mini V3 to workflow --- .github/workflows/compile.yml | 1 + README.md | 2 +- boards.txt | 32 ++++++++++ variants/CalliopeminiV3/pins_arduino.h | 17 +++++ variants/CalliopeminiV3/variant.cpp | 69 +++++++++++++++++++++ variants/CalliopeminiV3/variant.h | 86 ++++++++++++++++++++++++++ 6 files changed, 206 insertions(+), 1 deletion(-) create mode 100644 variants/CalliopeminiV3/pins_arduino.h create mode 100644 variants/CalliopeminiV3/variant.cpp create mode 100644 variants/CalliopeminiV3/variant.h diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 845bf6e8..9efea657 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -18,6 +18,7 @@ jobs: - BBCmicrobit - BBCmicrobitV2 - CalliopeMini + - CalliopeminiV3 - Generic_nRF51822:chip=xxac - Generic_nRF52832 - Generic_nRF52833 diff --git a/README.md b/README.md index 9ca86253..aa366c5a 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ Become a sponsor and get your logo on our README on Github with a link to your s ### nRF52833 * [BBC micro:bit v2](https://microbit.org/new-microbit/) - + * [Calliope mini V3](https://calliope.cc/calliope-mini-3) ### nRF52 * [Plain nRF52 MCU](https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF52832) * [Nordic Semiconductor nRF52 DK](https://www.nordicsemi.com/eng/Products/Bluetooth-Smart-Bluetooth-low-energy/nRF52-DK) diff --git a/boards.txt b/boards.txt index a050d27e..dbd04419 100644 --- a/boards.txt +++ b/boards.txt @@ -534,6 +534,38 @@ CalliopeMini.menu.softdevice.s130.upload.maximum_size=151552 CalliopeMini.menu.softdevice.s130.build.extra_flags=-DNRF51 -DS130 -DNRF51_S130 CalliopeMini.menu.softdevice.s130.build.ldscript=armgcc_s130_nrf51822_xxaa.ld +CalliopeminiV3.name=Calliope mini V3 + +CalliopeminiV3.vid.0=0x0d28 +CalliopeminiV3.pid.0=0x0204 + +CalliopeminiV3.upload.tool=sandeepmistry:openocd +CalliopeminiV3.upload.protocol=cmsis-dap +CalliopeminiV3.upload.target=nrf52 +CalliopeminiV3.upload.maximum_size=524288 +CalliopeminiV3.upload.setup_command=transport select swd; +CalliopeminiV3.upload.use_1200bps_touch=false +CalliopeminiV3.upload.wait_for_upload_port=false +CalliopeminiV3.upload.native_usb=false + +CalliopeminiV3.bootloader.tool=sandeepmistry:openocd + +CalliopeminiV3.build.mcu=cortex-m4 +CalliopeminiV3.build.f_cpu=64000000 +CalliopeminiV3.build.board=CALLIOPE_MINI_V3 +CalliopeminiV3.build.core=nRF5 +CalliopeminiV3.build.variant=CalliopeminiV3 +CalliopeminiV3.build.variant_system_lib= +CalliopeminiV3.build.extra_flags=-DNRF52833_XXAA +CalliopeminiV3.build.float_flags=-mfloat-abi=hard -mfpu=fpv4-sp-d16 +CalliopeminiV3.build.ldscript=nrf52833_xxaa.ld + +CalliopeminiV3.build.lfclk_flags=-DUSE_LFSYNT + +CalliopeminiV3.menu.softdevice.none=None +CalliopeminiV3.menu.softdevice.none.softdevice=none +CalliopeminiV3.menu.softdevice.none.softdeviceversion= + BluzDK.name=Bluz DK BluzDK.upload.tool=sandeepmistry:openocd diff --git a/variants/CalliopeminiV3/pins_arduino.h b/variants/CalliopeminiV3/pins_arduino.h new file mode 100644 index 00000000..3ef4d4a9 --- /dev/null +++ b/variants/CalliopeminiV3/pins_arduino.h @@ -0,0 +1,17 @@ +/* + Copyright (c) 2014-2015 Arduino LLC. All right reserved. + 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 +*/ + +// API compatibility +#include "variant.h" diff --git a/variants/CalliopeminiV3/variant.cpp b/variants/CalliopeminiV3/variant.cpp new file mode 100644 index 00000000..70ad464c --- /dev/null +++ b/variants/CalliopeminiV3/variant.cpp @@ -0,0 +1,69 @@ +/* Pins for Calliope mini V3 +This file connects the hardware pin numbers on the left to the array position. +In Arduino IDE this array position is usually used when calling a pin by number, +e.g. pinMode(5, INPUT) sets BTN A to input mode */ + +#include "variant.h" + +const uint32_t g_ADigitalPinMap[] = { + // 0 - 4 + 2, // A0, PAD 0 + 3, // A1, PAD 1 + 4, // A2, PAD 2 + 35, // Pad 3, not analog (Calliope exclusive pin) + 28, // A4, COL1 + + // 5 - 9 + 14, // BTN A + 37, // COL4, P1.05 + 11, // COL2 + 10, // NFC2 + 9, // NFC1 + + // 10-16 + 30, // A5, COL5 + 23, // BTN B + 12, + 17, // SCK + 1, // MISO + 13, // MOSI + 29, // A5, C16_A1RX (Calliope change) + + // 17 + 18 + 34, // P1.02 C17 (Calliope exclusive pin) + 31, // A3, COL3 (Calliope changed pin number) + + // 19 + 20 + 26, // SCL + 32, // SDA, P1.00 + + // 21 - 25 + 21, // ROW1 + 22, // ROW2 + 15, // ROW3 + 24, // ROW4 + 19, // ROW5 + + // 26 - 29 + 36, // LOGO (touch sensor) + 0, // SPEAKER (Note: Must use synthesized LF clock to make this pin available) + 20, // RUN_MIC + 5, // A6, MIC_IN + + // 30 - 31 + 16, // I2C_INT_SDA + 8, // I2C_INT_SCL + + // 32 - 34 + 25, // COMBINED_SENSOR_INT + 40, // RX, P1.08 + 6, // TX + + // 35 - 40 internal Calliope mini pins + 7, // RGB + 38, // MOTOR_MODE + 33, // M0_DIR + 27, // M0_SPEED + 39, // M1_DIR + 41, // M1_SPEED +}; diff --git a/variants/CalliopeminiV3/variant.h b/variants/CalliopeminiV3/variant.h new file mode 100644 index 00000000..ee8d5050 --- /dev/null +++ b/variants/CalliopeminiV3/variant.h @@ -0,0 +1,86 @@ +#ifndef _CALLIOPE_MINI_V3_ +#define _CALLIOPE_MINI_V3_ + +// Master clock frequency + +#define VARIANT_MCK (64000000ul) + +#include "WVariant.h" + +#ifdef __cplusplus +extern "C" +{ +#endif // __cplusplus + +// Number of pins defined in PinDescription array + +#define PINS_COUNT (41) +#define NUM_DIGITAL_PINS (41) +#define NUM_ANALOG_INPUTS (7) +#define NUM_ANALOG_OUTPUTS (0) + +// LEDs + +#define PIN_LED (13) // This goes to Calliope mini header C12 (not a built in LED) +#define LED_BUILTIN PIN_LED + +// Buttons + +#define PIN_BUTTON_A (5) +#define PIN_BUTTON_B (11) + +// 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 (10) +#define PIN_A6 (29) + +#define ADC_RESOLUTION 10 +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; + +// Serial + +#define PIN_SERIAL_RX (33) +#define PIN_SERIAL_TX (34) + +// SPI + +#define SPI_INTERFACES_COUNT 1 + +#define PIN_SPI_MISO (14) +#define PIN_SPI_MOSI (15) +#define PIN_SPI_SCK (13) + +// Wire Interfaces (external and internal) + +#define WIRE_INTERFACES_COUNT 2 + +#define PIN_WIRE_SDA (20) +#define PIN_WIRE_SCL (19) + +#define PIN_WIRE1_SDA (30) +#define PIN_WIRE1_SCL (31) + +#ifdef __cplusplus + +// Calliope internal pins +#define PIN_RGB (35) +#define PIN_M_MODE (36) +#define PIN_M0_DIR (37) +#define PIN_M0_SPEED (38) +#define PIN_M1_DIR (39) +#define PIN_M1_SPEED (40) +} +#endif // __cplusplus + +#endif From b0957a99e55cea12644b7a582ad467f3b78952e8 Mon Sep 17 00:00:00 2001 From: Sandeep Mistry Date: Sun, 14 Jan 2024 19:26:34 -0500 Subject: [PATCH 2/5] Add note about "Flashing a SoftDevice" is IDE 1.8.x only --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index aa366c5a..0595d25f 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,7 @@ Become a sponsor and get your logo on our README on Github with a link to your s ### nRF52833 * [BBC micro:bit v2](https://microbit.org/new-microbit/) * [Calliope mini V3](https://calliope.cc/calliope-mini-3) + ### nRF52 * [Plain nRF52 MCU](https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF52832) * [Nordic Semiconductor nRF52 DK](https://www.nordicsemi.com/eng/Products/Bluetooth-Smart-Bluetooth-low-energy/nRF52-DK) @@ -170,7 +171,7 @@ The SD consumes ~5k of Ram + some extra based on actual BLE configuration. * SoftDevice S130 v2.0.1 supports Revision 3 of nRF51 in peripheral and central role. It is 108k in size. * SoftDevice S132 v2.0.1 supports nRF52 in peripheral and central role. It is 112k in size. -### Flashing a SoftDevice +### Flashing a SoftDevice (IDE 1.8.x only) 1. ```cd ```, where `````` is your Arduino Sketch folder: * OS X: ```~/Documents/Arduino``` From 99b3361648fde6acbfbe48c44dfababe17f29fd4 Mon Sep 17 00:00:00 2001 From: Sandeep Mistry Date: Sun, 14 Jan 2024 19:26:50 -0500 Subject: [PATCH 3/5] Version 0.9.0 --- platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index be9cb6a4..bf767bf5 100644 --- a/platform.txt +++ b/platform.txt @@ -16,7 +16,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA name=Nordic Semiconductor nRF5 Boards -version=0.7.0 +version=0.8.0 # Compile variables # ----------------- From 1ce2a089b767a12e79a1f1a2eecdc81b0b9b081d Mon Sep 17 00:00:00 2001 From: Sandeep Mistry Date: Sun, 14 Jan 2024 19:30:52 -0500 Subject: [PATCH 4/5] Update package information for 0.8.0 Release --- docs/package_nRF5_boards_index.json | 54 +++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/docs/package_nRF5_boards_index.json b/docs/package_nRF5_boards_index.json index 7b5898ee..dc400b62 100644 --- a/docs/package_nRF5_boards_index.json +++ b/docs/package_nRF5_boards_index.json @@ -352,6 +352,60 @@ "version": "0.10.0-dev.nrf5" } ] + }, + { + "name": "Nordic Semiconductor nRF5 Boards", + "architecture": "nRF5", + "version": "0.8.0", + "category": "Contributed", + "help": { + "online": "https://github.com/sandeepmistry/arduino-nRF5/issues" + }, + "url": "https://github.com/sandeepmistry/arduino-nRF5/archive/0.8.0.tar.gz", + "archiveFileName": "arduino-nRF52-0.8.0.tar.gz", + "checksum": "MD5:84da4097f5518bcaa0752ff31927504f", + "size": "1488561", + "boards": [ + {"name": "BBC micro:bit"}, + {"name": "BBC micro:bit v2"}, + {"name": "Bluz DK"}, + {"name": "Calliope mini"}, + {"name": "Calliope mini V3"}, + {"name": "decaWave DWM1001 Module Development Board"}, + {"name": "Electronut labs bluey"}, + {"name": "Electronut labs hackaBLE"}, + {"name": "Electronut labs hackaBLE v2"}, + {"name": "Generic nRF51822"}, + {"name": "Generic nRF52823"}, + {"name": "Generic nRF52833"}, + {"name": "OSHChip"}, + {"name": "ng-beacon"}, + {"name": "nRF51 Dongle"}, + {"name": "nRF51822 Development Kit"}, + {"name": "nRF52 DK"}, + {"name": "Nordic Beacon Kit"}, + {"name": "RedBear BLE Nano 2"}, + {"name": "RedBear Blend 2"}, + {"name": "RedBearLab BLE Nano"}, + {"name": "RedBearLab nRF51822"}, + {"name": "Seeed Arch Link"}, + {"name": "Sino:bit"}, + {"name": "Taida Century nRF52 mini board"}, + {"name": "TinyBLE"}, + {"name": "Waveshare BLE400"} + ], + "toolsDependencies": [ + { + "packager": "sandeepmistry", + "name": "gcc-arm-none-eabi", + "version": "5_2-2015q4" + }, + { + "packager": "sandeepmistry", + "name": "openocd", + "version": "0.10.0-dev.nrf5" + } + ] } ], "tools":[ From 8d91cbb022af4f80de2f2131db275e08c9255321 Mon Sep 17 00:00:00 2001 From: huwgen <32654742+fabianhugo@users.noreply.github.com> Date: Sat, 27 Jan 2024 14:38:46 +0100 Subject: [PATCH 5/5] corrects A3 from pin 3 to pin 18(C18), adds A7 as pin 16(C16), updates comment (#521) --- variants/CalliopeminiV3/variant.cpp | 2 +- variants/CalliopeminiV3/variant.h | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/variants/CalliopeminiV3/variant.cpp b/variants/CalliopeminiV3/variant.cpp index 70ad464c..99b01b89 100644 --- a/variants/CalliopeminiV3/variant.cpp +++ b/variants/CalliopeminiV3/variant.cpp @@ -27,7 +27,7 @@ const uint32_t g_ADigitalPinMap[] = { 17, // SCK 1, // MISO 13, // MOSI - 29, // A5, C16_A1RX (Calliope change) + 29, // A7, C16_A1RX (Calliope change) // 17 + 18 34, // P1.02 C17 (Calliope exclusive pin) diff --git a/variants/CalliopeminiV3/variant.h b/variants/CalliopeminiV3/variant.h index ee8d5050..2e9db313 100644 --- a/variants/CalliopeminiV3/variant.h +++ b/variants/CalliopeminiV3/variant.h @@ -34,10 +34,11 @@ extern "C" #define PIN_A0 (0) #define PIN_A1 (1) #define PIN_A2 (2) -#define PIN_A3 (3) +#define PIN_A3 (18) #define PIN_A4 (4) #define PIN_A5 (10) #define PIN_A6 (29) +#define PIN_A7 (16) #define ADC_RESOLUTION 10 static const uint8_t A0 = PIN_A0; @@ -47,6 +48,7 @@ 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; // Serial