zephyr/samples/drivers/uart/passthrough
Attie Grande cf14d4f1fd samples: drivers: uart: Add a 'passthrough' example
This sample can be used as a "virtual wire", allowing direct access to
devices connected to the target processor - for example: GPS, Cellular,
etc...

This is also useful as a utility - no other connectivity options exist
for UART, where other interfaces like SPI and I2C have shell commands.

Signed-off-by: Attie Grande <attie.grande@argentum-systems.co.uk>
2024-01-27 15:33:29 +01:00
..
boards samples: drivers: uart: Add a 'passthrough' example 2024-01-27 15:33:29 +01:00
src samples: drivers: uart: Add a 'passthrough' example 2024-01-27 15:33:29 +01:00
CMakeLists.txt samples: drivers: uart: Add a 'passthrough' example 2024-01-27 15:33:29 +01:00
prj.conf samples: drivers: uart: Add a 'passthrough' example 2024-01-27 15:33:29 +01:00
README.rst samples: drivers: uart: Add a 'passthrough' example 2024-01-27 15:33:29 +01:00
sample.yml samples: drivers: uart: Add a 'passthrough' example 2024-01-27 15:33:29 +01:00

.. zephyr:code-sample:: uart-passthrough
   :name: UART Passthrough
   :relevant-api: uart_interface

   Pass data directly between the console and another UART interface.

Overview
********

This sample will virtually connect two UART interfaces together, as if Zephyr
and the processor were not present. Data read from the console is transmitted
to the "*other*" interface, and data read from the "*other*" interface is
relayed to the console.

The source code for this sample application can be found at:
:zephyr_file:`samples/drivers/uart/passthrough`.

Requirements
************

#. One UART interface, identified as Zephyr's console.
#. A second UART connected to something interesting (e.g: GPS), identified as
   the chosen ``uart,passthrough`` device - the pins and baudrate will need to
   be configured correctly.

Building and Running
********************

Build and flash the sample as follows, changing ``nucleo_l476rg`` for your
board:

.. zephyr-app-commands::
   :zephyr-app: samples/drivers/uart/passthrough
   :board: nucleo_l476rg
   :goals: build flash
   :compact:

Sample Output
=============

.. code-block:: console

    *** Booting Zephyr OS build zephyr-v3.5.0-2988-gb84bab36b941 ***
    Console Device: 0x8003940
    Other Device:   0x800392c
    $GNGSA,A,3,31,29,25,26,,,,,,,,,11.15,10.66,3.29,1*06
    $GNGSA,A,3,,,,,,,,,,,,,11.15,10.66,3.29,2*0F
    $GNGSA,A,3,,,,,,,,,,,,,11.15,10.66,3.29,3*0E
    $GNGSA,A,3,,,,,,,,,,,,,11.15,10.66,3.29,4*09
    $GNGSA,A,3,,,,,,,,,,,,,11.15,10.66,3.29,5*08