Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
Skip to lesson

Course contents

  • How to Use This Course
  • Protocol Metrics Reference
  • Protocols Glossary
  • Reading Path
  • Protocol Fundamentals25
  • AMBA Family (APB / AHB / AXI)17
  • Coherence Fabrics (ACE / CHI)17
  • Memory Interfaces (DDR / LPDDR / HBM)17
  • PCIe & CXL17
  • Embedded Peripherals (I2C / SPI / UART)17
    • I2C Timing & Arbitration
    • SPI Modes & Chip-Select Rules
    • UART Flow Control
      • UART Flow Control: Concepts
      • UART Flow Control: Integration
      • UART Flow Control: Debug
      • UART Flow Control: Interview
    • Peripheral Integration Debug
    • Embedded Peripherals (I2C / SPI / UART): Tricky Q&A
  • High-Speed I/O (USB / Ethernet / MIPI)17
  • Protocol Verification & Compliance17
  • Protocols Interview Prep5
  • Interface Protocols Cheatsheet
Loading lesson

←UART Flow Control
  1. Topics
  2. Bus Protocols
  3. Embedded Peripherals (I2C / SPI / UART)
  4. UART Flow Control
  5. UART Flow Control: Concepts
On this page

    Interface ProtocolsAll levels

    UART Flow Control: Concepts

    Concepts for UART Flow Control.

    Core concepts

    UART frame and baud

    In a common non-inverted UART format, idle is high and a low start bit is followed by configured data bits, optional parity and a high stop interval. Many UARTs send the least-significant data bit first, but framing options and polarity are implementation/configuration contracts.

    A receiver qualifies the start bit and samples according to its own clocking algorithm; oversampling by 16 is common but not universal. Allowable transmitter/receiver baud mismatch depends on sample placement, frame length, resynchronisation behaviour, jitter and both clock errors, so use the controller/device specification rather than a universal ±3% rule.

    • Baud = clock / divisor — integer divisor limits available rates.

    • FIFO depth determines how long the CPU can ignore the UART.

    • Overrun: an arriving character cannot be retained because the receiver holding register/FIFO has no available capacity under that implementation's policy.

    Flow control

    Hardware flow control commonly uses RTS/CTS, but signal direction, polarity and automatic FIFO-threshold behaviour depend on DTE/DCE wiring and the UART implementation. Confirm what the local controller calls RTS and when the remote transmitter must stop; account for bytes already in flight.

    Software flow control reserves control characters such as XON/XOFF in the byte stream. Arbitrary binary payload needs an agreed escaping/framing rule or software flow control disabled; it is not inherently impossible, but raw unescaped bytes can be misinterpreted.

    • Size receive service from FIFO capacity, trigger level, worst-case service latency, frame bits per character and bytes already in flight.

    • DMA on UART: watch for underrun on TX (DMA too slow).

    • Console UART in boot: polling mode avoids interrupt setup complexity.

    Key takeaways

    • Baud = clock / divisor — integer divisor limits available rates.

    • FIFO depth determines how long the CPU can ignore the UART.

    • Overrun: an arriving character cannot be retained because the receiver holding register/FIFO has no available capacity under that implementation's policy.

    Previous

    106 / 154

    Next: UART Flow Control: Integration

    Up next

    Up nextUART Flow Control: Integration

    Sign in to save progress

    Practice this lessonPrevious lessonReport an error

    See also

    • UART Flow Control: Debug
    • UART Flow Control: Interview