AN844: Guide to Host/Network Co-
Processor Communications Using Silicon
Labs Thread and Connect
This document describes how to set up and test UART communi-
cation between a host and NCP (Network Co-Processor) using
ASHv3-UART, and how to load NCP. It assumes that you have a
Raspberry Pi, USB cable (for UART communication), and a de-
velopment board. It applies to Silicon Labs Thread stack version
1.0 or later, and Silicon Labs Connect stack version 1.2 or later,
provided as part of the Flex SDK.
Connect is supported for EFR32FG, EFR32MG1x, and
EFR32BG1x.
KEY POINTS
Hardware configuration information.
Building and using the ASHv3-UART test
application.
Building and using the standard UART
host application.
Building and using a host bootloader
application
silabs.com | Building a more connected world. Rev. 0.7
1. Introduction
A Network Co-Processor (NCP) runs the Silicon Labs Thread or Connect stack and is controlled by the host processor through ASHv3-
UART commands. The NCP must be a chip in the Ember® EM35x family or Wireless Gecko (EFR32™) portfolio. The host is a Linux
device such as a Raspberry Pi. ASHv3 is the third revision of the Asynchronous Serial Host (ASH). It is a reliable and efficient UART
communication protocol that is used to facilitate NCP and Host communication. ASHv3 operates on the same level as the UART and
interfaces directly with it.
This document assumes that the NCP platform is loaded with an application image. Both stacks come with NCP UART examples (one
with hardware and one with software flow control) that can be compiled and loaded onto the NCP platform. The NCP platform should
also be loaded with a correctly-configured serial bootloader (serial-uart-bootloader). For Silicon Labs Thread, *.hex images contain both
a bootloader and application. *.ebl and *.s37 images contain just an application; a bootloader must be loaded separately when using
these images. For Connect, building an example in Studio generates both types of images: Bootloader+application and application
alone. See AN961: Bringing up Custom Nodes for the Mighty Gecko and Flex Gecko Families, and AN710: Bringing Up Custom Devi-
ces for the EM35x, to learn how to configure a serial bootloader on an EFR32 and EM35x, respectively.
The Linux host can be loaded with the ASHv3-UART test application (ash-v3-test-app) or, for Silicon Labs Thread, with ip-driver-app
and a host application, referred to in these instructions as [host-app]. When ip-driver-app is loaded, you can also load the host boot-
loading application (bootload-ncp-uart-app).
This application note describes the following:
Hardware configuration information.
Building and using the ASHv3-UART test application
Building and using the standard UART host application
Building and using a host bootloader application
For additional information on using Simplicity Studio and building Thread or Connect applications, see QSG113: Getting Started with
Silicon Labs Thread, or QSG138: Getting Started with the Silicon Labs Flex SDK for the Wireless Gecko (EFR32™) Portfolio. For addi-
tional information on ASHv3, see UG115: ASHv3 Protocol Reference.
AN844: Guide to Host/Network Co-Processor Communications Using Silicon Labs Thread and Connect
Introduction
silabs.com | Building a more connected world. Rev. 0.7 | 2