Module rp2040_hal::uart

source ·
Expand description

Universal Asynchronous Receiver Transmitter (UART)

See Chapter 4 Section 2 of the datasheet for more details

Usage

See examples/uart.rs for a more complete example

use rp2040_hal::{Clock, clocks::init_clocks_and_plls, gpio::{Pins, FunctionUart}, pac, sio::Sio, uart::{self, DataBits, StopBits, UartConfig, UartPeripheral}, watchdog::Watchdog};
use fugit::RateExtU32;

const XOSC_CRYSTAL_FREQ: u32 = 12_000_000; // Typically found in BSP crates

let mut peripherals = pac::Peripherals::take().unwrap();
let sio = Sio::new(peripherals.SIO);
let pins = Pins::new(peripherals.IO_BANK0, peripherals.PADS_BANK0, sio.gpio_bank0, &mut peripherals.RESETS);
let mut watchdog = Watchdog::new(peripherals.WATCHDOG);
let mut clocks = init_clocks_and_plls(XOSC_CRYSTAL_FREQ, peripherals.XOSC, peripherals.CLOCKS, peripherals.PLL_SYS, peripherals.PLL_USB, &mut peripherals.RESETS, &mut watchdog).ok().unwrap();

// Set up UART on GP0 and GP1 (Pico pins 1 and 2)
let pins = (
    pins.gpio0.into_mode::<FunctionUart>(),
    pins.gpio1.into_mode::<FunctionUart>(),
);
// Need to perform clock init before using UART or it will freeze.
let uart = UartPeripheral::new(peripherals.UART0, pins, &mut peripherals.RESETS)
    .enable(
        UartConfig::new(9600.Hz(), DataBits::Eight, None, StopBits::One),
        clocks.peripheral_clock.freq(),
    ).unwrap();

uart.write_full_blocking(b"Hello World!\r\n");

Modules

common_configsDeprecated
Common configurations for UART.

Structs

UART is disabled.
UART is enabled.
Customizable Uart pinout, allowing you to set the pins individually.
When there’s a read error.
Half of an UartPeripheral that is only capable of reading. Obtained by calling UartPeripheral::split()
A struct holding the configuration for an UART device.
An UART Peripheral based on an underlying UART device.
Half of an UartPeripheral that is only capable of writing. Obtained by calling UartPeripheral::split()

Enums

Data bits
Error type for UART operations.
Rx/Tx FIFO Watermark
Parity The “none” state of parity is represented with the Option type (None).
Possible types of read errors. See Chapter 4, Section 2 §8 - Table 436: “UARTDR Register”
Stop bits

Traits

Indicates a valid CTS pin for UART0 or UART1
Indicates a valid RTS pin for UART0 or UART1
Indicates a valid RX pin for UART0 or UART1
State of the UART Peripheral.
Indicates a valid TX pin for UART0 or UART1
Trait to handle both underlying devices (UART0 & UART1)
Declares a valid UART pinout.