.. _96b_wistrio:

96Boards WisTrio
#################

Overview
********

96Boards WisTrio LoRa Tracker board is based on the RAK Wireless RAK5205
chipset integrating SX1276 LoRaWAN Modem, STM32L151CB-A MCU and GPS module.
Zephyr applications use the 96b_wistrio configuration to run on these
boards.

.. figure:: img/96b-wistrio.jpg
     :align: center
     :alt: 96Boards WisTrio

     96Boards WisTrio

This board is one of the `96Boards IoT Edition`_ platforms providing LoRa
connectivity.

Hardware
********

96Boards WisTrio provides the following hardware components:

- RAK5205 Chipset
- 3.3V work voltage
- 128 KB Flash
- 16 KB SRAM
- On board sensors:

  - Accelerometer: STMicro LIS3DH
  - Integrated Environmental sensor: Bosch BME680

- 2 User LEDs
- GPIO with external interrupt capability
- UART (2)
- I2C (1)
- GPS Module
- GPS Antenna
- LoRa Antenna

Supported Features
==================

The Zephyr 96b_wistrio board configuration supports the following hardware
features:

+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component                    |
+===========+============+=====================================+
| NVIC      | on-chip    | nested vector interrupt controller  |
+-----------+------------+-------------------------------------+
| SYSTICK   | on-chip    | system clock                        |
+-----------+------------+-------------------------------------+
| UART      | on-chip    | serial port                         |
+-----------+------------+-------------------------------------+
| GPIO      | on-chip    | gpio                                |
+-----------+------------+-------------------------------------+
| PINMUX    | on-chip    | pinmux                              |
+-----------+------------+-------------------------------------+
| I2C       | on-chip    | i2c                                 |
+-----------+------------+-------------------------------------+
| SPI       | on-chip    | spi                                 |
+-----------+------------+-------------------------------------+
| RTC       | on-chip    | rtc                                 |
+-----------+------------+-------------------------------------+
| EEPROM    | on-chip    | eeprom                              |
+-----------+------------+-------------------------------------+

The default board configuration can be found in
:zephyr_file:`boards/96boards/wistrio/96b_wistrio_defconfig`

Connections and IOs
===================

LED
---

- LED1 / User1 LED = PA12
- LED2 / User2 LED = PB4

Push buttons
------------

- BUTTON = RST (BT1)

Serial Port
===========

96Boards WisTrio board has 2 UARTs. Zephyr console output is assigned
to USART1 with 115200 8N1 as the default setting and USART3 is used for
GPS module.

I2C
---

96Boards WisTrio board has 1 I2C connected to on-board sensors.
The default I2C mapping is:

- I2C1_SCL  : PB8
- I2C1_SDA  : PB9

I2C1 also goes to the J22 connector and can be used to attach external
sensors.

SPI
---

96Boards WisTrio board has 1 SPI connected to on-chip LoRa Radio.
The default SPI mapping is:

- SPI1_SCLK  : PA5
- SPI1_MISO  : PA6
- SPI1_MOSI  : PA7
- SPI1_NSS   : PB0

Programming and Debugging
*************************

Flashing
========

96Boards WisTrio can be flashed by two methods, one using the ROM
bootloader and another using the SWD debug port (which requires additional
hardware).

Flashing using the ROM bootloader requires a special activation pattern,
which can be triggered by using the BOOT0 pin. The ROM bootloader supports
flashing via UART, and I2C but this document describes the UART case only.
You can read more about how to enable and use the ROM bootloader by
checking the application note `AN2606`_ .

Using ROM bootloader:
---------------------

1. Connect 96Boards WisTrio to your Linux PC using, USB-Micro to USB-A
   cable.

2. ROM bootloader can be triggered by the following pattern:

   - Connect BOOT0 to VDD (link pin 1 and 2 on J12)
   - Press and release the RST button

More detailed information on activating the ROM bootloader can be found in
Chapter 29 of Application note `AN2606`_. The ROM bootloader supports flashing
via UART, and I2C protocols.

Here is an example for building and flashing the :ref:`hello_world` application using `stm32flash`_ command line utility:

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :board: 96b_wistrio
   :goals: build flash

Using SWD debugger:
-------------------

Use the `Black Magic Debug Probe`_ as an SWD programmer, which can
be connected to the SWD pins exposed on the J22 header using its flying
leads and its 20 Pin JTAG Adapter Board Kit. When plugged into your host
PC, the Black Magic Debug Probe enumerates as a USB serial device as
documented on its `Getting started page`_.

It also uses the GDB binary provided with the Zephyr SDK,
``arm-zephyr-eabi-gdb``. Other GDB binaries, such as the GDB from GCC
ARM Embedded, can be used as well.

.. code-block:: console

   $ arm-zephyr-eabi-gdb -q zephyr.elf
   (gdb) target extended-remote /dev/ttyACM0
   Remote debugging using /dev/ttyACM0
   (gdb) monitor swdp_scan
   Target voltage: 3.3V
   Available Targets:
   No. Att Driver

Debugging
=========

After flashing 96Boards WisTrio, it can be debugged using the same
GDB instance. To reattach, just follow the same steps above, till
"attach 1". You can then debug as usual with GDB. In particular, type
"run" at the GDB prompt to restart the program you've flashed.

References
**********

.. _AN2606:
   https://www.st.com/resource/en/application_note/cd00167594.pdf

.. _stm32flash:
   https://sourceforge.net/p/stm32flash/wiki/Home/

.. _Black Magic Debug Probe:
   https://github.com/blacksphere/blackmagic/wiki

.. _Getting started page:
   https://github.com/blacksphere/blackmagic/wiki/Getting-Started

.. _96Boards IoT Edition:
    https://linaro.co/ie-specification
