.. _adafruit_itsybitsy_nrf52840:

Adafruit ItsyBitsy nRF52840
###########################

Overview
********

The Adafruit ItsyBitsy nRF52840 Express is a small (36 mm x 18 mm) ARM
development board with an onboard RGB LED, USB port, 2 MB of QSPI flash,
and range of I/O broken out onto 21 GPIO pins.

This development kit has the following features:

* :abbr:`ADC (Analog to Digital Converter)`
* CLOCK
* FLASH
* :abbr:`GPIO (General Purpose Input Output)`
* :abbr:`I2C (Inter-Integrated Circuit)`
* :abbr:`I2S (Inter-Integrated Sound)`
* :abbr:`MPU (Memory Protection Unit)`
* :abbr:`NVIC (Nested Vectored Interrupt Controller)`
* :abbr:`PWM (Pulse Width Modulation)`
* :abbr:`QSPI (Quad Serial Peripheral Interface)`
* RADIO (Bluetooth Low Energy and 802.15.4)
* :abbr:`RTC (nRF RTC System Clock)`
* :abbr:`SPI (Serial Peripheral Interface)`
* :abbr:`UARTE (Universal asynchronous receiver-transmitter)`
* :abbr:`USB (Universal Serial Bus)`
* :abbr:`WDT (Watchdog Timer)`

.. image:: img/adafruit_itsybitsy_nrf52840.jpeg
     :align: center
     :alt: Adafruit ItsyBitsy nRF52840 Express

Hardware
********
- nRF52840 ARM Cortex-M4F CPU at 64MHz
- 1 MB of flash memory and 256 KB of SRAM
- 2 MB of QSPI flash
- A user LED
- A user switch
- An RGB DotStar LED
- Native USB port
- One reset button

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

The Adafruit ItsyBitsy nRF52840 board configuration supports the
following hardware features:

+-----------+------------+----------------------+
| Interface | Controller | Driver/Component     |
+===========+============+======================+
| ADC       | on-chip    | adc                  |
+-----------+------------+----------------------+
| CLOCK     | on-chip    | clock_control        |
+-----------+------------+----------------------+
| FLASH     | on-chip    | flash                |
+-----------+------------+----------------------+
| GPIO      | on-chip    | gpio                 |
+-----------+------------+----------------------+
| I2C       | on-chip    | i2c                  |
+-----------+------------+----------------------+
| MPU       | on-chip    | arch/arm             |
+-----------+------------+----------------------+
| NVIC      | on-chip    | arch/arm             |
+-----------+------------+----------------------+
| PWM       | on-chip    | pwm                  |
+-----------+------------+----------------------+
| QSPI(M)   | on-chip    | nor                  |
+-----------+------------+----------------------+
| RADIO     | on-chip    | Bluetooth,           |
|           |            | ieee802154           |
+-----------+------------+----------------------+
| RTC       | on-chip    | system clock         |
+-----------+------------+----------------------+
| SPI       | on-chip    | spi                  |
+-----------+------------+----------------------+
| UARTE     | on-chip    | serial               |
+-----------+------------+----------------------+
| USB       | on-chip    | usb                  |
+-----------+------------+----------------------+
| WDT       | on-chip    | watchdog             |
+-----------+------------+----------------------+

Other hardware features have not been enabled yet for this board.

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

The `Adafruit ItsyBitsy nRF52840 Express Learn site`_ has detailed
information about the board including `pinouts`_ and the `schematic`_.

LED
---

* LED0 (red) = P0.06

* LED1 (Adafruit DotStar)

    * DATA = P0.08

    * CLK = P1.09

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

* SWITCH = P0.29

* RESET = P0.18

Logging
-------

Logging is done using the USB-CDC port. See the :ref:`logger_sample`
or the :ref:`cdc-acm-console` sample applications to see how this works.

Testing LEDs and buttons on the Adafruit ItsyBitsy nRF52840 Express
*******************************************************************
The :ref:`button-sample` sample lets you test the buttons (switches) and the red LED.
The :ref:`blinky-sample` sample lets you test the red LED.

The DotStar LED has been implemented as a SPI device and can be tested
with the :ref:`led_apa102_sample` sample application.

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/arm/adafruit_itsybitsy_nrf52840/adafruit_itsybitsy_nrf52840.dts`.

Programming and Debugging
*************************
The ItsyBitsy ships with the BOSSA compatible UF2 bootloader.  The
bootloader can be entered by quickly tapping the reset button twice.

First time setup
================
Some versions of this board were shipped with a buggy bootloader.
Ensure that the bootloader is up to date by following the
`Adafruit UF2 Bootloader update`_ tutorial. Note that this tutorial
was made for the Adafruit Feather nRF52840, but the steps to update
the bootloader are the same for the ItsyBitsy. The files for the
ItsyBitsy bootloader can be found in the `Adafruit nRF52 Bootloader repo`_.

The building and flashing of Zephyr applications have been tested with
release 0.7.0 of the UF2 bootloader.

Flashing
========
Flashing is done by dragging and dropping the built Zephyr UF2-file
into the :code:`ITSY840BOOT` drive.

#. Build the Zephyr kernel and the :ref:`blinky-sample`
   sample application:

   .. zephyr-app-commands::
      :zephyr-app: samples/basic/blinky
      :board: adafruit_itsybitsy_nrf52840
      :goals: build
      :compact:

#. Connect the ItsyBitsy to your host computer using USB

#. Tap the reset button twice quickly to enter bootloader mode

#. Flash the image:

   Drag and drop the file :code:`samples/basic/blinky/build/zephyr/zephyr.uf2`
   into :code:`ITSY840BOOT`

The device will disconnect and you should see the red LED blink.

References
**********

.. target-notes::

.. _Adafruit ItsyBitsy nRF52840 Express Learn site:
    https://learn.adafruit.com/adafruit-itsybitsy-nrf52840-express

.. _pinouts:
    https://learn.adafruit.com/adafruit-itsybitsy-nrf52840-express/pinouts

.. _schematic:
    https://learn.adafruit.com/adafruit-itsybitsy-nrf52840-express/downloads

.. _Adafruit UF2 Bootloader update:
    https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/update-bootloader

.. _Adafruit nRF52 Bootloader repo:
    https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases
