“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
SerialPIO transmitter( 16, SerialPIO::NOPIN );
For detailed information about the Serial ports, see the Arduino Serial Reference .
Inversion
SoftwareSerial
and SerialPIO
can both support inverted input and/or outputs via the methods
setInvertRX(bool invert)
and setInvertTX(bool invert)
.
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:
All ports are always listening
listen
call is a no-opisListening()
always returnstrue