-
Notifications
You must be signed in to change notification settings - Fork 18
MCU Info Page: Arduino Nano 33 BLE
The Arduino Nano 33 BLE is a small Mbed-compatible board from Arduino containing a general-purpose microcontroller with Bluetooth capabilities. The Arduino Nano 33 BLE uses a U-Blox NINA-B306 module, which itself contains an nRF52840 MCU. To flash code, Arduino provides a USB bootloader, and Mbed can flash code using this bootloader or an external SWD debugger. This board is a convenient option for projects which need to use bluetooth in an affordable and small form factor!
CPU | Flash/Code Memory | RAM | Communication Peripherals | Other Features |
---|---|---|---|---|
Cortex-M4F, clocked at up to 64 MHz |
Without Arduino bootloader Total: 1MiB Available to user:* 987 kiB With Arduino bootloader: Total: 960kiB Available to user:* 923kiB |
Total: 256kiB Available to user:* 244kiB |
|
|
*"Available to user" subtracts both regions of memory unusable by Mbed OS projects and the baseline memory used by a minimal build of Mbed OS.
There are two Bluetooth stacks in existence for this microcontroller: Nordic SoftDevice and Arm Cordio. SoftDevice is closed-source and provided as a precompiled binary from Nordic, complicating the build process significantly. Arm Cordio is an open-source Bluetooth stack produced by Packetcraft and ARM, and is included as part of the Mbed OS source code (in the connectivity/FEATURE_BLE/libraries/cordio_stack
folder).
Mbed OS used to support both stacks, but SoftDevice support was removed in Mbed OS 5.11 (perhaps so that ARM could promote its internally developed stack instead?). Currently only Cordio is supported and is used automatically. However, users should be aware that Cordio has issues that prevent nRF MCUs from entering a low-power state (under ~1.5mA) when using Bluetooth. Sadly, development on open-source Cordio appears to be dead as it became a private company, so this is unlikely to be fixed anytime soon.
Instead, the option that seems more promising is resurrecting the old SoftDevice interface, enabling Mbed to use Nordic's maintained stack. Mbed Community Edition is interested in doing this work but there is no concrete plan for this as of yet.
Most Mbed boards are limited to using specific peripherals (e.g. I2C, SPI) on specific pins. However, the Nano 33 BLE and its nRF52840 allow using all peripherals, other than the ADC, on absolutely any pin on the device. This means you aren't restricted to the pins labeled as SPI and I2C in the pinout! However, you still must respect the total number of peripherals available, e.g. you can only create a total of 2 UARTs.
There's an additional consideration for SPI and I2C busses: Each I2C instance shares resources with one of the SPIs. So, if you create two I2Cs, you only can make one SPI, and if you create three SPIs you can't use I2C at all.
- Arduino Nano 33 BLE pinout: ABX00030-datasheet.pdf
- nRF52840 Reference Manual and Electrical Datasheet: nRF52840_PS_v1.7.pdf