modm API documentation

#include <modm/architecture/interface/uart.hpp>

Inheritance diagram for modm::Uart:
modm::PeripheralDriver modm::platform::BufferedUart< Hal, Buffers > modm::platform::Itm modm::platform::Rtt

Classes

struct  RxBuffer
 
struct  TxBuffer
 

Static Public Member Functions

template<class... Signals>
static void connect ()
 
template<class SystemClock , baudrate_t baudrate, percent_t tolerance = 10_pct>
static void initialize ()
 
static void writeBlocking (uint8_t data)
 Write a single byte and wait for completion.
 
static void writeBlocking (const uint8_t *data, std::size_t length)
 Write a block of bytes and wait for completion.
 
static void flushWriteBuffer ()
 Flush the write buffer, waits in a while loop until isWriteFinished() returns true
 
static bool write (uint8_t data)
 
static std::size_t write (const uint8_t *data, std::size_t length)
 
static bool isWriteFinished ()
 
static bool read (uint8_t &data)
 
static std::size_t read (uint8_t *data, std::size_t length)
 
static std::size_t receiveBufferSize ()
 
static std::size_t discardReceiveBuffer ()
 
static std::size_t transmitBufferSize ()
 
static std::size_t discardTransmitBuffer ()
 
static bool hasError ()
 
static void clearError ()
 Reset the sticky error indication.
 
static void acknowledgeInterruptFlag ()
 
template<uint64_t available, uint64_t requested, percent_t tolerance>
static void assertBaudrateInTolerance ()
 
template<double available, double requested, percent_t tolerance>
static void assertDurationInTolerance ()
 
static void configurePurpose ()
 configures a peripheral for a specific purpose
 
static bool getInterruptFlag ()
 Read an interrupt flag.
 
static void getParameter ()
 returns a parameter
 
static void setParameter ()
 sets a parameter
 

Static Public Attributes

static constexpr size_t RxBufferSize = 16
 Size of the receive buffer.
 
static constexpr size_t TxBufferSize = 16
 Size of the transmit buffer.
 

Detailed Description

Interface of an Uart.

Asynchronous and synchronous, buffered access to the Uart.

Author
Niklas Hauser

Member Function Documentation

static void modm::PeripheralDriver::acknowledgeInterruptFlag ( )
inheritedstatic

Acknowledge an interrupt flag.

We use acknowledge here, since it describes the intention rather than the actual implementation.

template<uint64_t available, uint64_t requested, percent_t tolerance>
static void modm::PeripheralDriver::assertBaudrateInTolerance ( )
inheritedinlinestatic

Since baudrates are usually generated by prescaling a system clock, only several distinct values can be generated. This method checks if the user requested baudrate is within error tolerance of the system achievable baudrate.

template<class... Signals>
static void modm::Uart::connect ( )
static

Connect GPIOs to the peripheral and configure them.

This configures the Tx and Rx signals as output and input and connects them.

Template Parameters
SignalsOne Tx and one Rx signal are required and can be passed out-of-order.
static std::size_t modm::Uart::discardReceiveBuffer ( )
static

Empty the receive FIFO queue and hardware buffer.

Returns
the size of the deleted FIFO queue.
static std::size_t modm::Uart::discardTransmitBuffer ( )
static

Empty the transmit FIFO queue and hardware buffer.

Returns
the size of the deleted FIFO queue.
static bool modm::Uart::hasError ( )
static
Returns
true if an error occured during any write or read
template<class SystemClock , baudrate_t baudrate, percent_t tolerance = 10_pct>
static void modm::Uart::initialize ( )
static

Initializes the hardware and sets the baudrate.

Template Parameters
SystemClockthe currently active system clock
baudratedesired baud rate in Hz
tolerancethe allowed absolute tolerance for the resulting baudrate
static bool modm::Uart::isWriteFinished ( )
static
Returns
true if the buffer is empty and the last byte has been sent
static bool modm::Uart::read ( uint8_t &  data)
static

Read a single byte.

Parameters
[out]dataByte read, if any
Returns
true if a byte was received, false otherwise
static std::size_t modm::Uart::read ( uint8_t *  data,
std::size_t  length 
)
static

Read a block of bytes.

Parameters
[out]dataPointer to a buffer big enough to store length bytes
lengthNumber of bytes to be read
Returns
Number of bytes which could be read, maximal length
static std::size_t modm::Uart::receiveBufferSize ( )
static
Returns
the size of the receive FIFO queue.
static std::size_t modm::Uart::transmitBufferSize ( )
static
Returns
the size of the transmit FIFO queue.
static std::size_t modm::Uart::write ( const uint8_t *  data,
std::size_t  length 
)
static

Pushes a block of bytes into the buffer.

Parameters
dataPointer to a buffer big enough to store length bytes
lengthNumber of bytes to be written
Returns
the number of bytes pushed into the buffer, maximal length
static bool modm::Uart::write ( uint8_t  data)
static

Pushes a single byte into the buffer.

Returns
true if data has been buffered, false if buffer is full

The documentation for this class was generated from the following file: