+1 500 000 products in offer

6000 packages per day

+300 000 clients from 150 countries

Quick Buy Favourites
Cart

Popular communication interfaces and protocols

Date of publication: 26-07-2024 Update date: 20-04-2026 🕒 12 min read

I2C, SPI, GPIO, UART... Every electronics engineer encounters these acronyms when browsing through the assortment of development kits or single-board computers, or when looking for a microcontroller for their project. If you still have doubts about how to interpret them, there’s nothing to worry about, and this text is just for you.

If you ask what the acronyms mentioned in the introduction refer to, the answer is very simple: these are the names of various communication interfaces. Unfortunately, this issue gets complicated very quickly once we start to investigate. First of all, a doubt arises: are the interface and the bus one and the same thing? And what about the protocol? What is the “seriality” of the interface? And so on.

Understanding the elementary issues in the field of digital communication makes it easier to navigate in many areas of electronics. They are present not only in telecommunications or the construction of microprocessor systems, but even when discussing the architecture of processors themselves. Get acquainted with the basics of this topic and see what the most popular communication methods in electronic circuits are.

In this text, we answer the following questions:

Why do we talk about “communication”?

For a person who is completely unfamiliar with modern electronics, the use of the word “communication” in relation to integrated circuits may seem a bit confusing. Actually, it would be exaggerated even in the case of classic electronic circuits, where the current flow and changes in its intensity caused a specific reaction of components, and these in turn interacted with each other similarly to gears, valves and other mechanisms in a machine.

In the case of digital electronics, things are different. Let’s take the example of a light switch in a modern electronic system in a “smart” building. A traditional switch contains contacts: by pressing the lever, the user physically shorts two pieces of metal, thereby closing the circuit and allowing current to flow through the bulb. In a “smart” switch, things get much more complicated (which also explains its name). Pressing the button changes the logic state at the microcontroller input (e.g. from high to low, from 1 to 0). The program implemented by the microcontroller receives the message. Using one of its interfaces, it instructs the wireless communication module soldered to the same circuit to send a data packet containing information that a specified switch has just been pressed into the ether. Radio waves reach the controller hidden in the distribution box. Inside it, the receiving module decodes the message and then transmits it (again via PCB paths and via some interface) to the central microprocessor. Still, it does not operate the lighting circuits directly. Instead, through another interface, it sends another message, most often addressed to the expansion system, which communicates the message “0” or “1” to the unipolar transistor gate, which results in switching on or disconnecting the power supply for the bulb.

Even such a comprehensive description contains many simplifications, but above all it illustrates the scale of the issue we are dealing with.Communication between systems within circuits and also between circuits themselves performs a key function in electronics today.

Differences between interface, bus and protocol

Let us start with three basic concepts related to the transmission of information:interface, bus and protocol. Their equivalents can be found in every communication theory, even in those related to interpersonal interactions.Interface should be understood as an electronic circuit whose task is to transmit signals from one circuit to another. Usually, its capability is that of a transceiver. The concept of an interface refers to both the physical layer (e.g. the presence of specific leads or even a specific connector) and the functional layer (the ability to encode/decode messages according to a specific standard). Therefore, if we say that the microcontroller “has a UART interface”, it means that it is fitted with an integrated circuit that is capable of transmitting data in this standard, and that this circuit is connected to specific leads of the integrated circuit. It would also be correct to say that “a typical laptop has a USB interface”.Bus refers to the construction of the circuit itself. We speak here about physical paths or wires that are used to connect components. The bus consists of lines (wires, PCB paths) grouped according to their function, e.g. address lines, data bus, etc. In the practice of basic electronic circuits, groups of lines are rarely encountered, as most often each bus line has its own specific function. Let us note here that although the concepts of the interface and the bus are similar, they refer to other elements of the communication system: the interface is an electronic system that serves to connect a given circuit to the bus.

This leaves us with the last important concept: protocol. It is the most intuitive of all those names, it can be understood even literally: a protocol or a set of rules that makes up the communication method. It is more than just the “language” in which the data is transmitted, because it also describes the entire information exchange procedure. Quite often in microprocessor systems, simple electronic devices, etc. – interface, bus and protocol are described using one standard, which will be clear later on in the text. It is not a rule, though, and the methods of using the Internet are the best example here. Even if we are not aware of it, we use it on a daily basis not only through various interfaces (network card, Wi-Fi module, through various buses (electrical connections, fibre optic connections), but also using various protocols (TCP/IP, HTTPS, SMB and many others).

Serial and parallel communication

Before we look at examples of interfaces, one distinction present in electronic communication needs to be clarified: the division into parallel and serial interfaces (buses).

The method of parallel communication involves the simultaneous transmission of several bits of data, while serial interfaces are usually used for sequential transmission. Parallel buses were still very popular at the end of the 20th century, because they allowed the transmission of a relatively large amount of data at a low signal frequency. For example: the printer port (LPT) included eight data lines, thanks to which it could transmit a full byte of data in one tranche, and thus a single character (or actually ASCII code). To transmit the same number of bits, serial transmission needs eight pulses, and thus such an interface operates at eight times the frequency.

Currently, communication systems reach frequencies of hundreds of gigahertz, which allows for the widespread use of serial interfaces – even where a significant transmission speed is required. An example of such an evolution is the computer industry, where two decades ago small serial interfaces (SATA) began to be used, replacing the parallel ATA technology. SATA is, literally, “serial ATA”, derived from English Serial AT Attachment.

The serial method offers both design-related and practical advantages because it requires fewer lines, and therefore, for example, the use of cables with only a few wires, which can be much thicker (i.e. more durable). Serial buses occupy a smaller area of printed circuits than parallel ones, as they require only 2-4 paths (instead of a dozen), thus contributing to the miniaturisation of electronic devices.

In fact, some of the most popular displays can be used as an example of miniaturisation: alphanumeric LCD models equipped with (or compatible with) the HD44780 controller. They are available in two versions: with a parallel interface, where 10 interface lines are needed for control; and more modern variants, countered with the I2C serial interface (discussed later in the text). Thanks to that, the display can be incorporated into the project using only four wires (including power lines!).

Interfaces found in microcontroller circuits

Knowing the basic concepts, we can get to the heart of the topic and discuss popular communication methods in digital systems. It should be noted, however, that we will not go into the details of protocols, syntax and specifications here – for two reasons. First of all, the length of this text is limited, but what is important: precise information about the operation of the interface is usually not necessary to use it or even apply it in the project. Of course, we must be aware of the possibilities and limitations of a given technology, but in many cases microcontrollers and programming environments are designed in such a way that the use of the interface is as simple as possible. By no means should you see it as a praise of ignorance; after all ease of use and functionality are the main ideas that guide the creation of all electronic interfaces.

I2C

I2C Standard (from Inter-Integrated Circuit) was developed by Philips as a universal method of bidirectional communication between integrated circuits in electronic circuits. The I2C serial bus consists of two lines – serial clock, SCL (each pulse signals the transmission of a bit) and serial data, SDA (single bit).

One circuit connected to the bus acts as a controller (master), generates a clock signal and directs communication (by transmitting the initiating/ending commands, sending commands to individual circuits), while the other components operate in the slave mode, and therefore in the executive mode (their behaviour is determined by the instructions coming from the master circuit). In some cases, slave is only a receiver (e.g. display), in others (e.g. analogue-to-digital converters), these units transmit data via a bus, but only in response to a specific command of the central system and in accordance with their own protocol (precisely specifying the number of available bits), which manufacturers describe in detail in their documentation.

Each slave element connected to the bus has a unique 7-bit address that allows it to recognise whether the commands sent by the controller are directed to it. Consequently: such a method of communication enables the connection of over 100 circuits. Often, the user has a degree of choice of the address, as it is selected by shorting specific pins with the ground or the line supplying the circuit. Thanks to this, several or even a dozen elements of the same type (or even a model) can be connected to a single bus.

Thanks to the simplicity of I2C, software emulation is possible, and therefore even microcontrollers without a hardware interface can use this method of communication. What is more: one microcontroller can support several or even a dozen I2C buses, and therefore very complex circuits.

I2C is often used to communicate with Arduino modules (LED drivers or motors, sensors, displays), Raspberry Pi HATs and many other products intended for amateurs and hobbyists, but it also enjoys unflagging success in professional applications. Since it allows transmission at speeds of up to 5 Mbit/s, it can be used to transmit video or monitor the status of sensors in real time without any obstacles.

I2S

I2S is a related standard, but it is incompatible with I2C bus. It was developed for the transmission of stereo sound (S from sound) in the lossless PCM format. This method is used in many multimedia devices, from smartphones to HiFi amplifiers. It is based on three lines (one of them determines which channel the data is addressed to) and (optionally) an additional clock signal to maintain the correct sample playback frequency.

SPI

In terms of intended functions, SPI (Serial Peripheral Interface) remains very close to I2C. In fact, it is an older attempt to create a universal communication interface in digital circuits. It was taken up in the late 1970s at Motorola (at that time, it was one of the leading suppliers of microprocessors for personal computers). SPI remains a very popular standard and is used, for example, for communication with SD memory cards or programming microcontrollers.

The SPI bus consists of four connections: serial clock signal (SCLK), two data lines, and chip select (CS). Each system operating in the slave mode has its own CS line, which is used to signal with which element connected to the bus communication is carried out (in more complex circuits, addressing analogous to that in I2C is used). SPI takes into account two data lines, because transmission can take place simultaneously in both directions (this mode is referred to as full duplex, in contrast to half duplex, where the two circuits exchange the sender and recipient roles). The bus contains a MOSI (Master Out, Slave In) and MISO (Master In, Slave Out) signal, where the first serves to transmit data and instructions from the controller to the slave circuits, while the latter works in the opposite direction.

The SPI interface is simple to implement, and allows for very fast data transmission, which makes it widely used to support various communication modules, memory, registers and other peripherals. Nowadays, virtually every microcontroller offers hardware support for this interface, which means that using it does not burden the core and allows you to construct miniature devices with complex functionality.

UART

UART is a full duplex interface, but it uses only two lines: transmit (Tx) and receive (Rx). As you can see, unlike the above-described communication methods, the bus does not predict a clock signal. This is due to the fundamental assumptions of UART, i.e. Universal Asynchronous Receiver-Transmitter. This means that we are now looking at the issue of asynchronous transmission, which we have not yet encountered.

Synchronous and asynchronous communication

Both I2C and SPI are synchronous interfaces, i.e. they predict the presence of a signal synchronising communication (e.g. SCL), determining its speed and the behaviour of devices included in the circuit. In the case of asynchronous transmission, the transmission is carried out using initiating and interrupting messages, and its speed is most often determined at the initiation stage: in the program code performed by the microcontroller or port settings (within the operating system or specific application options).

UART is the oldest of the presented solutions, and its assumptions are still used in digital electronics – they are also the basis for such standards as USB, Ethernet, etc. Most operating systems or bootloaders support asynchronous, serial communication ports, which are used for diagnostic purposes, for software updates, etc. UART outputs can be found in the form of test points on the PCB of almost every device based on Linux, UNIX and related systems. Moreover, there is a wide range of adapters available on the market for connecting devices using different versions of this interface (often, the differences boil down to the voltage values present at the transmission lines), e.g. the transition from UART 5 V to 3.3 V, or to the computer RS-232 port.

The presence of a UART interface does not assume the use of a specific protocol – in practice, the UART port can be applied for communication with a text terminal, control of communication devices (GSM, LTE modem, GPS receivers), for which AT commands or instructions required by a given module are used.

GPIO

GPIO is an inaccurate term. It is used to refer to a set of system/circuit leads whose function is communication or control. The very name GPIO means “General-Purpose Input/Output”. In practice, these are simply pins of an electronic circuit, the purpose of which is to receive or send binary signals (which can be used to emulate interfaces). Often, GPIO pins can perform several software-configured functions, as is the case, for example, in microcontrollers. Their internal circuit allows you to connect a single pin to the input of the A/C converter, the output of the PWM generator or another component. It is not uncommon for GPIO lines to include pins of hardware interfaces: SPI, I2C, UART, etc.

JTAG

JTAG (from Joint Test Action Group) is an interface and protocol for programming, testing and diagnostics of microprocessor systems (although its use is possible and can be beneficial even in very simple circuits). The JTAG functionality includes, among others, ISP (In-System Programming), i.e. programming microcontrollers after placing them on the PCB, and debugging circuits, i.e. verification of connections. The standard assumes serial connection of the tested systems – thanks to this, the components installed in the system can be connected by one bus, which at further stages of prototyping/production will be used to upload software, control the quality of the device or test it in the event of a failure.

MIPI DSI

The interfaces of phones, tablets and many other devices are based on colour displays. To ensure comfortable interaction and optimal response time, the screen content must be refreshed dozens of times per second. This means transferring colour data of hundreds of thousands or even millions of pixels in a dozen or so milliseconds. Theoretically, this task can be carried out using one of the above-described interfaces, but it would absorb a significant part of the processor’s computing power. That is why a group of influential electronics manufacturers created the MIPI project. (Mobile Industry Processor Interface), under which, among others, MIPI DSI (MIPI Display Serial Interface) was developed. This interface is now widely implemented in integrated circuits of microcontrollers and microprocessors, as it facilitates and standardises methods of communication with displays, especially those with high resolution, mounted in smartphones, consoles, VR glasses, etc.

The technology is based on a serial, two-wire bus, which includes a high-frequency clock signal and one or more transmission buses. They use the differential transmission method (a signal transmitted by two lines with opposite polarity), thanks to which high immunity to interference is achieved. MIPI DSI also describes its own protocol that takes into account error correction.

Other common interfaces and buses

The above-described standards are the solutions most often found in electronic circuits – however, the list of interfaces we will encounter in the context of electronics, computers, as well as automation (including industrial) is, of course, much longer. We will not describe the details of all popular communication methods here – however, we will discuss the basic features and applications of the most important ones. This knowledge will make it easier for us to identify electronic components, search for the right adapters, and even hold basic diagnostics of devices and machines.

CAN bus

The CAN (Controller Area Network) bus was developed for communication between devices in road vehicles. Thanks to its high immunity to interference, it is now used in many other applications, e.g. building automation, medical devices, robotics. Thanks to that, data transmission in the automotive industry is standardised, which subsequently allows to simplify diagnostic procedures, as well as electronically adjust the operating parameters of automotive components (from lighting to units controlling engine operation).

PCIe standard and its predecessors

The name Peripheral Component Interconnect Express, or PCIe, can be found in the computer industry. This is the bus used to connect expansion cards to the processor. This standard is used today by almost all peripherals connected directly to the motherboard: network cards, sound cards, graphics cards, hard drives (SSD with M.2 connector). PCIe comes in several versions defined by the suffixes x1, x16, etc. This number indicates how many serial communication lines a given bus contains. Because the standard has a very high transmission speed (theoretically even hundreds of GB/s), it has gradually replaced its predecessors and competitors (SATA, PCI, AGP).

USB

The USB (Universal Serial Bus) deserves to be described separately here, because this concept includes a number of issues, from constantly expanding possibilities to various formats of connectors. Subsequent generations of the standard introduced additional bus lines and even expanded the voltage and current parameters of power lines. USB is, of course, a commonly recognised communication standard for consumer devices, but it is worth noting that it is also increasingly natively supported by microcontrollers, thanks to which their connection to a computer no longer requires the use of an adapter (adapter for the UART interface).

HDMI

HDMI is an interface with enormous capabilities, although at its core it primarily serves transmission of multimedia signals (i.e. sound and image) in digital form. However, the latest generations of the standard have much more extensive functionality, being able to deliver control messages to many receivers (CEC,Consumer Electronic Control), conduct two-way transmission (return channel), and even mediate communication with the Internet.

Industrial automation

Many specific communication standards are found in the field of automation. In this field, you can still encounter new and competing standards developed by leading manufacturers of industrial equipment. Each bus (modbus, Profibus, S-Bus, etc.) has its own features and methodology, allowing for comprehensive control of machines in factories, warehouses, logistics points and other industries, where scaling and centralisation capabilities are crucial. This field is also extremely extensive due to the exceptional lifespan of some solutions, such as the RS-485 interface. There are also many strictly specialised solutions, such as the M-Bus used almost exclusively for communication with measuring devices.

Protocols used in ICT

A little earlier, we pointed out that one clear example distinguishing the interface from the protocol is the field of computer science, especially computer networks. Finally, let us take a look at the most popular communication protocols that we – more or less consciously – use when using a computer:

  • SSH – an encrypted protocol most often used to remotely manage servers and other computers/devices connected to the network, primarily using the terminal and command line.
  • Telnet – an older protocol with similar functionality, but less secure, therefore rarely used, mostly for amateur applications.
  • TCP (Transmission Control Protocol) – one of the fundamental protocols for communication via the Internet. It is still very often used in conjunction with the IP protocol, which determines how to establish a connection between points in the network. Hence the abbreviation TCP/IP, which is the name of the entire theoretical model of Internet communication.
  • FTP (File Transfer Protocol) – a protocol primarily used for transferring files.
  • SMB – a set of services and rules for sharing files, printers and peripherals (including ports) via local networks. It is mainly used in Microsoft software, but also used (with the Samba server) in Linux systems, especially in consumer and educational distributions.
  • HTTP(S), or Hypertext Transfer Protocol, is the basic way of communicating with the WWW (World Wide Web), a method of transmitting the content of what we call websites. Currently, the dominant version of this protocol is HTTPS (S from Secure), which offers encryption of packet content, increasing user security.

Transfer Multisort Elektronik (TME) is one of the world’s largest global distributors of electronic components, electrotechnical parts, workshop equipment, and industrial automation. The catalog includes over 1,500,000 products from 1,300 leading manufacturers. TME’s modern logistics centers in Łódź and Rzgów (Poland), with a combined area of over 40,000 m², ship nearly 6,000 packages daily to customers in more than 150 countries.

TME also invests in the development of knowledge and skills of young engineers and electronics enthusiasts through the TME Education project, and supports the tech community by organizing the TechMasterEvent series, promoting innovation and experience exchange.