Particle Mesh common

Common support for the Particle Mesh boards family (Xenon, Argon, Boron) More...

Detailed Description

Common support for the Particle Mesh boards family (Xenon, Argon, Boron)

General information

Particle Mesh are mesh-ready development kits. Depending on the board type (Xenon, Argon, Boron), it provides access to multiple communication protocols: BLE, 802.15.4, WiFi, LTE.

Flash the board

Using the Particle Mesh debugger, the board can be flashed with PyOCD programmer via a DAPLink.

PyOCD can be installed using Python package manager:

pip install pyocd --user -U

To flash the board, use BOARD=<board name> (with board name in {particle-argon, particle-boron, particle-xenon}) with the make command.
Example with hello-world application:

make BOARD=particle-xenon -C examples/hello-world flash

In this case, OpenOCD can also be used. For the moment, the latest stable version of OpenOCD (0.10) doesn't contain any support for nrf52 but versions built against the actual development version can be used.

To flash the board with OpenOCD, use the PROGRAMMER variable:

PROGRAMMER=openocd make BOARD=<board name> -C examples/hello-world flash

Alternative flashing procedure: Particle bootloader and DFU-Util

As an alternative to using the Particle Mesh debugger, the USB DFU mode bootloader shipped with Particle Mesh devices can be used. That mode can be entered by keeping the SETUP/MODE button pressed after power-up or reset until the RGB LED blinks yellow fast.

In this mode, the bootloader and Soft Device are kept in place, reducing the available flash memory to 784kB, but in turn, devices can easily be switched back to using Particle software.

In order to use this mode, set PARTICLE_MONOFIRMWARE=1 wherever you set the BOARD. This will trigger the use of the appropriate linker script, and switch in dfu-util as the default programmer, which needs to be installed.

On Linux hosts, devices for the DFU mode are frequently only accessible to root, causing error messages like

dfu-util: Cannot open DFU device 2b04:d00e
dfu-util: No DFU capable USB device available

To make Particle devices writable for all users, follow Particle's instructions on setting up dfu-util.

The Particle bootloader checks the firmware's checksum at startup time. As these checks would be frustrated by flash writes inside RIOT (typically using the Flash page driver), the CFLAG -DPARTICLE_MONOFIRMWARE_CHECKSUMLIMIT can be set. Then, the checksum is only calculated over the memory region that contains the interrupt vector and the bootloader manifest.

Reset the board

The on-board reset button doesn't work, so to trigger a reset of the board, use the reset target with make:

make BOARD=<board name> -C examples/hello-world reset

STDIO configuration

By default, the board uses USB to expose a serial terminal. Other stdio options can be enabled as modules to replace that.

When the stdio_uart module is used, it defaults to using UART0, which is configured for the board's RX/TX pin pair.

nRF antenna selection

The Particle Mesh boards all have two antenna choices for their nRF (Bluetooth / 802.15.4) radios, a on-board antenna and a U.FL connector for an external antenna.

By default, the on-board antenna is selected at startup. That choice can be overridden by setting BOARD_NRFANTENNA_DEFAULT = EXTERNAL (as opposed to the default BUILTIN) in a project's Makefile, or at runtime using board_nrfantenna_select function.

The external antenna connection should only be enabled if a suitable antenna is connected.


file  board.h
 Common board specific configuration for the Particle Mesh.
file  gpio_params.h
 Configuration of SAUL mapped GPIO pins.
file  periph_conf_common.h
 Common peripheral configuration for the Particle Mesh.
file  pwm_params.h
 Configuration of SAUL mapped PWM channels.