.. zephyr:board:: contextualelectronics_abc

Overview
********

The Contextual Electronics ABC (PCA10056) hardware provides support for the
Nordic Semiconductor nRF52840 ARM Cortex-M4F CPU and the following devices:

* 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)`
* Segger RTT (RTT Console)
* :abbr:`SPI (Serial Peripheral Interface)`
* :abbr:`UART (Universal asynchronous receiver-transmitter)`
* Quectel BG95 Modem

More information about the board can be found at the `ABC Board website`_.
The `Nordic Semiconductor Infocenter`_ contains the processor's information
and the datasheet.

Hardware
********

ABC board has two external oscillators. The frequency of the slow clock
is 32.768 kHz. The frequency of the main clock is 32 MHz.

- nRF52840 ARM Cortex-M4F processor at 64 MHz
- 1 MB flash memory and 256 KB of SRAM
- SWD connector

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

.. zephyr:board-supported-hw::

See `ABC Board website`_ for more details on this board, and
`Nordic Semiconductor Infocenter`_ for a complete list of SoC
features.

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

.. zephyr:board-supported-runners::

Applications for the ``contextualelectronics_abc`` board configuration can be
built and flashed in the usual way (see :ref:`build_an_application`
and :ref:`application_run` for more details).

Flashing
========

Flashing Zephyr onto the ``contextualelectronics_abc`` board requires
an external programmer. The programmer is attached to the SWD header.

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

   .. zephyr-app-commands::
      :zephyr-app: samples/hello_world
      :board: contextualelectronics_abc
      :goals: build
      :compact:

Flash the image.

   .. zephyr-app-commands::
      :zephyr-app: samples/hello_world
      :board: contextualelectronics_abc
      :goals: flash
      :compact:

To see the output, run your favorite terminal program.

.. code-block:: console

   $ minicom -D <tty_device> -b 115200

Replace :code:`<tty_device>` with the port where the ABC board
can be found. For example, under Linux, :code:`/dev/ttyACM0`.

Debugging
=========

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

Selecting the pins
==================

Pins can be configured in the board pinctrl file. To see the available mappings,
open the `nRF52840 Product Specification`_, chapter 7 'Hardware and Layout'.
In the table 7.1.1 'aQFN73 ball assignments' select the pins marked
'General purpose I/O'.  Note that pins marked as 'low frequency I/O only' can only be used
in under-10KHz applications. They are not suitable for 115200 speed of UART.

References
**********

.. target-notes::

.. _ABC Board website: https://contextualelectronics.com/courses/advanced-ble-cell-abc-board/
.. _Nordic Semiconductor Infocenter: https://infocenter.nordicsemi.com
.. _J-Link Software and documentation pack: https://www.segger.com/jlink-software.html
.. _nRF52840 Product Specification: http://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.0.pdf
