Fixes #472 Instead of using interrupts, explicitly call the IRQ handler dueing Serial read/peek/available calls. Add to keywords.txt for syntax hilighting. Add poll calls in the SerialUART::write-like calls (write, flush, etc.) Really remove division from IRQ routines/
47 lines
1.6 KiB
ReStructuredText
47 lines
1.6 KiB
ReStructuredText
Serial Ports (USB and UART)
|
|
===========================
|
|
|
|
The Arduino-Pico core implements a software-based Serial-over-USB port
|
|
using the USB ACM-CDC model to support a wide variety of operating
|
|
systems.
|
|
|
|
``Serial`` is the USB serial port, and while ``Serial.begin()`` does allow
|
|
specifying a baud rate, this rate is ignored since it is USB-based.
|
|
(Also be aware that this USB ``Serial`` port is responsible for resetting
|
|
the RP2040 during the upload process, following the Arduino standard
|
|
of 1200bps = reset to bootloader).
|
|
|
|
The RP2040 provides two hardware-based UARTS with configurable
|
|
pin selection.
|
|
|
|
``Serial1`` is ``UART0``, and ``Serial2`` is ``UART1``.
|
|
|
|
Configure their pins using the ``setXXX`` calls prior to calling ``begin()``
|
|
|
|
.. code:: cpp
|
|
|
|
Serial1.setRX(pin);
|
|
Serial1.setTX(pin);
|
|
Serial1.begin(baud);
|
|
|
|
The size of the receive FIFO may also be adjusted from the default 32 bytes by
|
|
using the ``setFIFOSize`` call prior to calling ``begin()``
|
|
|
|
.. code:: cpp
|
|
Serial1.setFIFOSize(128);
|
|
Serial1.begin(baud);
|
|
|
|
The FIFO is normally handled via an interrupt, which reduced CPU load and
|
|
makes it less likely to lose characters. However, the FIFO introduces up
|
|
to 32 bit-times of delay before serial data is available to the application.
|
|
|
|
For applications where this is an issue (i.e. very low baud), use
|
|
``setPollingMode(true)`` before calling ``begin()``
|
|
|
|
.. code:: cpp
|
|
Serial1.setPollingMode(true);
|
|
Serial1.begin(110)
|
|
|
|
For detailed information about the Serial ports, see the
|
|
Arduino `Serial Reference <https://www.arduino.cc/reference/en/language/functions/communication/serial/>`_ .
|