<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://stm32world.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lth</id>
	<title>Stm32World Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://stm32world.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lth"/>
	<link rel="alternate" type="text/html" href="https://stm32world.com/wiki/Special:Contributions/Lth"/>
	<updated>2026-05-03T13:55:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7499</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7499"/>
		<updated>2026-05-03T00:22:15Z</updated>

		<summary type="html">&lt;p&gt;Lth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous vs. Synchronous ==&lt;br /&gt;
&lt;br /&gt;
Serial communication exist in two different types.  In synchronous communication, the data line(s) are combined with a clock signal that synchronize the devices together.  In asynchronous communication there is no clock signal and the transmission speeds are &amp;quot;agreed upon&amp;quot;.  This require a fairly precise timing for both transmitters and receivers.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
[[File:Two Serial Ports.jpg|thumb|300px]]&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;upper limit&amp;quot; on speed - it depends on the capabilities of the master and slaves.  Speeds in the Mbit range is common, even 10s of Mbit.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.  It was designed to provide reliable communication in noisy environments and it is typically used in vehicles (cars, ships).  It is a package oriented bus and do away with the concept of master and slave.  Every device on the bus can transmit packages and every device will receive all those packages and individually must decide what to do with them.&lt;br /&gt;
&lt;br /&gt;
Multiple CAN standards exist with different speed.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
To be added!&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7498</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7498"/>
		<updated>2026-05-03T00:21:45Z</updated>

		<summary type="html">&lt;p&gt;Lth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress| Work in progress]]&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous vs. Synchronous ==&lt;br /&gt;
&lt;br /&gt;
Serial communication exist in two different types.  In synchronous communication, the data line(s) are combined with a clock signal that synchronize the devices together.  In asynchronous communication there is no clock signal and the transmission speeds are &amp;quot;agreed upon&amp;quot;.  This require a fairly precise timing for both transmitters and receivers.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
[[File:Two Serial Ports.jpg|thumb|300px]]&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;upper limit&amp;quot; on speed - it depends on the capabilities of the master and slaves.  Speeds in the Mbit range is common, even 10s of Mbit.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.  It was designed to provide reliable communication in noisy environments and it is typically used in vehicles (cars, ships).  It is a package oriented bus and do away with the concept of master and slave.  Every device on the bus can transmit packages and every device will receive all those packages and individually must decide what to do with them.&lt;br /&gt;
&lt;br /&gt;
Multiple CAN standards exist with different speed.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
To be added!&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7497</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7497"/>
		<updated>2026-05-03T00:21:24Z</updated>

		<summary type="html">&lt;p&gt;Lth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[:Category:Work in progress| Work in progress]]&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous vs. Synchronous ==&lt;br /&gt;
&lt;br /&gt;
Serial communication exist in two different types.  In synchronous communication, the data line(s) are combined with a clock signal that synchronize the devices together.  In asynchronous communication there is no clock signal and the transmission speeds are &amp;quot;agreed upon&amp;quot;.  This require a fairly precise timing for both transmitters and receivers.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
[[File:Two Serial Ports.jpg|thumb|300px]]&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;upper limit&amp;quot; on speed - it depends on the capabilities of the master and slaves.  Speeds in the Mbit range is common, even 10s of Mbit.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.  It was designed to provide reliable communication in noisy environments and it is typically used in vehicles (cars, ships).  It is a package oriented bus and do away with the concept of master and slave.  Every device on the bus can transmit packages and every device will receive all those packages and individually must decide what to do with them.&lt;br /&gt;
&lt;br /&gt;
Multiple CAN standards exist with different speed.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
To be added!&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7496</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7496"/>
		<updated>2026-05-03T00:15:43Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* RS-232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous vs. Synchronous ==&lt;br /&gt;
&lt;br /&gt;
Serial communication exist in two different types.  In synchronous communication, the data line(s) are combined with a clock signal that synchronize the devices together.  In asynchronous communication there is no clock signal and the transmission speeds are &amp;quot;agreed upon&amp;quot;.  This require a fairly precise timing for both transmitters and receivers.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
[[File:Two Serial Ports.jpg|thumb|300px]]&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;upper limit&amp;quot; on speed - it depends on the capabilities of the master and slaves.  Speeds in the Mbit range is common, even 10s of Mbit.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.  It was designed to provide reliable communication in noisy environments and it is typically used in vehicles (cars, ships).  It is a package oriented bus and do away with the concept of master and slave.  Every device on the bus can transmit packages and every device will receive all those packages and individually must decide what to do with them.&lt;br /&gt;
&lt;br /&gt;
Multiple CAN standards exist with different speed.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
To be added!&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=File:Two_Serial_Ports.jpg&amp;diff=7495</id>
		<title>File:Two Serial Ports.jpg</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=File:Two_Serial_Ports.jpg&amp;diff=7495"/>
		<updated>2026-05-03T00:15:19Z</updated>

		<summary type="html">&lt;p&gt;Lth: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Bus&amp;diff=7494</id>
		<title>Hardware Interconnect Bus</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Bus&amp;diff=7494"/>
		<updated>2026-05-02T23:54:48Z</updated>

		<summary type="html">&lt;p&gt;Lth: Lth moved page Hardware Interconnect Bus to Hardware Interconnect Buses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Hardware Interconnect Buses]]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7493</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7493"/>
		<updated>2026-05-02T23:54:43Z</updated>

		<summary type="html">&lt;p&gt;Lth: Lth moved page Hardware Interconnect Bus to Hardware Interconnect Buses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous vs. Synchronous ==&lt;br /&gt;
&lt;br /&gt;
Serial communication exist in two different types.  In synchronous communication, the data line(s) are combined with a clock signal that synchronize the devices together.  In asynchronous communication there is no clock signal and the transmission speeds are &amp;quot;agreed upon&amp;quot;.  This require a fairly precise timing for both transmitters and receivers.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;upper limit&amp;quot; on speed - it depends on the capabilities of the master and slaves.  Speeds in the Mbit range is common, even 10s of Mbit.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.  It was designed to provide reliable communication in noisy environments and it is typically used in vehicles (cars, ships).  It is a package oriented bus and do away with the concept of master and slave.  Every device on the bus can transmit packages and every device will receive all those packages and individually must decide what to do with them.&lt;br /&gt;
&lt;br /&gt;
Multiple CAN standards exist with different speed.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
To be added!&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Category:RP2350&amp;diff=7491</id>
		<title>Category:RP2350</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Category:RP2350&amp;diff=7491"/>
		<updated>2026-05-01T12:04:55Z</updated>

		<summary type="html">&lt;p&gt;Lth: Created page with &amp;quot;RP2350 related pages&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RP2350 related pages&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Streamline_MCU_RP2354_First_Test&amp;diff=7490</id>
		<title>Streamline MCU RP2354 First Test</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Streamline_MCU_RP2354_First_Test&amp;diff=7490"/>
		<updated>2026-05-01T12:04:03Z</updated>

		<summary type="html">&lt;p&gt;Lth: Created page with &amp;quot;Category:Work in progressCategory:StreamlineCategory:RP2350{{metadesc|First test on Streamline MCU RP2354}} To be added&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Work in progress]][[Category:Streamline]][[Category:RP2350]]{{metadesc|First test on Streamline MCU RP2354}}&lt;br /&gt;
To be added&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Streamline_Zephyr&amp;diff=7485</id>
		<title>Streamline Zephyr</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Streamline_Zephyr&amp;diff=7485"/>
		<updated>2026-05-01T00:18:54Z</updated>

		<summary type="html">&lt;p&gt;Lth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:STM32]][[Category:Streamline]][[Category:Streamline Software]][[Category:Zephyr]][[Category:Work in progress]]{{metadesc|Zephyr on Streamline boards}}&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
Let's see how we can easily setup a Zephyr development environment for some Streamline demos.&lt;br /&gt;
&lt;br /&gt;
   sudo apt update&lt;br /&gt;
   sudo apt upgrade&lt;br /&gt;
   sudo apt install --no-install-recommends git cmake ninja-build gperf \&lt;br /&gt;
     ccache dfu-util device-tree-compiler wget python3-dev python3-venv python3-tk \&lt;br /&gt;
     xz-utils file make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1 curl&lt;br /&gt;
   &lt;br /&gt;
   mkdir streamline-demos&lt;br /&gt;
   cd streamline-demos&lt;br /&gt;
   python3 -m venv .venv&lt;br /&gt;
   echo &amp;quot;export ZEPHYR_BASE=`pwd`/zephyr&amp;quot; &amp;gt;&amp;gt;.venv/bin/activate&lt;br /&gt;
   echo &amp;quot;export ZEPHYR_TOOLCHAIN_VARIANT=zephyr&amp;quot; &amp;gt;&amp;gt;.venv/bin/activate&lt;br /&gt;
   echo &amp;quot;export ZEPHYR_SDK_INSTALL_DIR=$HOME/zephyr-sdk-1.0.1&amp;quot; &amp;gt;&amp;gt;.venv/bin/activate&lt;br /&gt;
   source .venv/bin/activate&lt;br /&gt;
   pip install west&lt;br /&gt;
   mkdir demo1&lt;br /&gt;
   echo &amp;quot;&lt;br /&gt;
   # @copyright Copyright (c) 2026, CurrentMakers.com and the individuals that has contributed to this project.&lt;br /&gt;
   #&lt;br /&gt;
   # SPDX-License-Identifier: Apache-2.0&lt;br /&gt;
   &lt;br /&gt;
   manifest:&lt;br /&gt;
     projects:&lt;br /&gt;
       - name: zephyr&lt;br /&gt;
         revision: v4.4.0&lt;br /&gt;
         url: https://github.com/zephyrproject-rtos/zephyr&lt;br /&gt;
         west-commands: scripts/west-commands.yml&lt;br /&gt;
         import:&lt;br /&gt;
           name-allowlist:&lt;br /&gt;
             - littlefs&lt;br /&gt;
             - picolibc&lt;br /&gt;
             - hal_stm32&lt;br /&gt;
             - hal_st&lt;br /&gt;
             - hal_nordic&lt;br /&gt;
             - hal_rpi_pico&lt;br /&gt;
             - cmsis_6&lt;br /&gt;
       - name: zephyr-cm&lt;br /&gt;
         url: https://github.com/currentmakers/zephyr-cm&lt;br /&gt;
         revision: master &lt;br /&gt;
         path: zephyr-cm&lt;br /&gt;
       - name: zephyr-ws2812b-pwm&lt;br /&gt;
         url: https://github.com/currentmakers/zephyr-ws2812b-pwm&lt;br /&gt;
         revision: master&lt;br /&gt;
         path: modules/lib/zephyr-ws2812b-pwm&lt;br /&gt;
     self:&lt;br /&gt;
       path: demo1&lt;br /&gt;
   &amp;quot;&amp;gt;demo1/west.yml&lt;br /&gt;
   cd demo1&lt;br /&gt;
   west init --local &lt;br /&gt;
   west update&lt;br /&gt;
   west zephyr-export&lt;br /&gt;
   west packages pip --install&lt;br /&gt;
   west sdk install -t arm-zephyr-eabi&lt;br /&gt;
   west config zephyr.toolchain-variant zephyr&lt;br /&gt;
   west config zephyr.sdk-install-dir $HOME/zephyr-sdk-1.0.1&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Zephyr_as_base_for_open_PLC_platform&amp;diff=7479</id>
		<title>Zephyr as base for open PLC platform</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Zephyr_as_base_for_open_PLC_platform&amp;diff=7479"/>
		<updated>2026-04-30T06:51:20Z</updated>

		<summary type="html">&lt;p&gt;Lth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Video&lt;br /&gt;
|series=Colibri Video&lt;br /&gt;
|number=4&lt;br /&gt;
|title=Zephyr as base for open PLC platform&lt;br /&gt;
|youtube-id=08TAfotF3ok&lt;br /&gt;
|description=In this episode, we introduce the Zephyr Project, a very popular Real-Time Operating System (RTOS) and showcase that the Colibri hardware has (for the most part) been successfully adapted for Zephyr. This is done with &amp;quot;drivers&amp;quot; (zephyr-ws2812b-pwm) and &amp;quot;device trees&amp;quot; (colibri_mcu3, colibri_carrier).&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Zephyr_as_base_for_open_PLC_platform&amp;diff=7478</id>
		<title>Zephyr as base for open PLC platform</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Zephyr_as_base_for_open_PLC_platform&amp;diff=7478"/>
		<updated>2026-04-30T06:48:34Z</updated>

		<summary type="html">&lt;p&gt;Lth: Created page with &amp;quot;{{Video |series=Colibri Video |number=4 |title=Zephyr as base for open PLC platform |youtube-id=08TAfotF3ok |description=CurrentMakers is a small team of makers and creators,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Video&lt;br /&gt;
|series=Colibri Video&lt;br /&gt;
|number=4&lt;br /&gt;
|title=Zephyr as base for open PLC platform&lt;br /&gt;
|youtube-id=08TAfotF3ok&lt;br /&gt;
|description=CurrentMakers is a small team of makers and creators, with decades of experience in electronics, low-level programming, networking and real-time systems.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7477</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7477"/>
		<updated>2026-04-30T00:39:35Z</updated>

		<summary type="html">&lt;p&gt;Lth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous vs. Synchronous ==&lt;br /&gt;
&lt;br /&gt;
Serial communication exist in two different types.  In synchronous communication, the data line(s) are combined with a clock signal that synchronize the devices together.  In asynchronous communication there is no clock signal and the transmission speeds are &amp;quot;agreed upon&amp;quot;.  This require a fairly precise timing for both transmitters and receivers.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;upper limit&amp;quot; on speed - it depends on the capabilities of the master and slaves.  Speeds in the Mbit range is common, even 10s of Mbit.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.  It was designed to provide reliable communication in noisy environments and it is typically used in vehicles (cars, ships).  It is a package oriented bus and do away with the concept of master and slave.  Every device on the bus can transmit packages and every device will receive all those packages and individually must decide what to do with them.&lt;br /&gt;
&lt;br /&gt;
Multiple CAN standards exist with different speed.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
To be added!&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7476</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7476"/>
		<updated>2026-04-29T23:59:41Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* Ethernet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;upper limit&amp;quot; on speed - it depends on the capabilities of the master and slaves.  Speeds in the Mbit range is common, even 10s of Mbit.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.  It was designed to provide reliable communication in noisy environments and it is typically used in vehicles (cars, ships).  It is a package oriented bus and do away with the concept of master and slave.  Every device on the bus can transmit packages and every device will receive all those packages and individually must decide what to do with them.&lt;br /&gt;
&lt;br /&gt;
Multiple CAN standards exist with different speed.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
To be added!&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7475</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7475"/>
		<updated>2026-04-29T23:55:59Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* CAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;upper limit&amp;quot; on speed - it depends on the capabilities of the master and slaves.  Speeds in the Mbit range is common, even 10s of Mbit.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.  It was designed to provide reliable communication in noisy environments and it is typically used in vehicles (cars, ships).  It is a package oriented bus and do away with the concept of master and slave.  Every device on the bus can transmit packages and every device will receive all those packages and individually must decide what to do with them.&lt;br /&gt;
&lt;br /&gt;
Multiple CAN standards exist with different speed.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7474</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7474"/>
		<updated>2026-04-29T23:50:08Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* SPI (Serial Peripheral Interface) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;upper limit&amp;quot; on speed - it depends on the capabilities of the master and slaves.  Speeds in the Mbit range is common, even 10s of Mbit.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7473</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7473"/>
		<updated>2026-04-29T23:47:51Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* SPI (Serial Peripheral Interface) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a SS (slave select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
A final option is to daisy chain multiple slaves using the same SS.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7472</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7472"/>
		<updated>2026-04-29T23:45:51Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* SPI (Serial Peripheral Interface) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is SPI.  SPI is a single master controlling the communication with one slave using one clock and two data lines:&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
There is also a CS (chip select) line so the same bus can be shared with multiple slaves, but under normal circumstances only a single master.&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7471</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7471"/>
		<updated>2026-04-29T23:43:12Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* SPI (Serial Peripheral Interface) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
An option, which is '''much''' faster, is [[#SPI|SPI]].&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7470</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7470"/>
		<updated>2026-04-29T10:41:44Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* {{I2C}} (Inter-Integrated Circuit) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The two lines - CLK and SDA both operate in &amp;quot;open drain&amp;quot; mode so they need to be pulled up.  The strength of the pull-up resistor depends on the distance.  Typical values are less than 10 kOhm.&lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7469</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7469"/>
		<updated>2026-04-29T09:13:49Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* {{I2C}} (Inter-Integrated Circuit) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
Due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7468</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7468"/>
		<updated>2026-04-29T06:51:45Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* SPI (Serial Peripheral Interface) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.  Also, due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7467</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7467"/>
		<updated>2026-04-29T06:51:27Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* SPI (Serial Peripheral Interface) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.  Also, due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7466</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7466"/>
		<updated>2026-04-29T06:47:12Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* {{I2C}} (Inter-Integrated Circuit) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|800px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.  Also, due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7465</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7465"/>
		<updated>2026-04-29T06:44:30Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* Speed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud]).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.  Also, due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7464</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7464"/>
		<updated>2026-04-29T02:42:55Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* {{I2C}} (Inter-Integrated Circuit) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
RS-422 and RS-423 are serial communication standards that work with differential voltages, rather than absolute voltage levels like RS-232, and using 2 twisted pairs. This means that much longer cables can be used and the data will not get corrupted on the way. These are rarely used nowadays, and have essentially been superseded by more modern communication systems, such as CAN and Ethernet. The RS-485 sibling has survived until present day, see below. &lt;br /&gt;
&lt;br /&gt;
RS-422 is (i.e. was) the point-to-point variant, with full duplex in both directions. RS-423 is (i.e. was) the multi-drop variant, with one master that &amp;quot;owned&amp;quot; one pair and all the slaves shared the other pair, and higher level protocols would ensure that only one slave would respond at any given time.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
Wikipedia claims that RS-485 was introduced in 1983. I think that is when it formalized as a standard (TIA-485/EIA-485), because I worked with RS-485 in 1984 with equipment that was way older than just 1 year. Modicon introduce Modbus in 1979, which was a serial protocol on top of RS-485. Nevertheless, RS-485 quickly became a favorite in industrial automation, and is still very popular, especially thanks to Modbus.&lt;br /&gt;
&lt;br /&gt;
RS-485 was originally a single twisted pair, differential voltage interface with maximum 30 devices on one segment, something like ~1000 feet (~300 meters) and 1 Mbit/s maximum communication speed. This has been revised over the years, as silicon vendors have improved performance, and the current standard (1998 &amp;amp; 2012) has been updated to reflect this. Faster speeds, more devices and longer cables. Only in-the-field tests can determine the maximum cable lengths at a given speed.&lt;br /&gt;
&lt;br /&gt;
Connecting an MCU to a RS-485 transceiver is very simple. The UART/USART Tx and Rx are connected to &amp;quot;D&amp;quot; (drive) and &amp;quot;R&amp;quot; (receive) pins on the transceiver chip. There are dozens (or more) RS-485 transceivers on the market, and most of the SOIC-8 variants, which are the majority, are pin compatible. Additionally, there are &amp;quot;RE&amp;quot; (receive enable) and &amp;quot;DE&amp;quot; (drive enable) on the transceivers, which the MCU needs to control. They are electrically inverted, so in most cases, we only need a single MCU pin for (direction) and it gos to both RE and DE.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
An [[{{I2C}}]] bus typically consist of one master and multiple slaves.  It ''is'' possible to have multiple masters but this is rarely seen &amp;quot;in the wild&amp;quot;.  Also, due to the modern day sensitivities, some people frown on the use of master/slave and come up with modern &amp;quot;acceptable&amp;quot; terms, but this only ads confusion, so we will stick with the original terms.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7461</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7461"/>
		<updated>2026-04-29T02:00:08Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* {{I2C}} (Inter-Integrated Circuit) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:i2c_bus.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=File:I2c_bus.svg&amp;diff=7460</id>
		<title>File:I2c bus.svg</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=File:I2c_bus.svg&amp;diff=7460"/>
		<updated>2026-04-29T01:59:40Z</updated>

		<summary type="html">&lt;p&gt;Lth: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7459</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7459"/>
		<updated>2026-04-29T01:49:52Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* RS-232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
These connections will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7458</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7458"/>
		<updated>2026-04-29T01:49:23Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* RS-232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.  These will typically operate and a voltage level depending on the actual equipment - typically either 3.3V or 5V.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7457</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7457"/>
		<updated>2026-04-29T01:47:43Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* RS-232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uart-tx-rx-cross-768x466.png|thumb|300px]]&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished in consumer and professional equipment and is almost exclusively replaced by [[#USB|USB]].  The basic signalling are still commonly used for short distance communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=File:Uart-tx-rx-cross-768x466.png&amp;diff=7456</id>
		<title>File:Uart-tx-rx-cross-768x466.png</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=File:Uart-tx-rx-cross-768x466.png&amp;diff=7456"/>
		<updated>2026-04-29T01:46:58Z</updated>

		<summary type="html">&lt;p&gt;Lth: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7455</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7455"/>
		<updated>2026-04-29T01:44:40Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* RS-232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
Today, [[#RS-232|RS-232]] have all but vanished&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7454</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7454"/>
		<updated>2026-04-29T01:40:04Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* Asynchronous */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect Bus]]es.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect&amp;diff=7453</id>
		<title>Hardware Interconnect</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect&amp;diff=7453"/>
		<updated>2026-04-29T01:39:19Z</updated>

		<summary type="html">&lt;p&gt;Lth: Lth moved page Hardware Interconnect to Hardware Interconnect Bus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Hardware Interconnect Bus]]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7452</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7452"/>
		<updated>2026-04-29T01:39:17Z</updated>

		<summary type="html">&lt;p&gt;Lth: Lth moved page Hardware Interconnect to Hardware Interconnect Bus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect]] busses.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7451</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7451"/>
		<updated>2026-04-29T01:38:54Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* RS-232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the granddad of [[Hardware Interconnect]] busses.  It is a point-to-point bus which will connect exactly two devices with each other.  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7450</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7450"/>
		<updated>2026-04-29T01:33:35Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* USB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the grand-dad of [[Hardware Interconnect].  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|200px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7449</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7449"/>
		<updated>2026-04-29T01:33:20Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* Ethernet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the grand-dad of [[Hardware Interconnect].  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|250px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
[[File:PC_Network.svg|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Ethernet Wikipedia article on Ethernet]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=File:PC_Network.svg&amp;diff=7448</id>
		<title>File:PC Network.svg</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=File:PC_Network.svg&amp;diff=7448"/>
		<updated>2026-04-29T01:32:35Z</updated>

		<summary type="html">&lt;p&gt;Lth: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7447</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7447"/>
		<updated>2026-04-29T01:30:59Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* USB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the grand-dad of [[Hardware Interconnect].  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|250px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7446</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7446"/>
		<updated>2026-04-29T01:30:46Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* USB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the grand-dad of [[Hardware Interconnect].  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
[[File:USB_icon.svg|thumb|250px]]&lt;br /&gt;
USB have today almost completely replaced the original RS-232 for device to device communication.&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/USB Wikipedia article on USB]&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=File:USB_icon.svg&amp;diff=7445</id>
		<title>File:USB icon.svg</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=File:USB_icon.svg&amp;diff=7445"/>
		<updated>2026-04-29T01:29:25Z</updated>

		<summary type="html">&lt;p&gt;Lth: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7444</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7444"/>
		<updated>2026-04-29T01:27:19Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* CAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the grand-dad of [[Hardware Interconnect].  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
The CAN bus was developed by Bosch in the early 1980s.&lt;br /&gt;
&lt;br /&gt;
[[File:CAN_ISO11898-3_Network.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/CAN_bus Wikipedia article on CAN]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=File:CAN_ISO11898-3_Network.png&amp;diff=7443</id>
		<title>File:CAN ISO11898-3 Network.png</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=File:CAN_ISO11898-3_Network.png&amp;diff=7443"/>
		<updated>2026-04-29T01:25:51Z</updated>

		<summary type="html">&lt;p&gt;Lth: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7441</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7441"/>
		<updated>2026-04-29T01:24:26Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* {{I2C}} (Inter-Integrated Circuit) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the grand-dad of [[Hardware Interconnect].  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP) in 1980.  Today, it is widely used for communication between [[MCU]]s and various peripheral devices.&lt;br /&gt;
&lt;br /&gt;
Originally the speed was defined as 100 Kbps or 400 Kbps but faster options were possible and today a newer I3C option is emerging.&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7440</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7440"/>
		<updated>2026-04-29T01:21:45Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* {{I2C}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the grand-dad of [[Hardware Interconnect].  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} (Inter-Integrated Circuit) ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
{{I2C}} is a communication bus originally invented by Philips Semiconductors (now NXP).&lt;br /&gt;
&lt;br /&gt;
[[File:I2C_controller-target.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=File:I2C_controller-target.svg&amp;diff=7439</id>
		<title>File:I2C controller-target.svg</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=File:I2C_controller-target.svg&amp;diff=7439"/>
		<updated>2026-04-29T01:21:12Z</updated>

		<summary type="html">&lt;p&gt;Lth: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7438</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7438"/>
		<updated>2026-04-29T01:17:14Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* Speed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
It should also be mentioned that in the early days the term &amp;quot;baud&amp;quot; was often used ([https://en.wikipedia.org/wiki/Baud Wikipedia article on baud).  Baud is defined as a symbol rate and is typically equivalent of the bit-rate.  However, later generation modems could use various forms of encoding to transfer multiple bits in one symbol which is why the term is rarely seen today.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the grand-dad of [[Hardware Interconnect].  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
	<entry>
		<id>https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7437</id>
		<title>Hardware Interconnect Buses</title>
		<link rel="alternate" type="text/html" href="https://stm32world.com/w/index.php?title=Hardware_Interconnect_Buses&amp;diff=7437"/>
		<updated>2026-04-29T01:12:38Z</updated>

		<summary type="html">&lt;p&gt;Lth: /* RS-232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Electronics]]{{metadesc|Documenting various forms of hardware interconnect}}&lt;br /&gt;
'''NOTICE!''' This page is a [[Category:Work in progress]] Work in progress&lt;br /&gt;
&lt;br /&gt;
There are literally hundreds - if not thousands - of different specifications for communications between different devices.  Most of these are probably proprietary but this page will document the most common on an introductory level.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
When it comes to any kind of communication, the speed is often expressed as &amp;quot;bps&amp;quot; (bits per second) or faster rates in &amp;quot;kbps&amp;quot; (kilobits per second), &amp;quot;Mbps&amp;quot; (Meta-bits per second) or even &amp;quot;Gbps&amp;quot; (Giga-bits per second).  Soon we'll probably begin to see &amp;quot;Tbps&amp;quot; but I am not sure that is available as of yet.&lt;br /&gt;
&lt;br /&gt;
It is worth noticing that, since a byte is 8 bits, you can often divide the bit-rate by 8 to get the Bytes per second).  Often, however, there are a few extra bits stuffed in the protocol, start, stop, parity, so this calculation really depends on the protocol.&lt;br /&gt;
&lt;br /&gt;
== Asynchronous ==&lt;br /&gt;
&lt;br /&gt;
=== RS-232 ===&lt;br /&gt;
[[File:PDP-11-70.jpeg|thumb|300px|PDP-11 with a serial terminal in the center]]&lt;br /&gt;
RS-232 can be considered the grand-dad of [[Hardware Interconnect].  RS-232 would operate at speeds from around 150 bps, through 300, 4800, 9600 and 19200 bps.&lt;br /&gt;
&lt;br /&gt;
RS-232 was first introduced in 1960 and up through the 70s and even 80s it was widely used.  Early computers (see image on the right) were monstrous and were often operated through multiple serial terminals.  The communication between the central computer and those terminals were almost always (if not always) RS-232.&lt;br /&gt;
&lt;br /&gt;
Early PC's always had at least one RS-232 port which was often used to attach a modem.  Modems were common up until the late 90s and again - exclusively used RS-232.&lt;br /&gt;
&lt;br /&gt;
[[File:RS-232_POTS_DTE_DCE.svg|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-232 Wikipedia article on RS-232]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
=== RS-422 / RS 423 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-422_Network.svg|600px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-422 Wikipedia article on RS-422]&lt;br /&gt;
&lt;br /&gt;
=== RS-485 ===&lt;br /&gt;
&lt;br /&gt;
[[File:RS-485_Network.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/RS-485 Wikipedia article on RS-485]&lt;br /&gt;
&lt;br /&gt;
== {{I2C}} ==&lt;br /&gt;
[[File:I²C_bus_logo.svg|thumb|250px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/I2C Wikipedia article on {{I2C}}]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== SPI (Serial Peripheral Interface) ==&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_8-bit_circular_transfer.svg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_single_slave.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[File:SPI_three_slaves_daisy_chained.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface Wikipedia article on SPI]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Serial_communication Wikipedia article on Serial Communications]&lt;/div&gt;</summary>
		<author><name>Lth</name></author>
	</entry>
</feed>