diff --git a/nrf5/README.md b/nrf5/README.md index a7bbc011cf..75fb9281dc 100644 --- a/nrf5/README.md +++ b/nrf5/README.md @@ -12,35 +12,130 @@ This is a port of MicroPython to the Nordic nRF5 series of chips. * I2C * PWM (nRF52 only) * Temperature -* RTC -* Some BLE support including _REPL over BLE_ - -Note that this port is still a work-in-progress and some modules are not fully feature complete. +* 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 -* nRF52 + * [micro:bit](http://microbit.org/) + * PCA10000 (dongle) + * PCA10001 + * PCA10028 + * PCA10031 (dongle) +* nRF52832 * [PCA10040](http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52%2Fdita%2Fnrf52%2Fdevelopment%2Fnrf52_dev_kit.html) - * [D52Q](https://www.dynastream.com/components/d52) * [Adafruit Feather nRF52](https://www.adafruit.com/product/3406) + * [Thingy:52](http://www.nordicsemi.com/eng/Products/Nordic-Thingy-52) + * [Arduino Primo](http://www.arduino.org/products/boards/arduino-primo) +* nRF52840 + * [PCA10056](http://www.nordicsemi.com/eng/Products/nRF52840-Preview-DK) -## Build steps +## Compile and Flash -Example is for the Adafruit Feather nRF52: +Prerequisite steps for building the nrf5 port: -``` -> 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 -> cd ../../.. -> git clone https://github.com/tralamazza/micropython.git nrf5_no_sdk -> cd nrf5_no_sdk/ -> git submodule update --init -> make -C mpy-cross -> cd nrf5/ -> make BOARD=feather52 -> make BOARD=feather52 dfu-gen -> make BOARD=feather52 dfu-flash -``` \ No newline at end of file + git clone .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: + +[JLink](https://www.segger.com/downloads/jlink#) + +[nrfjprog linux-32bit](https://www.nordicsemi.com/eng/nordic/download_resource/52615/16/95882111/97746) +[nrfjprog linux-64bit](https://www.nordicsemi.com/eng/nordic/download_resource/51386/21/77886419/94917) +[nrfjprog osx](https://www.nordicsemi.com/eng/nordic/download_resource/53402/12/97293750/99977) +[nrfjprog win32](https://www.nordicsemi.com/eng/nordic/download_resource/33444/40/22191727/53210) + +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)