circuitpython/ports/nrf/boards/electronut_labs_blip
Scott Shawcroft 40118bcf57
Add `board_deinit` for use with sleep
This changes lots of files to unify `board.h` across ports. It adds
`board_deinit` when CIRCUITPY_ALARM is set. `main.c` uses it to
deinit the board before deep sleeping (even when pretending.)

Deep sleep is now a two step process for the port. First, the
port should prepare to deep sleep based on the given alarms. It
should set alarms for both deep and pretend sleep. In particular,
the pretend versions should be set immediately so that we don't
miss an alarm as we shutdown. These alarms should also wake from
`port_idle_until_interrupt` which is used when pretending to deep
sleep.

Second, when real deep sleeping, `alarm_enter_deep_sleep` is called.
The port should set any alarms it didn't during prepare based on
data it saved internally during prepare.

ESP32-S2 sleep is a bit reorganized to locate more logic with
TimeAlarm. This will help it scale to more alarm types.

Fixes #3786
2020-12-08 10:52:25 -08:00
..
README.md boards: add support for Electronut labs Blip 2019-06-05 00:49:29 +05:30
board.c Add `board_deinit` for use with sleep 2020-12-08 10:52:25 -08:00
mpconfigboard.h wip 2019-12-05 22:45:53 -05:00
mpconfigboard.mk Add more PIDs for unique boards 2020-09-15 13:43:35 -07:00
pins.c boards: add support for Electronut labs Blip 2019-06-05 00:49:29 +05:30

README.md

Setup

The Electronut Labs Blip board is a development board based on the nRF52840 SoC from Nordic Semiconductors. It has a Black Magic Probe compatible programmer and debugger built in, along with temperature/humidity sensor, ambient light intensity sensor, and a 3-axis accelerometer. It can be used to prototype very low power devices. It also has provision for an SD card slot, which makes it a complete and versatile development board.

Schematic, datasheet, pin mapping etc. can be found over here.

Features:

  • Raytac MDBT50Q-1M module based on Nordic Semiconductor's nRF52840
  • LIS2DDH12 High-performance 3-axis "femto" accelerometer
  • Optical Sensor LTR-329ALS-01
  • Si7006-A20 I2C humidity and temperature sensor
  • On board STM32F103CBT6 as Black magic probe debugger
  • NFC Antenna
  • MicroSD slot
  • Power Supply: USB, JST connector for Li-ion/Li-po
  • BQ24079 battery charging and power management IC

Installing CircuitPython submodules

Before you can build, you will need to run the following commands once, which will install the submodules that are part of the CircuitPython ecosystem, and build the mpy-cross tool:

$ cd circuitpython
$ git submodule update --init
$ make -C mpy-cross

Building and Flashing CircuitPython

No special notes for this, follow ports/nrf generic README.md.

Flashing CircuitPython with GDB using on board Black magic probe debugger

$ cd ports/nrf
$ make V=1 SD=s140 SERIAL=/dev/ttyACM0 BOARD=electronut_labs_blip all
...
...
LINK build-electronut_labs_blip-s140/firmware.elf

778588 bytes free in flash out of 1048576 bytes ( 1024.0 kb ).
228320 bytes free in ram for stack out of 245760 bytes ( 240.0 kb ).

Create build-electronut_labs_blip-s140/firmware.bin
Create build-electronut_labs_blip-s140/firmware.hex
Create build-electronut_labs_blip-s140/firmware.uf2
python3 ../../tools/uf2/utils/uf2conv.py -f 0xADA52840 -c -o "build-electronut_labs_blip-s140/firmware.uf2" build-electronut_labs_blip-s140/firmware.hex
Converting to uf2, output size: 540160, start address: 0x26000
Wrote 540160 bytes to build-electronut_labs_blip-s140/firmware.uf2.

Now you can use either .hex or .elf from the generated files inside build-electronut_labs_blip-s140 directory. Now you can use arm-none-eabi-gdb to flash circuitpython on Blip.

Other tips

Once circuitpython is running on your board, it will come up as a mass storage device named CIRCUITPY, where you can drop in your python code. The file names it looks for are main.py, main.txt, code.py or code.txt.