2015-07-24 14:30:10 +00:00
Getting Started with Contiki for STM32 Nucleo equipped with sub-1GHz SPIRIT1 expansion boards
=============================================================================================
2015-07-24 14:44:19 +00:00
This guide explains how to get started with the STM32 Nucleo and expansion boards port to Contiki.
2015-07-24 14:30:10 +00:00
2015-11-25 11:56:42 +00:00
Maintainers and Contacts
========================
Long-term maintainers:
* Marco Grella, marco.grella@st.com, github user: [STclab ](https://github.com/STclab )
* Alok Mittal, alok.mittal@st.com, github user: [STclab ](https://github.com/STclab )
* Indar Prakash Singhal, indar.singhal@st.com, github user: [STclab ](https://github.com/STclab )
Contributors:
* David Siorpaes, david.siorpaes@st.com, github user: [siorpaes ](https://github.com/siorpaes )
* Luca Celetto, luca.celetto@st.com
2015-07-24 14:30:10 +00:00
Port Feature
============
The port supports the following boards from ST:
2015-10-27 11:12:59 +00:00
- NUCLEO-L152RE board, based on the STM32L152RET6 ultra-low power microcontroller
2015-07-24 14:30:10 +00: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:
- LEDs and buttons (user, reset)
- USB
- SPIRIT1 sub-1GHz transceiver
2015-07-24 14:57:34 +00:00
- HTS221, LIS3MDL, LPS25HB, LSM6DS0 sensors
2015-07-24 14:30:10 +00: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.
Detailed information on the NUCLEO-L152RE development board can be found at:
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF260002
* 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 14:57:34 +00:00
2015-07-24 15:00:32 +00: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 14:57:34 +00:00
2015-07-24 15:00:32 +00:00
>Detailed information on the X-NUCLEO-IDS01A4 expansion board can be found at:
2015-07-24 14:30:10 +00:00
http://www.st.com/web/catalog/tools/FM146/CL2167/SC2006/PF261982
2015-07-24 14:57:34 +00:00
2015-07-24 15:00:32 +00:00
>Detailed information on the X-NUCLEO-IDS01A5 expansion board can be found at:
2015-07-24 14:30:10 +00:00
http://www.st.com/web/catalog/tools/FM146/CL2167/SC2006/PF261983
2015-07-24 14:57:34 +00:00
2015-07-24 15:00:32 +00:00
>Detailed information on the SPIRIT1 sub-1GHz transceiver can be found at:
2015-07-24 14:30:10 +00:00
http://www.st.com/web/catalog/sense_power/FM2185/SC1845/PF253167
* 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 14:44:19 +00:00
2015-07-24 15:00:32 +00:00
>Detailed information on the X-NUCLEO-IKS01A1 expansion board can be found at:
2015-07-24 14:30:10 +00:00
http://www.st.com/web/catalog/tools/FM146/CL2167/SC2006/PF261191
* 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 13:56:12 +00: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 commands are needed to download the full porting:
git clone https://github.com/STclab/contiki.git
cd contiki/
git checkout stm32nucleo-spirit1
git submodule init
git submodule update
2015-09-03 16:02:15 +00:00
2015-09-10 12:28:08 +00:00
Note: the first and third steps are required only if using the STclab GitHub repository, they won't be needed any more once the Pull Request is accepted.
2015-09-03 16:02:15 +00:00
2015-07-24 14:30:10 +00: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 15:00:32 +00:00
>The toolchain can be found at: https://launchpad.net/gcc-arm-embedded
2015-07-24 14:44:19 +00:00
The port was developed and tested using this version: gcc-arm-none-eabi v4.8.3
2015-07-24 14:30:10 +00:00
Examples
========
The following examples have been successfully tested:
2015-07-24 14:44:19 +00:00
* examples/stm32nucleo-spirit1/sensor-demo
* examples/ipv6/simple-udp-rpl (multicast, rpl-border-router, simple-udp-rpl)
2015-07-24 14:30:10 +00: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 11:12:59 +00:00
make TARGET=stm32nucleo-spirit1 BOARD=ids01a4 clean
make TARGET=stm32nucleo-spirit1 BOARD=ids01a4
2015-07-24 14:30:10 +00:00
If the X-NUCLEO-IDS01A5 sub-1GHz RF expansion board is used, the following must be run:
2015-10-27 11:12:59 +00:00
make TARGET=stm32nucleo-spirit1 BOARD=ids01a5 clean
make TARGET=stm32nucleo-spirit1 BOARD=ids01a5
2015-07-24 14:30:10 +00:00
This will create executables for UDP sender and receiver nodes.
2015-07-27 12:08:07 +00: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 14:30:10 +00:00
These executables can be programmed on the nodes using the procedure described hereafter.
2015-07-24 14:44:19 +00: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 11:12:59 +00:00
make TARGET=stm32nucleo-spirit1 BOARD=ids01a4 SENSORBOARD=iks01a1
2015-07-24 14:44:19 +00:00
2015-07-24 14:30:10 +00: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 14:44:19 +00:00
3. If the optional X-NUCLEO-IKS01A1 board is used, connect it on top of the X-NUCLEO-IDS01Ax board.
2015-07-24 14:30:10 +00:00
2015-07-24 14:44:19 +00: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 14:30:10 +00: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 14:44:19 +00:00
6. Reset the MCU by using the reset button on the STM32 Nucleo board
2015-07-24 14:30:10 +00:00
2015-09-11 13:56:12 +00:00