“SoftwareSerial” PIO-based UART

Equivalent to the Arduino SoftwareSerial library, an emulated UART using one or two PIO state machines is included in the Arduino-Pico core. This allows for up to 4 bidirectional or up to 8 unidirectional serial ports to be run from the RP2040 without requiring additional CPU resources.

Instantiate a SerialPIO(txpin, rxpin, fifosize) object in your sketch and then use it the same as any other serial port. Even, odd, and no parity modes are supported, as well as data sizes from 5- to 8-bits. Fifosize, if not specified, defaults to 32 bytes.

To instantiate only a serial transmit or receive unit, pass in SerialPIO::NOPIN as the txpin or rxpin.

For example, to make a transmit-only port on GP16 .. code:: cpp

SerialPIO transmitter( 16, SerialPIO::NOPIN );

For detailed information about the Serial ports, see the Arduino Serial Reference .

SoftwareSerial Emulation

A SoftwareSerial wrapper is included to provide plug-and-play compatibility with the Arduino Software Serial library. Use the normal #include <SoftwareSerial.h> to include it. The following differences from the Arduino standard are present:

  • Inverted mode is not supported

  • All ports are always listening

  • listen call is a no-op

  • isListening() always returns true