4.7 KiB
MicroPython Port To The Nordic Semiconductor nRF Series
This is a port of MicroPython to the Nordic Semiconductor nRF series of chips.
Supported Features
- UART
- SPI
- LEDs
- Pins
- ADC
- I2C
- PWM (nRF52 only)
- Temperature
- RTC (Real Time Counter. Low-Power counter)
- BLE support including:
- Peripheral role on nrf51 targets
- Central role and Peripheral role on nrf52 targets
- REPL over Bluetooth LE (optionally using WebBluetooth)
- ubluepy: Bluetooth LE module for micropython
- 1 non-connectable advertiser while in connection
Tested Hardware
- nRF51
- micro:bit
- PCA10000 (dongle)
- PCA10001
- PCA10028
- PCA10031 (dongle)
- nRF52832
- nRF52840
Compile and Flash
Prerequisite steps for building the nrf port:
git clone <URL>.git micropython
cd micropython
git submodule update --init
make -C mpy-cross
By default, the PCA10040 (nrf52832) is used as compile target. To build and flash issue the following command inside the nrf/ folder:
make
make flash
Alternatively the target board could be defined:
make BOARD=pca10040
make flash
Compile and Flash with Bluetooth Stack
First prepare the bluetooth folder by downloading Bluetooth LE stacks and headers:
./drivers/bluetooth/download_ble_stack.sh
If the Bluetooth stacks has been downloaded, compile the target with the following command:
make BOARD=pca10040 SD=s132
make sd
The make sd will trigger a flash of the bluetooth stack before that application is flashed. Note that make sd will perform a full erase of the chip, which could cause 3rd party bootloaders to also be wiped.
Note: further tuning of features to include in bluetooth or even setting up the device to use REPL over Bluetooth can be configured in the bluetooth_conf.h.
Target Boards and Make Flags
Target Board (BOARD) | Bluetooth Stack (SD) | Bluetooth Support | Flash Util |
---|---|---|---|
microbit | s110 | Peripheral | PyOCD |
pca10000 | s110 | Peripheral | Segger |
pca10001 | s110 | Peripheral | Segger |
pca10028 | s110 | Peripheral | Segger |
pca10031 | s110 | Peripheral | Segger |
pca10040 | s132 | Peripheral and Central | Segger |
feather52 | s132 | Peripheral and Central | UART DFU |
pca10056 | Segger |
Segger Targets
Install the necessary tools to flash and debug using Segger:
PyOCD/OpenOCD Targets
Install the necessary tools to flash and debug using OpenOCD:
sudo apt-get install openocd
sudo pip install pyOCD
DFU Targets
sudo apt-get install build-essential libffi-dev pkg-config gcc-arm-none-eabi git python python-pip
git clone https://github.com/adafruit/Adafruit_nRF52_Arduino.git
cd Adafruit_nRF52_Arduino/tools/nrfutil-0.5.2/
sudo pip install -r requirements.txt
sudo python setup.py install
make flash and make sd will not work with DFU targets. Hence, dfu-gen and dfu-flash must be used instead.
- dfu-gen: Generates a Firmware zip to be used by the DFU flash application.
- dfu-flash: Triggers the DFU flash application to upload the firmware from the generated Firmware zip file.
Example on how to generate and flash feather52 target:
make BOARD=feather52 SD=s132
make BOARD=feather52 SD=s132 dfu-gen
make BOARD=feather52 SD=s132 dfu-flash