ECParts Toolkit LogoECParts Toolkit

Engineering Blog

10 Communication Bus Timing and Termination Mistakes

Digital communication failures often begin below the protocol layer. Correct register settings cannot repair an invalid pull-up window, a badly terminated bus, excessive skew, an unsupported common-mode voltage, or an unrealistic latency budget.

Reading Time
17 min
Difficulty
Intermediate
Last Updated
September 29, 2026

Separate Rate, Timing, and Physical Layer

A communication design has at least three related but distinct budgets: how many bits cross the wire, whether endpoints sample those bits at valid times, and whether the electrical waveform crosses valid thresholds.

Formula reference

Useful throughput

Throughput = line_rate × payload_bits / transmitted_bitsSerialization_time = transmitted_bits / line_rate

Variable definitions

line_rate
physical bit or symbol-derived bit rate
payload_bits
application data bits
transmitted_bits
payload plus framing and protocol overhead
Serialization_time
wire time before queuing and processing

See the Serial Interface Timing, Pull-Ups, Termination, and Cabling Guide for protocol-specific calculation workflows.

Ten Communication Design Mistakes

Mistake #1: Treating Baud Rate as Payload Throughput

Start, stop, parity, addressing, framing, encoding, acknowledgments, gaps, and protocol headers consume line time.

Better approach: Calculate frame efficiency and transaction overhead instead of equating symbol or bit rate with application data rate.

Mistake #2: Ignoring Clock Error Accumulation

Asynchronous UART sampling drifts across a frame when transmitter and receiver clocks differ. A nominal baud match does not guarantee sampling margin.

Better approach: Budget both endpoint errors, frame length, oversampling behavior, and receiver tolerance.

Mistake #3: Choosing I2C Pull-Ups From One Typical Value

Pull-ups must satisfy both rise-time and low-level sink-current limits. Bus capacitance, voltage, speed mode, leakage, and device capability all matter.

Better approach: Calculate the valid resistance window and validate rise time on the assembled bus.

Mistake #4: Assuming SPI Has No Timing Limit

SPI has no universal cable length or frequency guarantee. Propagation delay, skew, return path, driver edge rate, and slave timing set the real limit.

Better approach: Check setup, hold, clock-to-output, trace delay, topology, and edge quality at the receiver pins.

Mistake #5: Using CAN Bit Rate Without a Sample-Point Plan

Nominal baud rate can be correct while propagation segment, phase segments, oscillator tolerance, and sample point are unsuitable for the network.

Better approach: Design timing quanta and sample point against bus length, transceiver delay, and node tolerance.

Mistake #6: Terminating Every Node

Parallel termination belongs at transmission-line ends. Extra terminators overload drivers and distort differential amplitude.

Better approach: Identify the physical trunk ends; keep stubs short and terminate according to the interface topology.

Mistake #7: Confusing RS-232 and RS-485 Electrical Rules

RS-232 is single-ended and point-to-point; RS-485 is differential and supports multidrop buses. Their voltage levels, grounding, termination, and topology differ.

Better approach: Apply the correct physical-layer rules rather than treating both as generic serial ports.

Mistake #8: Ignoring Common-Mode and Ground-Potential Limits

Differential signaling rejects some common-mode noise but transceivers still have finite common-mode ranges and surge ratings.

Better approach: Review grounding, shielding, isolation, biasing, protection, and expected ground offset.

Mistake #9: Estimating Latency From Serialization Alone

Queuing, arbitration, retries, processing, buffering, polling, software scheduling, and propagation add latency.

Better approach: Separate serialization, protocol, network, processing, and worst-case contention terms.

Mistake #10: Debugging Protocol Before the Physical Layer

Software traces can distract from slow edges, ringing, wrong levels, missing bias, swapped polarity, and poor return paths.

Better approach: Measure power, idle levels, edge shape, differential voltage, clock, and timing at the receiver before changing firmware.

Practical Examples

UART frame efficiency

An 8-N-1 UART frame carries 8 payload bits in 10 transmitted bits. At 115200 baud, the ideal payload ceiling is 92.16 kbit/s before packet gaps and higher-level overhead.

I2C resistance window

A pull-up must be low enough to charge bus capacitance within the allowed rise time and high enough that devices can sink the resulting low-state current while meeting VOL.

RS-485 termination load

Two 120 Ω end terminators appear as about 60 Ω differential load to the driver. Adding termination at every node can quickly violate drive capability.

Latency budget

A 100-byte message at 1 Mbit/s needs at least 0.8 ms for raw bits. Framing, arbitration, response time, retries, and software can make end-to-end latency several times larger.

Bring-Up Workflow

  1. 1. Confirm interface electrical standard, voltage levels, topology, and pinout.
  2. 2. Calculate nominal timing, frame overhead, sample point, and latency budget.
  3. 3. Check pull-up, termination, bias, cable, and common-mode requirements.
  4. 4. Review propagation delay, edge rate, trace or cable impedance, return path, and stubs.
  5. 5. Measure at the receiving node rather than only at the transmitter.
  6. 6. Test minimum and maximum voltage, temperature, data rate, loading, and cable length.
  7. 7. Add protocol decoding only after waveform levels and timing are credible.
  8. 8. Validate error handling, arbitration, retries, and worst-case software latency.

Summary

Reliable communication requires agreement between protocol rate, frame overhead, timing margin, voltage thresholds, topology, transmission-line behavior, common-mode range, and software latency. Calculate each layer separately, then validate the waveform at the receiver in the real network.

Support reference

FAQ

Is baud rate the same as bit rate?

Not always. Baud is symbol rate. They are numerically equal only when each symbol carries one bit, as in common binary UART signaling.

Why is UART payload throughput lower than baud rate?

UART adds start, stop, and optional parity bits. Packet framing and idle gaps reduce application throughput further.

How do I choose an I2C pull-up resistor?

Calculate the range bounded by rise-time/bus-capacitance requirements and the devices' low-level sink-current capability, then verify the waveform.

Does SPI have a maximum cable length?

No universal value exists. The limit depends on clock and edge rate, topology, impedance, return path, driver strength, receiver timing, and noise.

Where should CAN or RS-485 termination be placed?

Normally at the two physical ends of the main bus, using the characteristic impedance specified for the cable or network.

Why are long stubs a problem?

A stub creates a transmission-line discontinuity. Reflections return to the trunk and can disturb thresholds and timing.

What causes communication latency besides data rate?

Framing, arbitration, queuing, retries, processing, buffering, propagation, polling intervals, and software scheduling all contribute.

What should I measure first when a bus is unreliable?

Check supply and ground, idle levels, voltage thresholds, edge shape, ringing, timing at receiver pins, termination, topology, and noise before assuming a protocol bug.