.. zephyr:board:: adafruit_feather_nrf52840

Overview
********

The Adafruit Feather nRF52840 provides support for the Nordic Semiconductor
nRF52840 ARM Cortex-M4F CPU and the following devices:

* :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)`
* RADIO (Bluetooth Low Energy and 802.15.4)
* :abbr:`RTC (nRF RTC System Clock)`
* Segger RTT (RTT Console)
* :abbr:`SPI (Serial Peripheral Interface)`
* :abbr:`UART (Universal asynchronous receiver-transmitter)`
* :abbr:`USB (Universal Serial Bus)`
* :abbr:`WDT (Watchdog Timer)`

.. tabs::

   .. group-tab:: Express

      .. figure:: img/adafruit_feather_nrf52840_express.jpg
           :align: center
           :alt: Adafruit Feather nRF52840 Express

   .. group-tab:: Sense

      .. figure:: img/adafruit_feather_nrf52840_sense.jpg
           :align: center
           :alt: Adafruit Feather nRF52840 Sense

Hardware
********

- nRF52840 ARM Cortex-M4F processor at 64 MHz
- 1 MB flash memory and 256 KB of SRAM
- Battery connector and charger for 3.7 V lithium polymer batteries
- Charging indicator LED
- 2 User LEDs
- 1 NeoPixel LED
- Reset button
- SWD connector (Express only)
- SWD solder pads on bottom of PCB (Sense only)
- LSM6DS33 Accel/Gyro (Sense only)
- LIS3MDL magnetometer (Sense only)
- APDS9960 Proximity, Light, Color, and Gesture Sensor (Sense only)
- MP34DT01-M PDM Microphone sound sensor (Sense only)
- SHT3X Humidity sensor (Sense only)
- BMP280 temperature and barometric pressure/altitude (Sense only)

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

The Adafruit Feather 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                  |
+-----------+------------+----------------------+
| RADIO     | on-chip    | Bluetooth,           |
|           |            | ieee802154           |
+-----------+------------+----------------------+
| RTC       | on-chip    | system clock         |
+-----------+------------+----------------------+
| SPI       | on-chip    | spi                  |
+-----------+------------+----------------------+
| UART      | 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
===================

.. tabs::

   .. group-tab:: Express

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

   .. group-tab:: Sense

      The `Adafruit Feather nRF52840 Sense Learn site`_ has
      detailed information about the board including
      `pinouts (Sense)`_ and the `schematic (Sense)`_.

LED
---

* LED0 (red) = P1.15 (Express)
* LED0 (red) = P1.9 (Sense)
* LED1 (blue) = P1.10

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

* SWITCH = P1.02
* RESET = P0.18

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

Flashing
========

Flashing Zephyr onto both the Feather nRF52840 Express and Sense is possible
using the SWD headers. Only the Express board has an SWD connector however.

Both the Feather nRF52840 Express and Sense ship with the `Adafruit nRF52 Bootloader`_
which supports flashing using `UF2`_. This allows easy flashing of new images,
but does not support debugging the device.

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

.. tabs::

   .. group-tab:: Express

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

   .. group-tab:: Express UF2

      .. zephyr-app-commands::
         :zephyr-app: samples/basic/blinky
         :board: adafruit_feather_nrf52840/nrf52840/uf2
         :goals: build
         :compact:

   .. group-tab:: Sense

      .. zephyr-app-commands::
         :zephyr-app: samples/basic/blinky
         :board: adafruit_feather_nrf52840/nrf52840/sense
         :goals: build
         :compact:

   .. group-tab:: Sense UF2

      .. zephyr-app-commands::
         :zephyr-app: samples/basic/blinky
         :board: adafruit_feather_nrf52840/nrf52840/sense/uf2
         :goals: build
         :compact:

#. If using UF2, connect the board to your host computer using USB.

#. Tap the reset button twice quickly to enter bootloader mode.
   A mass storage device named ``FTHR840BOOT`` for (Express) or
   ``FTHRSNSBOOT`` (Sense) should appear on the host. Ensure this is
   mounted.

#. Flash the image.

.. tabs::

   .. group-tab:: Express

      .. zephyr-app-commands::
         :zephyr-app: samples/basic/blinky
         :board: adafruit_feather_nrf52840
         :goals: flash
         :compact:

   .. group-tab:: Express UF2

      .. zephyr-app-commands::
         :zephyr-app: samples/basic/blinky
         :board: adafruit_feather_nrf52840/nrf52840/uf2
         :goals: flash
         :compact:


   .. group-tab:: Sense

      .. zephyr-app-commands::
         :zephyr-app: samples/basic/blinky
         :board: adafruit_feather_nrf52840/nrf52840/sense
         :goals: flash
         :compact:

   .. group-tab:: Sense UF2

      .. zephyr-app-commands::
         :zephyr-app: samples/basic/blinky
         :board: adafruit_feather_nrf52840/nrf52840/sense/uf2
         :goals: flash
         :compact:

#. You should see the red LED blink.

References
**********

.. target-notes::

.. _Adafruit Feather nRF52840 Express Learn site:
    https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/

.. _pinouts (Express):
    https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/pinouts

.. _schematic (Express):
    https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/downloads

.. _Adafruit Feather nRF52840 Sense Learn site:
    https://learn.adafruit.com/adafruit-feather-sense

.. _pinouts (Sense):
    https://learn.adafruit.com/adafruit-feather-sense/pinouts

.. _schematic (Sense):
    https://learn.adafruit.com/adafruit-feather-sense/downloads

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

.. _UF2:
    https://github.com/microsoft/uf2
