4.3 KiB
MicroPython port to the NRF5
This is a port of MicroPython to the Nordic nRF5 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
Tested hardware
- nRF51
- micro:bit
- PCA10000 (dongle)
- PCA10001
- PCA10028
- PCA10031 (dongle)
- nRF52832
- nRF52840
Compile and Flash
Prerequisite steps for building the nrf5 port:
git clone <URL>.git micropython
cd micropython
git submodule update --init
make -C mpy-cross
By default PCA10040 (nrf52832) is used as compile target. To build and flash issue the following command inside the nrf5/ folder:
make
make flash
Alternatively the target board could be defined:
make BOARD=pca10040
make flash
Available board target names:
- microbit
- feather52
- pca10000
- pca10001
- pca10028
- pca10031
- pca10040
- pca10056
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.
Board | SD param | Support |
---|---|---|
microbit | s110 | Peripheral |
pca10000 | s110 | Peripheral |
pca10001 | s110 | Peripheral |
pca10028 | s110 | Peripheral |
pca10031 | s110 | Peripheral |
pca10040 | s132 | Peripheral and Central |
feather52 | s132 | Peripheral and Central |
pca10056 |
Segger targets
Install the necessary tools to flash and debug using Segger:
nrfjprog linux-32bit nrfjprog linux-64bit nrfjprog osx nrfjprog win32
Boards that would need JLink/nrfjprog:
- PCA10000
- PCA10001
- PCA10028
- PCA10031
- PCA10040
- PCA10056
PyOCD/OpenOCD targets
Install the necessary tools to flash and debug using OpenOCD:
sudo apt-get install openocd
sudo pip install pyOCD
Boards that would need PyOCD:
- micro:bit
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
make BOARD=feather52 dfu-gen
make BOARD=feather52 dfu-flash
Boards that would need DFU flash utilities:
- feather52 (Adafruit Feather nRF52)