circuitpython/nrf5
Daniel Tralamazza bc1aec8a0d Merge pull request #71 from glennrub/update_ssd1306_examples
nrf5/examples: Removing copy of ssd1306 driver, creating a new class …
2017-06-07 18:19:29 +02:00
..
boards nrf5/boards/feather52: Add SERIAL makeflag if dfu-flash target is used. 2017-06-03 21:42:42 +02:00
device nrf5/device: Remove old startup files in asm, which has now been replaced with c-implementation. 2017-05-21 23:10:45 +02:00
drivers nrf5/drivers/bluetooth: Moving stop condition initialization before call to bluetooth stack write function is done, to make sure that its not overwritten after reception of the write event in case of with_response writes. 2017-05-30 23:23:31 +02:00
examples Merge pull request #71 from glennrub/update_ssd1306_examples 2017-06-07 18:19:29 +02:00
freeze nrf5: Renaming python modules folder to freeze to give the folder its right meaning. The scripts put into this folder will be frozen. 2017-02-04 23:46:29 +01:00
hal Merge pull request #55 from glennrub/align_rtc_and_timer 2017-06-03 22:52:35 +02:00
modules Merge pull request #51 from glennrub/ubluepy_char_write_with_response 2017-06-03 22:58:40 +02:00
.gitignore ignore default build folders 2016-11-16 23:40:38 +01:00
bluetooth_conf.h nrf5/drivers/bluetooth: Enable ubluepy central by default if running nrf52/s132 bluetooth stack. Maturity of the module is pretty OK now. 2017-05-25 22:20:17 +02:00
builtin_open.c nrf5: Updating port with new content. SPI, SDcard (trough sdcard.py), Pin, and machine module. Also adding some basic modules depending on SDK and bluetooth stack from nordic semiconductor. NUS is module copied from original port by tralamazza, and new basic module for 6lowpan over BLE which can be used by modnetwork and modusocket. Basic BLE module to enable bluetooth stack and start a eddystone advertisment is kept, and still works without SDK, even if in the SDK folder (its placed there as it needs bluetooth stack from an SDK). 2016-12-13 20:27:26 +01:00
fatfs_port.c nrf5: Aligning code after upmerge with master. Mostly FAT FS related updates. Not tested after merge. 2017-02-07 23:30:54 +01:00
font_petme128_8x8.h nrf5/lcd: Changing framebuffer to use petme128 8x8 font. This is vertical font. Code modified to flip and mirror the font when rendering a character. Adding copy of the font from stmhal. 2016-12-29 15:35:24 +01:00
gccollect.c Base support for nrf51 and nrf52 base without depending on SDK. SoftDevice usage optional. 2016-11-16 21:38:25 +01:00
gccollect.h nrf5: Updating port with new content. SPI, SDcard (trough sdcard.py), Pin, and machine module. Also adding some basic modules depending on SDK and bluetooth stack from nordic semiconductor. NUS is module copied from original port by tralamazza, and new basic module for 6lowpan over BLE which can be used by modnetwork and modusocket. Basic BLE module to enable bluetooth stack and start a eddystone advertisment is kept, and still works without SDK, even if in the SDK folder (its placed there as it needs bluetooth stack from an SDK). 2016-12-13 20:27:26 +01:00
help.c nrf5: Update help.c with documentation of CTRL-A and CTRL-B to enter and exit raw REPL mode. 2017-06-03 19:56:30 +02:00
main.c nrf5: Updating main.c to support RAW REPL. 2017-06-03 19:34:05 +02:00
Makefile nrf5: Makefile cleanup. Removing duplicate include and unused netutils.c used by BLE 6lowpan network which has been removed for now. 2017-06-02 19:19:55 +02:00
mpconfigport.h nrf5: Facilitate option to configure away the modble if needed. Enabled if MICROPY_PY_BLE config is enabled in bluetooth_conf.h. 2017-05-18 23:11:41 +02:00
mphalport.c nrf5: Force implementation of tx_str_cooked function if BLE NUS enabled. 2017-02-28 23:18:31 +01:00
mphalport.h nrf5/hal: Moving hal_gpio functions, types and defines from mphalport.h to a new hal_gpio.h. 2017-04-09 21:39:15 +02:00
nrf51_af.csv nrf5: Updating nrf51_af.csv to reflect pins having ADC on the chip. 2017-01-11 20:13:59 +01:00
nrf52_af.csv nrf5/pin: Adding more pins to nrf52_af.csv file for nrf52840. Port '1' will be prefixed 'B'. 2017-01-08 16:10:47 +01:00
pin_defs_nrf5.h nrf5/pin: Adding PORT_B to Pin port enum to reflect gpio port 1 on nrf52840. 2017-01-08 16:08:47 +01:00
pin_named_pins.c nrf5: Updating port with new content. SPI, SDcard (trough sdcard.py), Pin, and machine module. Also adding some basic modules depending on SDK and bluetooth stack from nordic semiconductor. NUS is module copied from original port by tralamazza, and new basic module for 6lowpan over BLE which can be used by modnetwork and modusocket. Basic BLE module to enable bluetooth stack and start a eddystone advertisment is kept, and still works without SDK, even if in the SDK folder (its placed there as it needs bluetooth stack from an SDK). 2016-12-13 20:27:26 +01:00
qstrdefsport.h nrf5: Add modmusic QSTR definition of notes to qstrdefsport.h. 2017-05-18 23:11:41 +02:00
README.md nrf5: Updating readme.md file based on review comments. 2017-06-03 20:20:38 +02:00

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

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:

JLink

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)