2015-07-24 16:30:10 +02:00
Getting Started with Contiki for STM32 Nucleo equipped with sub-1GHz SPIRIT1 expansion boards
=============================================================================================
2015-07-24 16:44:19 +02:00
This guide explains how to get started with the STM32 Nucleo and expansion boards port to Contiki.
2015-07-24 16:30:10 +02:00
2015-11-25 12:56:42 +01:00
Maintainers and Contacts
========================
Long-term maintainers:
2016-05-05 16:44:07 +02:00
* Marco Grella, marco.grella@st.com, github user: [mgrella ](https://github.com/mgrella )
* Alok Mittal, alok.mittal@st.com, github user: [alokclab ](https://github.com/alokclab )
* Indar Prakash Singhal, indar.singhal@st.com, github user: [indars ](https://github.com/indars )
2015-11-25 12:56:42 +01:00
Contributors:
* David Siorpaes, david.siorpaes@st.com, github user: [siorpaes ](https://github.com/siorpaes )
2016-05-05 16:44:07 +02:00
* Luca Celetto, luca.celetto@st.com, github user: [luckyluke72 ](https://github.com/luckyluke72 )
2015-11-25 12:56:42 +01:00
2015-07-24 16:30:10 +02:00
Port Feature
============
The port supports the following boards from ST:
2015-10-27 12:12:59 +01:00
- NUCLEO-L152RE board, based on the STM32L152RET6 ultra-low power microcontroller
2015-07-24 16:30:10 +02:00
- X-NUCLEO-IDS01A4 based on sub-1GHz SPSGRF-868 SPIRIT1 module (operating at 868 MHz)
- X-NUCLEO-IDS01A5 based on sub-1GHz SPSGRF-915 SPIRIT1 module (operating at 915 MHz)
- X-NUCLEO-IKS01A1 featuring motion MEMS and environmental sensors (optional)
The following drivers are included:
2016-05-05 16:44:07 +02:00
- LEDs and user button
2015-07-24 16:30:10 +02:00
- USB
- SPIRIT1 sub-1GHz transceiver
2015-07-24 16:57:34 +02:00
- HTS221, LIS3MDL, LPS25HB, LSM6DS0 sensors
2015-07-24 16:30:10 +02:00
2016-05-05 16:44:07 +02:00
Documentation
=============
- User Manual: UM2000 "Getting started with the Contiki OS/6LoWPAN on STM32 Nucleo with SPIRIT1 and sensors expansion boards"
- Quick Start Guide (presentation): "Contiki 6LoWPAN Quick Guide"
To access this documentation and other collaterals, please go to http://www.st.com and search for "STSW-CONTIKI6LP" part number.
2015-07-24 16:30:10 +02:00
Hardware Requirements
=====================
* NUCLEO-L152RE development board
>The NUCLEO-L152RE board belongs to the STM32 Nucleo family.
It features an STM32L152RET6 ultra-low power microcontroller based on ARM Cortex M3 MCU.
2016-05-05 16:44:07 +02:00
For detailed information on the NUCLEO-L152RE development board, please go to http://www.st.com and search for the "NUCLEO-L152RE" part number.
2015-07-24 16:30:10 +02:00
* X-NUCLEO-IDS01Ax sub-1GHz expansion board
>The X-NUCLEO-IDS01A4 and X-NUCLEO-IDS01A5 are STM32 Nucleo expansion boards that use
the module SPSGRF-868 or SPSGRF-915 based on SPIRIT1 low data rate, low power sub-1 GHz transceiver.
2015-07-24 16:57:34 +02:00
2015-07-24 17:00:32 +02:00
>The user can select the X-NUCLEO-IDS01A4 board to operate the SPIRIT1 transceiver at 868MHz or the X-NUCLEO-IDS01A5 board to operate the SPIRIT1 transceiver at 915MHz.
2015-07-24 16:57:34 +02:00
2016-05-05 16:44:07 +02:00
>For detailed information on the X-NUCLEO-IDS01A4 or X-NUCLEO-IDS01A5 expansion board, or the SPIRIT1 transceiver please go to http://www.st.com and search for the specific part number.
2015-07-24 16:30:10 +02:00
* X-NUCLEO-IKS01A1, motion MEMS and environmental sensors expansion board (OPTIONAL)
>The X-NUCLEO-IKS01A1 is a motion MEMS and environmental sensor evaluation board.
The use of this board is optional in the stm32nucleo-spirit1 Contiki platform.
2015-07-24 16:44:19 +02:00
2016-05-05 16:44:07 +02:00
>For detailed information on the X-NUCLEO-IKS01A1 expansion board, please go to http://www.st.com and search for the "X-NUCLEO-IKS01A1" part number.
2015-07-24 16:30:10 +02:00
* USB type A to Mini-B USB cable, to connect the STM32 Nucleo board to the PC
Software Requirements
=====================
The following software are needed:
* ST port of Contiki for STM32 Nucleo and expansion boards.
2015-09-11 15:56:12 +02:00
2016-05-05 16:44:07 +02:00
>The port is automatically installed when both the Contiki and the submodule repository are cloned: the former hosts the Contiki distribution and the ST platform interface, the latter hosts the actual library. The following command downloads the full porting:
git clone --recursive https://github.com/contiki-os/contiki
Alternatively, if you cloned the contiki repository without the "--recursive" option, you can simply download the submodule repository with the following commands:
2015-09-11 15:56:12 +02:00
cd contiki/
git submodule init
git submodule update
2015-09-03 18:02:15 +02:00
2015-07-24 16:30:10 +02:00
The platform name is: stm32nucleo-spirit1
* A toolchain to build the firmware: The port has been developed and tested with GNU Tools
for ARM Embedded Processors.
2015-07-24 17:00:32 +02:00
>The toolchain can be found at: https://launchpad.net/gcc-arm-embedded
2015-07-24 16:44:19 +02:00
The port was developed and tested using this version: gcc-arm-none-eabi v4.8.3
2015-07-24 16:30:10 +02:00
Examples
========
The following examples have been successfully tested:
2015-07-24 16:44:19 +02:00
* examples/stm32nucleo-spirit1/sensor-demo
* examples/ipv6/simple-udp-rpl (multicast, rpl-border-router, simple-udp-rpl)
2015-07-24 16:30:10 +02:00
Build an example
================
In order to build an example go to the selected example directory (see a list of tested
examples in the previous section).
For example, go to examples/ipv6/simple-udp-rpl directory.
If the X-NUCLEO-IDS01A4 sub-1GHz RF expansion board is used, the following must be run:
2015-10-27 12:12:59 +01:00
make TARGET=stm32nucleo-spirit1 BOARD=ids01a4 clean
make TARGET=stm32nucleo-spirit1 BOARD=ids01a4
2015-07-24 16:30:10 +02:00
If the X-NUCLEO-IDS01A5 sub-1GHz RF expansion board is used, the following must be run:
2015-10-27 12:12:59 +01:00
make TARGET=stm32nucleo-spirit1 BOARD=ids01a5 clean
make TARGET=stm32nucleo-spirit1 BOARD=ids01a5
2015-07-24 16:30:10 +02:00
This will create executables for UDP sender and receiver nodes.
2015-07-27 14:08:07 +02:00
In order to generate binary files that can be flashed on the STM32 Nucleo the following command must be run:
arm-none-eabi-objcopy -O binary unicast-sender.stm32nucleo-spirit1 unicast-sender.bin
arm-none-eabi-objcopy -O binary unicast-receiver.stm32nucleo-spirit1 unicast-receiver.bin
2015-07-24 16:30:10 +02:00
These executables can be programmed on the nodes using the procedure described hereafter.
2015-07-24 16:44:19 +02:00
In case you need to build an example that uses the additional sensors expansion board
(for example, considering a system made of NUCLEO-L152RE, X-NUCLEO-IDS01A4 and X-NUCLEO-IKS01A1)
then the command to be run would be:
2015-10-27 12:12:59 +01:00
make TARGET=stm32nucleo-spirit1 BOARD=ids01a4 SENSORBOARD=iks01a1
2015-07-24 16:44:19 +02:00
2015-07-24 16:30:10 +02:00
System setup
============
1. Check that the jumper on the J1 connector on the X-NUCLEO-IDS01Ax expansion board is connected.
This jumper provides the required voltage to the devices on the board.
2. Connect the X-NUCLEO-IDS01Ax board to the STM32 Nucleo board (NUCLEO-L152RE) from the top.
2015-07-24 16:44:19 +02:00
3. If the optional X-NUCLEO-IKS01A1 board is used, connect it on top of the X-NUCLEO-IDS01Ax board.
2015-07-24 16:30:10 +02:00
2015-07-24 16:44:19 +02:00
4. Power the STM32 Nucleo board using the Mini-B USB cable connected to the PC.
5. Program the firmware on the STM32 Nucleo board.
2015-07-24 16:30:10 +02:00
This can be done by copying the binary file on the USB mass storage that is
automatically created when plugging the STM32 Nucleo board to the PC.
2015-07-24 16:44:19 +02:00
6. Reset the MCU by using the reset button on the STM32 Nucleo board
2015-07-24 16:30:10 +02:00