Hello, Guest!
 
 

 
 
  Objects Tiiips Categories
DUART
"Descrizione"
by Radar (1933 pt)
2026-Jan-29 15:39

A DUART (dual asynchronous receiver/transmitter) is an IC that integrates two independent UART channels, each full-duplex, to handle asynchronous serial communications (typical RS-232/TTL style) with lower host CPU overhead than discrete solutions. A  DUART combines two programmable serial channels with internal clocking (oscillator + clock selection), a baud rate generator, a programmable counter/timer, interrupt logic, and auxiliary I/O ports.

What it provides beyond a single UART

This device  targets systems that need two serial lines with robust control and flexibility:

  • Two independent channels (A and B), each with programmable framing (data bits, parity, stop bits) and independently selectable Tx/Rx speeds.

  • Receiver buffering: the receiver is quadruple-buffered, reducing overrun risk and lowering interrupt/poll overhead.

  • Speed selection: baud rate selection from a built-in set (up to 115.2 kbaud in the family specification) and/or clocks derived from the counter/timer or external inputs.

  • Programmable 16-bit counter/timer: used as a time base, for non-standard baud generation, or for square-wave/timed outputs depending on configuration.

  • Auxiliary ports: typically a multi-purpose input port (e.g., 7-bit) and a multi-purpose output port (e.g., 8-bit) usable as GPIO or mapped to internal functions (interrupt output, handshake, clock, status).

  • Flow control: capability to inhibit a remote transmitter when the local receive buffering is full (commonly via RTS/CTS-style mechanisms or equivalent programmable functions).

Programming model (registers and driver flow)

Programming follows a per-channel register set:

  • Mode registers (e.g., MR1/MR2): define frame format (5–8 bits, parity, stop bits, special modes).

  • Clock select (CSR): selects the clock/baud source for Tx and Rx.

  • Command register (CR): enables/disables Tx/Rx, clears errors, controls break and operational functions.

  • Status register (SR): indicates Tx ready/Rx ready, line errors (parity, framing, overrun), and buffer conditions.

  • THR/RHR: transmit holding and receive holding registers used to write outgoing bytes and read incoming bytes.

A typical driver configures channel A and B, sets baud and framing, enables receive interrupts, then services I/O via interrupts (or polling) by reading RHR when RxRDY is asserted and writing THR when TxRDY is asserted.

Clocking, baud, and the counter/timer

This DUART class can operate from a crystal or external clock, using an internal baud rate generator and a programmable counter/timer to produce standard or custom rates. Separate clock selection per channel supports “dual-speed” use cases where channels (or Tx/Rx) run at different speeds.

Sketch of the most important connections (typical topology)

┌───────────────────────────┐ │ CPU / MCU │ │ D[7..0] A[ ] /RD /WR │ │ /CS /IRQ (I/O bus) │ └──────────────┬────────────┘ │ ▼ ┌──────────────────┐ │ DUART SCN2681 │ │ Ch.A: RxA/TxA │───►/◄── Line driver (TTL↔RS-232) ─► serial A │ Ch.B: RxB/TxB │───►/◄── Line driver (TTL↔RS-232) ─► serial B │ Baud gen + C/T │ │ IP[ ] / OP[ ] │───► GPIO / handshake / status └───────┬──────────┘ │                          Xtal/clk in

Evaluate