Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

136 lines
4.7 KiB

.. _openthread_rcp_arduino_shield:
OpenThread RCP over Arduino header
##################################
Overview
********
This (virtual) shield can be used to connect a board with an Arduino R3 compatible header to an
external `OpenThread RCP`_ device. The RCP device would function as the Thread radio, while another
board can function as the OpenThread host.
Requirements
************
An RCP radio device is needed for this shield to work. As an example, the reference from
OpenThread using the :zephyr:board:`nrf52840dk` is chosen as a demonstration. Refer to the
`OpenThread on nRF52840 Example website`_.
Both UART and SPI can be used as the transport, depending on the board connections.
The following was executed on Ubuntu 24.04 to build and flash the RCP firmware:
Preparation
===========
.. code-block:: bash
git clone https://github.com/openthread/ot-nrf528xx.git --recurse-submodules
cd ot-nrf528xx
python3 -m venv .venv
source .venv/bin/activate
./script/bootstrap
Building
========
.. tabs::
.. group-tab:: UART
.. code-block:: bash
# Set -DOT_PLATFORM_DEFINES="UART_HWFC_ENABLED=1" to enable flow control
./script/build nrf52840 UART_trans -DOT_PLATFORM_DEFINES="UART_HWFC_ENABLED=0"
.. group-tab:: SPI
.. code-block:: bash
./script/build nrf52840 SPI_trans_NCP
Flashing
========
.. code-block:: bash
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp build/bin/ot-rcp.hex
nrfjprog -f nrf52 --chiperase --program build/bin/ot-rcp.hex --reset
Pins Assignments
================
The RCP firmware comes with default pins assigned, the following table lists both the Arduino header
pins and the nRF52840DK pins.
.. tabs::
.. group-tab:: UART
+-----------------------+-----------------------+-----------------------+
| Arduino Header Pin | Function (host) | nRF52840 DK Pin |
+=======================+=======================+=======================+
| D0 | UART RX | P0.06 |
+-----------------------+-----------------------+-----------------------+
| D1 | UART TX | P0.08 |
+-----------------------+-----------------------+-----------------------+
| Host specific | UART CTS | P0.05 (flow control) |
+-----------------------+-----------------------+-----------------------+
| Host specific | UART RTS | P0.07 (flow control) |
+-----------------------+-----------------------+-----------------------+
.. group-tab:: SPI
+-----------------------+-----------------------+-----------------------+
| Arduino Header Pin | Function | nRF52840 DK Pin |
+=======================+=======================+=======================+
| D8 | RSTn | P0.18/RESET |
+-----------------------+-----------------------+-----------------------+
| D9 | INTn | P0.30 |
+-----------------------+-----------------------+-----------------------+
| D10 | SPI CSn | P0.29 |
+-----------------------+-----------------------+-----------------------+
| D11 | SPI MOSI | P0.04 |
+-----------------------+-----------------------+-----------------------+
| D12 | SPI MISO | P0.28 |
+-----------------------+-----------------------+-----------------------+
| D13 | SPI SCK | P0.03 |
+-----------------------+-----------------------+-----------------------+
Programming
***********
Include ``--shield openthread_rcp_arduino_serial`` or ``--shield openthread_rcp_arduino_spi``
when you invoke ``west build`` for projects utilizing this shield. For example:
.. tabs::
.. group-tab:: UART
.. zephyr-app-commands::
:zephyr-app: samples/net/sockets/echo_client
:board: stm32h573i_dk/stm32h573xx
:shield: openthread_rcp_arduino_serial
:conf: "prj.conf overlay-ot-rcp-host-uart.conf"
:goals: build
.. group-tab:: SPI
.. zephyr-app-commands::
:zephyr-app: samples/net/sockets/echo_client
:board: stm32h573i_dk/stm32h573xx
:shield: openthread_rcp_aduino_spi
:conf: "prj.conf overlay-ot-rcp-host-uart.conf"
:goals: build
References
**********
.. target-notes::
.. _OpenThread RCP:
https://openthread.io/platforms/co-processor
.. _OpenThread on nRF52840 Example website:
https://github.com/openthread/ot-nrf528xx/blob/main/src/nrf52840/README.md