Skip to content

Board: Spark Core

Jose Alamos edited this page Aug 9, 2018 · 19 revisions

WARNING: This entry will be deprecated. All content has been moved to


Spark's hardware dev kit, the Spark Core, provides everything you need to build a connected product. We combine a powerful ARM Cortex M3 micro-controller with a Wi-Fi module to get you started quickly. The design is open source, so when you're ready to integrate the Core into your product, you can.


Spark-Core image

Link to product website.


Family ARM Cortex-M3
Vendor ST Microelectronics
RAM 20Kb
Flash 128Kb
Frequency up to 72MHz (using the on-board 8MHz Oszillator of the ST-Link)
FPU yes
Timers 10 (9x 16-bit, 1x 32-bit [TIM2])
ADCs 4x 12-bit
SPIs 3
I2Cs 2
Vcc 2.0V - 3.6V
Datasheet Datasheet
Reference Manual Reference Manual
Programming Manual Programming Manual
Board Manual Board Manual

Hardware connection

First of all make sure the your spark core device is detected and can be accessed properly. In Linux you might have to adept your udev rules accordingly:

$ cat 50-openmoko.rules 
#Bus 001 Device 022: ID 1d50:607f OpenMoko, Inc.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="607f", \
    MODE:="0666", \

# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.

sudo cp 50-openmoko.rules  /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

now replug the usb cable and flash.


To flash RIOT to the spark core you need to install dfu-util (tested with 0.7 and 0.8).

Power the device and press the the mode button until the LED flashes yellow/orange: now the device is ready to get flashed.

Firmware upgrade

To run RIOT it is required that you run the newest spark bootloader on your core: from

Here is the core-firmware branch for this:
However care should be taken not to disturb the patch update process by accidentally removing usb power or through reset.
Following is the procedure to update the bootloader-patch
1)cd core-firmware
2)git pull
3)git checkout bootloader-patch-update
4)cd build [No need to run make]
5)Enter usb dfu/bootloader mode => Yellow flashes
6) dfu-util -d 1d50:607f -a 0 -s 0x08005000:leave -D core-firmware.bin
7)Upon execution, the bootloader should be updated within a second or two and normal core-firmware should start executing.
8)Congrats! your core is loaded with latest bootloader without the hassle of going through ST-Link JTAG programming

Build and flash

  1. clone RIOT-OS
  2. cd to e.g. examples/hello_world
  3. enter BOARD=spark-core make clean all flash

Use the UART

  1. RIOT is using the UART PINs on the board, they are labeled as RT and TX.
  2. Connect your TTY to them and BOARD=spark-core make term.
  3. In a different terminal enter BOARD=spark-core make reset

Pin mapping in RIOT

Please refer to this document for RIOTs static pin mapping chosen for this board. This mapping is completely arbitrary, it can be adjusted in boards/spark-core/include/periph_conf.h

Clone this wiki locally
You can’t perform that action at this time.