.. _sparkfun_thing_plus_nrf9160:

nRF9160 Thing Plus
##################

.. figure:: img/sparkfun_thing_plus_nrf9160.jpg
     :align: center
     :alt: Sparkfun nRF9160 Thing Plus

     nRF9160 Thing Plus (Credit: Sparkfun)

Overview
********

The nRF9160 Thing Plus designed by Circuit Dojo is a single-board development
for bringing your LTE-M and NB-IoT applications to life. The sparkfun_thing_plus_nrf9160
board configuration leverages the pre-existing support for the Nordic Semiconductor
nRF9160. Supported nRF9160 peripherals include:

* :abbr:`ADC (Analog to Digital Converter)`
* CLOCK
* FLASH
* :abbr:`GPIO (General Purpose Input Output)`
* :abbr:`I2C (Inter-Integrated Circuit)`
* :abbr:`MPU (Memory Protection Unit)`
* :abbr:`NVIC (Nested Vectored Interrupt Controller)`
* :abbr:`PWM (Pulse Width Modulation)`
* :abbr:`RTC (nRF RTC System Clock)`
* Segger RTT (RTT Console)
* :abbr:`SPI (Serial Peripheral Interface)`
* :abbr:`UARTE (Universal asynchronous receiver-transmitter with EasyDMA)`
* :abbr:`WDT (Watchdog Timer)`
* :abbr:`IDAU (Implementation Defined Attribution Unit)`

More information about the board can be found at the
`nRF9160 Thing Plus Documentation`_.


Hardware
********

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

The nRF9160 Thing Plus has everything you know and love about
the Feather platform. Here are some of the highlights:

LED
---

* D7 (blue) = P0.03

Push buttons and Switches
-------------------------

* MODE = P0.12
* RESET

USB
---

Contains a USB/UART connection for both debugging and loading new
code using a UART Enabled MCUBoot.

Standard Battery Connection
----------------------------

The nRF9160 Thing Plus has a 2 pin battery connector on board. Lithium Polymer batteries >
300mA required.

Nano SIM Holder
---------------

The nRF9160 Thing Plus has a built-in nano SIM (4FF) holder located
on the bottom side.


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

sparkfun_thing_plus_nrf9160 can be used with most programmers like:

* J-Link (the nRF53-DK is recommended)
* CMSIS-DAP based programmers

Check out `Getting Started`_ for more info.

Building an application
=======================

In most cases you'll want to use the ``ns`` target with any of the Zephyr
or Nordic based examples.

Some of the examples do not use secure mode, so they do not required the ``ns`` suffix.
A great example of this is the `hello_world` below.

Flashing
========

Follow the instructions in the :ref:`nordic_segger` page to install
and configure all the necessary software. Further information can be
found in :ref:`nordic_segger_flashing`. Then build and flash
applications as usual (see :ref:`build_an_application` and
:ref:`application_run` for more details).

Here is an example for the :ref:`hello_world` application.

First, run your favorite terminal program to listen for output.

.. code-block:: console

   $ screen /dev/<tty_device> 115200

Replace :code:`<tty_device>` with the port where the nRF9160 Thing Plus
can be found. In most cases (On Linux/Mac) it will be: :code:`/dev/tty.SLAB_USBtoUART`.

Then build and flash the application in the usual way.

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

Debugging
=========

Refer to the :ref:`nordic_segger` page to learn about debugging Nordic boards with a
Segger IC.


Testing the LEDs and buttons on the nRF9160 Thing Plus
******************************************************

There are 2 samples that allow you to test that the buttons (switches) and LEDs on
the board are working properly with Zephyr:

* :zephyr:code-sample:`blinky`
* :zephyr:code-sample:`button`

You can build and flash the examples to make sure Zephyr is running correctly on
your board. The button and LED definitions can be found in
:zephyr_file:`boards/sparkfun/thing_plus/sparkfun_thing_plus_nrf9160_common.dtsi`.

References
**********

.. target-notes::

**Side note** This page was based on the documentation for the nRF9160 DK. Thanks to Nordic for
developing a great platform!

.. _nRF9160 Thing Plus Documentation: https://docs.jaredwolff.com/nrf9160-introduction.html
.. _Getting Started: https://docs.jaredwolff.com/nrf9160-getting-started.html
