<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GPU Technology Archives - Tauro Technologies</title>
	<atom:link href="https://taurotech.com/blog/tag/gpu-technology/feed/" rel="self" type="application/rss+xml" />
	<link>https://taurotech.com/blog/tag/gpu-technology/</link>
	<description>IoT and Embedded Systems Development</description>
	<lastBuildDate>Fri, 03 Apr 2026 11:07:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.6</generator>

<image>
	<url>https://taurotech.com/wp-content/uploads/2020/04/cropped-fav_icon-32x32.png</url>
	<title>GPU Technology Archives - Tauro Technologies</title>
	<link>https://taurotech.com/blog/tag/gpu-technology/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Serial Protocols &#038; Their Uses: I2C, UART, SPI</title>
		<link>https://taurotech.com/blog/serial-protocols-their-uses/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=serial-protocols-their-uses</link>
		
		<dc:creator><![CDATA[Paul Kuepfer]]></dc:creator>
		<pubDate>Mon, 01 Aug 2022 14:32:28 +0000</pubDate>
				<category><![CDATA[Hardware design]]></category>
		<category><![CDATA[AI Accelerators]]></category>
		<category><![CDATA[CPU vs GPU]]></category>
		<category><![CDATA[Edge Computing]]></category>
		<category><![CDATA[Embedded systems]]></category>
		<category><![CDATA[GPU Technology]]></category>
		<category><![CDATA[Machine Learning Hardware]]></category>
		<guid isPermaLink="false">https://taurotech.com/?p=2180</guid>

					<description><![CDATA[<p>Serial Protocols &#38; Their Uses: I2C, UART, SPI Serial communications protocols are vital to embedded systems.&#160; While UART, I2C, and SPI have been used for short-distance device communication for decades, the benefits are not entirely apparent. In order to connect peripherals to a computer, one of the following protocols is typically employed: a Universal Asynchronous&#8230;</p>
<p>The post <a href="https://taurotech.com/blog/serial-protocols-their-uses/">Serial Protocols &#038; Their Uses: I2C, UART, SPI</a> appeared first on <a href="https://taurotech.com">Tauro Technologies</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading has-text-align-center">Serial Protocols &amp; Their Uses: I<sup>2</sup>C, UART, SPI</h1>



<p class="wp-block-paragraph">Serial communications protocols are vital to embedded systems.&nbsp; While UART, I<sup>2</sup>C, and SPI have been used for short-distance device communication for decades, the benefits are not entirely apparent.</p>



<p class="wp-block-paragraph">In order to connect peripherals to a computer, one of the following protocols is typically employed: a Universal Asynchronous Receiver Transmitter, (UART) Inter-Integrated Circuit, (I<sup>2</sup>C) or Serial Peripheral Interface (SPI). This blog will compare and contrast the features of each protocol and help you determine the best fit for your application.&nbsp;&nbsp;&nbsp;</p>



<h2 class="wp-block-heading"><strong>UART</strong></h2>



<p class="wp-block-paragraph">Universal Asynchronous Receiver Transmitter (UART) is an asynchronous serial communication device with its roots dating back to the telegraph. There is no clock signal to synchronize or validate the data transmitted from the transmitter and received by the receiver (Asynchronous Serial Communication). It sends 1 bit at a time from least significant to most significant and uses start and stop bits to enable precise clocking. During packet transmission, UART uses what is called a parity bit, to enable checking if the information has changed during transmission.&nbsp;</p>



<p class="wp-block-paragraph">In addition, data transmission between devices can be in simplex, half-duplex, or full duplex modes.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://lh6.googleusercontent.com/V7yyyzUDYk-Hc-KHbapGhQmkKkEsoZXkjYxIH_7dDTLu7NLXMKf-LxKG6xeV7Aw_ZBvRsM4r2aGrTGSF3QScDBQkJvaJ-9CTHMV3GYIONSPz-NtGMupSpEbIi7gs9AI3uQM4C94PFL_qAWrqoFN_HA" alt="Technical diagram showing UART serial communication modes: simplex, full-duplex, and half-duplex between a transmitter and receiver"/><figcaption class="wp-element-caption">Figure 1: UART Modes of Operation</figcaption></figure>
</div>


<p class="wp-block-paragraph">Data is transmitted at baud rate measured in bits per second &#8211; some of the standard baud rates are 4800 bps, 9600 bps, 19200 bps, 115200 bps etc. Out of these, 9600 bps baud rate is the most commonly used.</p>



<p class="wp-block-paragraph">UARTs must be set for the same bit speed, character length, parity, and stop bits for proper operation on the transmit and receive side. If the receiving UART detects mismatched settings a flag is sent in the host system memory to indicate a failure.&nbsp;</p>



<p class="wp-block-paragraph">The data in UART serial communication is organized into blocks called Packets or Frames. The structure of a typical UART data packet or the standard framing of the data is shown in the following table:</p>



<figure class="wp-block-table aligncenter is-style-regular"><table><thead><tr><th class="has-text-align-center" data-align="center">Frame</th><th>Start</th><th>Data</th><th>Parity</th><th class="has-text-align-left" data-align="left">Stop</th></tr></thead><tbody><tr><td class="has-text-align-center" data-align="center">Length</td><td>1 bit</td><td>5 to 9 bits</td><td>0 to 1 bits</td><td class="has-text-align-left" data-align="left">1 to 2 bits</td></tr></tbody></table><figcaption class="wp-element-caption">Table1: UART Packet Format</figcaption></figure>



<h3 class="wp-block-heading"><strong>Advantages</strong>:</h3>



<ul class="wp-block-list">
<li>Management is straightforward through hardware. It is utilized by standard protocols including RS-232/485/422.</li>



<li>Long-distance up to 1km for RS-422/485 buses.</li>



<li>Requires only two wires for full-duplex data transmission (other than power lines).</li>



<li>Parity bit ensures basic error checking is integrated into the data packet frame.</li>



<li>No need for clock or any other timing signal. </li>
</ul>



<h3 class="wp-block-heading"><strong>Disadvantages</strong>:</h3>



<ul class="wp-block-list">
<li>Communication is only between two devices where the baud rate, data bit count, parity bit, and stop bit count need to be identical.</li>



<li>Typically the size of the data frame is limited to only 9 bits (8 data bits, no parity bit and one stop bit).</li>



<li>Overrun errors if the buffer space is insufficient.</li>



<li>Size of data in the frame is limited.</li>
</ul>



<h2 class="wp-block-heading"><strong>I</strong><strong><sup>2</sup></strong><strong>C</strong></h2>



<p class="wp-block-paragraph">Unlike UART, an Inter-Integrated Circuit is a synchronous serial communication interface and utilizes the system clock. It means that data bits are transferred one by one at regular intervals of time set by a SCL clock line. It is used primarily for short distance, intra-board communication between low speed controllers and processors and is ideal for applications that link up to many components on a bus. Although I<sup>2</sup>C is typically implemented with a single master and multiple slaves on the bus, it can also be implemented with multiple masters.&nbsp; Each slave device has a unique address and I<sup>2</sup>C enables the master to send and request data from a particular slave device utilizing a start bit to the slave address.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">I2C only uses two wires to transmit data between devices:</p>



<ul class="wp-block-list">
<li>SDA (Serial Data) – The line for the master and slave to send and receive data.</li>



<li>SCL (Serial Clock) – The line that carries the clock signal (common clock signal between multiple masters and multiple slaves).</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://lh6.googleusercontent.com/CDTNji7bIFD01notv_As80smLUoGeKRiZ6vINjUPD9bvI9eXtzhKHENvDn3oH7k1pJvza4aegDXk1scdRgBrr4u-JSBtya2QMz52R_hpoJKM8EYptqQYcjNZV1pjEenYjRfg04fgSpeYTViEeuElNA" alt="Technical diagram titled &quot;Figure 3: SPI Interconnect Diagram&quot; illustrating a Microcontroller connected to two Peripheral devices using the SPI protocol, featuring shared SCK, SDI, and SDO lines with independent Chip Select (/CS) signals for each peripheral."/><figcaption class="wp-element-caption">Figure 2: I2C Interconnect Diagram</figcaption></figure>
</div>


<p class="wp-block-paragraph">The structure of a typical I<sup>2</sup>C Data Packet or the standard framing of the data is shown in the following table  (Note: The bold signals are sent by slave and the other signals by master):</p>



<figure class="wp-block-table aligncenter"><table><thead><tr><th>Frame</th><th>Start</th><th>Address</th><th>Read/Write&nbsp;</th><th><strong>ACK/NACK</strong></th><th>Data 1</th><th><strong>ACK/NACK</strong></th><th>Data 2</th><th><strong>ACK/NACK</strong></th><th>Stop</th></tr></thead><tbody><tr><td>Length</td><td></td><td>7 to 10 bits</td><td>1 bit</td><td><strong>1 bit</strong></td><td>8 bits</td><td><strong>1 bit</strong></td><td>8 bits</td><td><strong>1 bit</strong></td><td></td></tr></tbody></table><figcaption class="wp-element-caption">Table 2: I2C Packet Format</figcaption></figure>



<h3 class="wp-block-heading"><strong>Advantages</strong>:</h3>



<ul class="wp-block-list">
<li>Addressing function enables multiple masters and slaves.</li>



<li>Control a network of devices with only 2 I/O pins.</li>



<li>Simple mechanism for validation of data transfer.</li>



<li>I<sup>2</sup>C networks are easy to scale. New devices can simply be connected to the two common I<sup>2</sup>C bus lines.</li>



<li>No need for prior agreement on data transfer rate as in UART communication.</li>
</ul>



<h3 class="wp-block-heading"><strong>Disadvantages</strong>:</h3>



<ul class="wp-block-list">
<li>Slower speed (up to 100 kbit/s in standard mode, 400 kbit/s in fast mode)</li>



<li>Half-duplex interface.</li>



<li>Only one slave can be addressed at a time.</li>
</ul>



<h2 class="wp-block-heading"><strong>SPI</strong></h2>



<p class="wp-block-paragraph">The Serial Peripheral Interface (SPI) is also a synchronous serial communication device which is used primarily for short distance communication. The main difference between SPI and I<sup>2</sup>C is that SPI uses a full-duplex communication with master-slave topology. Similar to I<sup>2</sup>C , SPI can be used to access multiple slave devices.</p>



<p class="wp-block-paragraph">At the beginning of communication, the bus master configures the clock (typically 50 MHz) and sends data to the slave.&nbsp; During a single SPI clock cycle, a full duplex of data transmission is completed.&nbsp; Unlike UART, there are no start and stop bits &#8211; this enables continuous data transmission and the communication achieves higher speeds than I<sup>2</sup>C and UART.</p>



<p class="wp-block-paragraph">The maximum data rate limit is not specified in the SPI interface. Standard data rates include 10 Mbps transfer rate with some devices reaching 100Mbps transfer rate.</p>



<p class="wp-block-paragraph">The SPI bus consists of 4 signals below:</p>



<ul class="wp-block-list">
<li>Master – Out / Slave – In (MOSI)</li>



<li>Master – In / Slave – Out (MISO)</li>



<li>Serial Clock (SCLK)</li>



<li>Chip Select (CS) or Slave Select (SS)</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://lh3.googleusercontent.com/R7tGQuq4qbD9_kuxCnN2oyKx3MNuYHc_TWUEoA-AeDzvpxKSgoP6TrjNqVAlQYGAbuDu1M1th7CTyH3R4kXbIafLN-8fiF47wW-mWDnSGMngSHW10XEiwVMQj6oASa6RZqY3-Om99SzwrMQvwqAmDg" alt="SPI Interconnect Diagram"/><figcaption class="wp-element-caption">Figure 3: SPI Interconnect Diagram</figcaption></figure>
</div>


<p class="wp-block-paragraph">Depending on the values of Clock Polarity (CPOL) and Clock Phase (CPHA), there are 4 modes of operation of SPI:</p>



<ul class="wp-block-list">
<li>Mode 0 is active when Clock Polarity is LOW and Clock Phase is LOW  (CPOL = 0 and CPHA = 0). Data sampled on rising edge and shifted out on the falling edge.</li>



<li>Mode 1 is active when Clock Polarity is LOW and Clock Phase is HIGH  (CPOL = 0 and CPHA = 1). Data sampled on the falling edge and shifted out on the rising edge.</li>



<li>Mode 2 is active when Clock Polarity is HIGH and Clock Phase is LOW  (CPOL = 1 and CPHA = 0). Data sampled on the falling edge and shifted out on the rising edge.</li>



<li>Mode 3 is active when Clock Polarity is HIGH and Clock Phase is HIGH  (CPOL = 1 and CPHA = 1). Data sampled on the falling edge and shifted out on the rising edge.</li>
</ul>



<p class="wp-block-paragraph">The structure of a typical SPI data packet or the standard framing of the data is shown in the following image:</p>


<div class="wp-block-image is-style-rounded">
<figure class="aligncenter"><img decoding="async" src="https://lh3.googleusercontent.com/0nB6dpatYFry3R5R9tTU7NGl9-2aG6iYsGMAjhj2SvR068PQLJHfTc1flQL_yw8ZfoMDpSHmWRSjR0tofEn1fbh8TVXb7Zr5Qx1DqdRHGPsBjP9KyDMU1lbcTQCgC6u8NV5LmbOYDiiID9cxdV2DcA" alt="Technical diagram titled &quot;Figure 4: SPI Packet Format&quot; showing the data exchange between an SPI Master and an SPI Slave using MOSI, MISO, SCK, and SEL lines, highlighting the shift register mechanism for transferring binary data."/><figcaption class="wp-element-caption">Figure 4: SPI Packet Format</figcaption></figure>
</div>


<h3 class="wp-block-heading"><strong>Advantages</strong>:</h3>



<ul class="wp-block-list">
<li>Full-duplex is default for the SPI protocol.</li>



<li>Slaves do not require a unique address.</li>



<li>Not limited to 8-bit word size.</li>



<li>Real-estate savings on embedded boards.</li>



<li>High data transfer speed.</li>



<li>No need for individual addresses for slaves as CS or SS chip-select lines are used.</li>



<li>Only one master device is supported, removing the possibility of conflicts.</li>



<li>SPI uses less power than I<sup>2</sup>C.</li>
</ul>



<h3 class="wp-block-heading"><strong>Disadvantages</strong>:</h3>



<ul class="wp-block-list">
<li>No protocol-level error checking function and no hardware slave acknowledgement.</li>



<li>Short distances (up to 10m).</li>



<li>Each additional slave requires an additional dedicated pin on the master for CS or SS.</li>



<li>There is no acknowledgement mechanism and hence there is no confirmation of data receipt.</li>



<li>Slowest device determines transfer speed.</li>
</ul>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">In general, you can use UART if you are looking for a simple connection between 2 devices, I<sup>2</sup>C if you are connecting several devices on the same bus, and SPI becomes the ideal choice if you require a faster interface.&nbsp; Whether you need UART&#8217;s tried and true operation, or want to utilize the expansion offered by I<sup>2</sup>C or the high speed of SPI, Tauro Technologies can implement a system using the most appropriate interface for your project.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">Interested to know more?&nbsp;<a href="https://taurotech.com/contact-us/" target="_blank" rel="noreferrer noopener">Get in touch with us for details</a></p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://taurotech.com/blog/serial-protocols-their-uses/">Serial Protocols &#038; Their Uses: I2C, UART, SPI</a> appeared first on <a href="https://taurotech.com">Tauro Technologies</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
