zephyr/boards/arm/contextualelectronics_abc/doc/index.rst
Bilal Wasim f4a26837c8 boards/arm: Adding Contextual Electronics Advanced BLE Cell board to Zephyr
This commit adds supports for the nRF52840 based BLE Cell board from
Contextual Electronics. This board contains support for BG95 Modem,
BQ52895 charger, SD card etc and can be used as a PI Hat.

In this commit, this board supports UART, I2C, SPI, Modem. Support
for charger, SD card and other things will be added later.

Signed-off-by: Bilal Wasim <bilalwasim676@gmail.com>
2021-01-07 15:14:23 +01:00

157 lines
5.1 KiB
ReStructuredText

.. _contextualelectronics_abc:
Contextual Eletronics Advanced BLE Cell
#######################################
Overview
********
The Contextual Eletronics 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
.. figure:: img/contextualelectronics_abc.jpg
:width: 2046px
:align: center
:alt: Contextual Electronics Advanced BLE Cell
Contextual Electronics Advanced BLE Cell (Credit: Chris Gamell)
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
==================
The contextualelectronics_abc board configuration supports the following
hardware features:
+-----------+------------+----------------------+
| Interface | Controller | Driver/Component |
+===========+============+======================+
| CLOCK | on-chip | clock_control |
+-----------+------------+----------------------+
| FLASH | on-chip | flash |
+-----------+------------+----------------------+
| GPIO | on-chip | gpio |
+-----------+------------+----------------------+
| I2C(M) | on-chip | i2c |
+-----------+------------+----------------------+
| MPU | on-chip | arch/arm |
+-----------+------------+----------------------+
| NVIC | on-chip | arch/arm |
+-----------+------------+----------------------+
| PWM | on-chip | pwm |
+-----------+------------+----------------------+
| RTC | on-chip | system clock |
+-----------+------------+----------------------+
| RTT | Segger | console |
+-----------+------------+----------------------+
| SPI(M) | on-chip | spi |
+-----------+------------+----------------------+
| UART | on-chip | serial |
+-----------+------------+----------------------+
| Modem | on-board | quectel_bg9x |
+-----------+------------+----------------------+
Other hardware features are not supported by the Zephyr kernel.
See `ABC Board website`_ for more details on this board, and
`Nordic Semiconductor Infocenter`_ for a complete list of SoC
features.
Programming and Debugging
*************************
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 :ref:`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
==================
To select the pin numbers for tx-pin and rx-pin:
.. code-block:: console
tx-pin = <pin_no>
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.
Translate the 'Pin' into number for devicetree by using the following formula::
pin_no = b\*32 + a
where ``a`` and ``b`` are from the Pin value in the table (Pb.a).
For example, for P0.1, ``pin_no = 1`` and for P1.0, ``pin_no = 32``.
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