Communication protocols are not only classified by timing synchronization (synchronous vs asynchronous), but also by directionality — how data moves between devices.
Based on who can transmit and receive data, communication links are divided into three categories: Simplex, Half Duplex, and Full Duplex. Understanding these modes helps firmware engineers select the right protocol and correctly configure hardware interfaces.
What is Simplex Communication?
In simplex communication, data flows in one direction only. It is a strict, unidirectional link where one dedicated device acts solely as the transmitter, and the other acts solely as the receiver. No return path exists.
A simple example of simplex communication is television or radio broadcasting, where the broadcasting station continuously transmits signals and home receivers only receive them without sending any response back. Similarly, GPS satellites constantly broadcast location and timing information, while GPS devices in smartphones or vehicles only receive this data and do not transmit information back to the satellites.
What is Half Duplex Communication?
In half duplex communication, both connected devices can transmit and receive data, but not at the same time. They must take turns. While Device A is transmitting, Device B must listen. Once Device A finishes, the direction of the bus switches, and Device B can transmit while Device A listens.
Walkie-talkies and the CAN (Controller Area Network) bus are common examples of half-duplex communication. In a walkie-talkie system, users share a single radio channel, so only one person can speak at a time while the other listens. Similarly, on a CAN bus, multiple Electronic Control Units (ECUs) share the same communication medium and can both send and receive data, but only one ECU can successfully transmit on the bus at any given moment while the others wait for access.
What is Full Duplex Communication?
In full duplex communication, both devices can transmit and receive data simultaneously. Neither device has to wait. Separate physical data paths are allocated for transmit and receive operations, allowing concurrent, independent data streams.
Phone calls and SPI (Serial Peripheral Interface) are common examples of full-duplex communication. During a phone call, both people can speak and listen at the same time without waiting for the other person to finish. Similarly, SPI uses separate MOSI and MISO data lines, allowing a microcontroller and peripheral device to transmit and receive data simultaneously.
Simplex vs Half Duplex vs Full Duplex
Each communication mode represents a trade-off between hardware complexity, wiring requirements, and data throughput. Simplex communication prioritizes simplicity, half duplex balances flexibility with resource usage, and full duplex delivers the highest performance at the cost of additional hardware.
Fig 4 — Comparison of Communication Modes
| Feature | Simplex | Half Duplex | Full Duplex |
|---|---|---|---|
| Communication Direction | One-way only | Two-way (alternating) | Two-way (simultaneous) |
| Data Flow | Sender → Receiver | Either direction, one at a time | Both directions at the same time |
| Acknowledgment Support | Not possible | Supported | Supported |
| Communication Path | Single path | Shared path | Separate TX and RX paths |
| Hardware Complexity | Low | Moderate | Higher |
| Wiring Requirement | Minimal | Minimal | Additional signal paths required |
| Throughput | Lowest | Moderate | Highest |
| Typical Examples | GPS Receivers, Broadcast Systems | CAN Bus, RS-485, Walkie-Talkies | SPI, Ethernet, Phone Calls |
Choosing the Right Communication Mode
Simplex is suitable when data only needs to travel in one direction. Half duplex is commonly used when devices must exchange information but can share a common communication channel. Full duplex is preferred when maximum throughput and real-time bidirectional communication are required.
Why This Matters
Firmware engineers encounter these communication modes whenever they configure peripherals or debug interfaces. Understanding the difference between simplex, half duplex, and full duplex communication helps when selecting protocols, designing driver software, and diagnosing bus contention or data transfer issues.
Quick Summary
Simplex, half duplex, and full duplex communication differ in how data flows between devices. Simplex supports one-way transfers, half duplex enables bidirectional communication one direction at a time, and full duplex allows simultaneous transmission and reception. Understanding these communication modes helps firmware engineers select appropriate interfaces, design reliable drivers, and troubleshoot communication issues in embedded systems.