.. _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 :zephyr:code-sample:`logging` sample
or the :zephyr:code-sample:`usb-cdc-acm-console` sample applications to see how this works.

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

The DotStar LED has been implemented as a SPI device and can be tested
with the :zephyr:code-sample:`led-apa102` 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 :zephyr:code-sample:`blinky`
   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
