0
\$\begingroup\$

The definition of I2C is - "A multi-master multi-slave serial bus used for communication between low-speed devices".

However, I have been searching the web for a concrete explanation for this but can't seem to find any, and other search results are troubleshooting tips for related errors. The closest I got to a definition was these restrictions listed in the explanation for how USB works:

  • The maximum packet size for data transfers is 8 bytes
  • They cannot use Isochronous nor Bulk Transfer pipes
  • May only have 2 endpoints other than the zero endpoints

What are some examples of low-speed vs high-speed devices and what exactly does "speed" (speed of data transfer?) mean in this case?

My guess was that low-speed devices use serial transmission whereas high-speed devices use parallel transmission, but I am really unclear about this.

I am a newbie with regards to electrical engineering and would appreciate if a less technical/guided explanation could be given, thank you!

\$\endgroup\$

closed as primarily opinion-based by Dmitry Grigoryev, pipe, Leon Heller, nidhin, RoyC Nov 11 '18 at 10:13

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • \$\begingroup\$ Parallel communication is actually limited to comparatively low-speed applications. The very highest speed devices use what's called multi-lane serial communication, which is multiple serial links working in parallel, with an individual clock for each one. Parallel communication has a single clock for the whole bus, and this is largely what limits its speed. \$\endgroup\$ – Hearth Nov 5 '18 at 11:44
  • \$\begingroup\$ More a question of "in comparison to something else." I2C is slow in comparison to, say, the video stream of a USB video camera - though i2c may well be used to configure the video capture in the camera. By comparison, though, i2c is fast if the other communication channel(s) available are RS232. I2C is often used in combination with other devices that have faster channels available, but need to communicate with (relatively) slower things. \$\endgroup\$ – JRE Nov 5 '18 at 11:57
  • \$\begingroup\$ From the perspective of a rocket engineer, probably all that are used on the ground \$\endgroup\$ – PlasmaHH Nov 5 '18 at 12:32
1
\$\begingroup\$

Low speed is somewhat subjective; in the case of I2C, the standard speed is up to 100kb/sec, full speed (previously known as high speed, confusingly) is 400kb/sec. These are the two most common speed ratings.

The packet size and payload sizes generally are not impacted by the speed definition, although most interfaces have 8 and 16 bit payloads, but may easily have more.

The "low speed interface" terminology was introduced (quite informally) to distinguish these interfaces from high speed interfaces (operating at several Mb/sec such as 10/100 ethernet or even Gb/sec rates such as Fibre channel, PCI Express, Infiniband and the fairly recent 100GE ethernet to name but a few).

Many high speed interfaces are serial in nature (there are advantages at the physical layer due to signal skew issues in parallel interfaces).

As I noted, there is not really a hard definition, but generally, interfaces running below perhaps 1Mb/sec are usually considered low speed.

\$\endgroup\$
0
\$\begingroup\$

"Low speed" is a vague definition, on purpose.

You also hear about "low power" and "low frequency".

If you look up what they mean, "low" can be 1kHz, or 5MHz. 1 Watt or 100 Watts.

The rule usually applied is that if it is "low" it is low enough not to worry about. For instance, a high power motor means that you need to consider the cooling of the device during use. Whereas low power motors means that they will easily handle the heat loss etc during normal use in normal environments.

To put another example, on a power grid, frequencies of 1kHz could be considered as high, as the distances the wires travel over means that you run into issues due to the frequency. Meanwhile a 1kHz signal on a 5cm PCB would be low signal, as the issues with the design are unlikely to be due to the frequency.

Back to I2C, they are talking about low speed devices which are slow for the usual set up. So they would be updating a few hundred times a second on a small PCB. This compares to a high speed sensor which could be updating at thousands, or more, times a second. But if you have a larger set up, over a metre or so, you will need it to update slower.

The reason for this is the way that I2C works. The data and clocks lines are pulled high to power rail by a resistor, which means that the data rate is limited by the size of this resistor and the capacitance of the line (which is made up of parasitic in the PCB and in all the components on the line).

To answer you question: depends. Low is relative term.

\$\endgroup\$
0
\$\begingroup\$

There is NO universal formal definition of "Low-speed device", and the USB one, for example, is specific to the USB specification.

I2C uses (in most cases) passive pull up and is only actively driven low. This limits the speed the bus can operate at because it takes time for the pull-up resistors to charge the bus capacitance sufficiently to pull the bus high. Usually, for I2C the standard limits are either 100kHz or 400kHz, but there is an (uncommon) variant that goes faster (With an active pull up, but really SPI is the more common approach if you need speed).

For the sorts of things you usually hang on I2C this is fine, we are mostly talking about temperature sensors, very slow IO, configuration interfaces, power regulators, fan controllers, that kind of mostly housekeeping stuff where a hundred microseconds or so to complete a transaction is no big deal because you are not doing them that often.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.