I²C Protocol: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
No edit summary
(merged the content from the "I²C Protocol-V4L" article; for the relevant user contribution history see the archived "V4L:I²C Protocol-V4L" page)
 
(9 intermediate revisions by 6 users not shown)
Line 1: Line 1:
The i2c Bus is often used on [[DVB Cards]] in order to control Tuner ICs and [[Demodulator]]s, thus here a short overview:
The '''I<sup>2</sup>C''' Bus is often used on tv tuner devices in order to control tuner ICs and [[Demodulator]]s, thus here a short overview:


The i2c Protocol was introduced by Philips as ''Inter-Integrated Circuit Protocol''. It's implemented as trivial 2-Wire Bus with one or more Masters and up to 127 clients. The two wire signals are called ''SDA'' (Serial Data) and ''SCL'' (Serial Clock). The bus is usually clocked at 100kHz or 400kHz, but slower variants exist as well as fast ones with more than 1MHz clock rate.
The '''I<sup>2</sup>C Protocol''' was introduced by Philips as ''Inter-Integrated Circuit Protocol''. It's implemented as a 2-Wire Bus with one or more Masters and up to 127 clients. The two wire signals are called ''SDA'' (Serial Data) and ''SCL'' (Serial Clock). The bus is usually clocked at 100kHz or 400kHz, but slower variants exist as well as fast ones with more than 1MHz clock rate.


Every i2c message consists of an address byte (7 bit address, 1 bit R/W#) and an arbitrary number of data bytes. The master starts transmission by issuing a ''START'' condition, then submitting the address byte to the bus. If any client with this i2c address is listening on the bus he acknowledges this address by pulling the ''SDA'' wire low for one clock cycle.
Every '''I<sup>2</sup>C''' message consists of an address byte (7 bit address, 1 bit R/W#) and an arbitrary number of data bytes. The master starts transmission by issuing a ''START'' condition, then submitting the address byte to the bus. If any client with this '''I<sup>2</sup>C''' address is listening on the bus it acknowledges this address by pulling the ''SDA'' wire low for one clock cycle.


For Write Transfers the master sends all following bytes to the bus and the client acknowledges each byte.
For Write Transfers the master sends all following bytes to the bus and the client acknowledges each byte.


Read Transfers get acknowledged by the Master except the last byte (which does not gets acknowledged in order to signal the end of transmission).
Read Transfers are acknowledged by the Master except the last byte (which does not get acknowledged in order to signal the end of transmission).


''Please add a link to the Philips i2c spec here and it would be nice to have some pictures visualizing the protocol. Any contributors?''
''It would be nice to have some pictures visualizing the protocol. Any contributors?''
''-- There are some nice diagrams and descriptions of i2c in the BT8x8 and CX2388X datasheets (which Google will usually turn up)''


i2c is used mainly by European and Asian STB manufacturers as a communication protocol between the Main Processor, [[Demodulator]]s and Tuner [[PLL]]s.


Since [[Philips Semiconductors]] did not release the Protocol to the public, but tries to sell licenses there are some, mostly compatible, variations out there with slight modifications. They are usually called "2-wire Bus", "i2c-compatible Bus".
i2c is used mainly by European and Asian STB manufacturers as communication protocol between the Main Processor, [[Demodulator]]s and Tuner [[PLL]]s.


Alternative (incompatible) Inter-Circuit Interfaces are [[SPI]] (faster -- up to several MHz clock rate, but more than 3 signal wires), the simple 8-bit Parallel Microcontroller Bus (fast but more than 8 signals), the 1-wire bus (usually very slow).
Since [[Philips Semiconductor]] did not released the Protocol to the public but tries to sell licenses there are some, mostly compatible, variations out there with slight modifications. They are usually called "2-wire Bus", "i2c-compatible Bus" or similar that try to avoid the license fees.


Also used to
Alternative (incompatible) Inter-Circuit Interfaces are [[SPI]] (fast -- up to several MHz clock rate, but more than 3 signal wires), the simple 8-bit Parallel Microcontroller Bus (fast but more than 8 signals), the 1-wire bus (usually very slow).
* change the channel
* control the monitor

==External Links==
* [http://www.semiconductors.philips.com/buses/i2c/ Philips i2c Specification]
* [http://en.wikipedia.org/wiki/I2C i2c Wikipedia article]
* [http://www.esacademy.com/faq/i2c/ Embedded Systems Academy's i2c tutorial] (which includes diagrams and a FAQ)
* The Linux kernel documentation under ''linux''/Documentation/i2c/ is also worth a look.

[[Category:Technology]]

Latest revision as of 00:01, 5 November 2008

The I2C Bus is often used on tv tuner devices in order to control tuner ICs and Demodulators, thus here a short overview:

The I2C Protocol was introduced by Philips as Inter-Integrated Circuit Protocol. It's implemented as a 2-Wire Bus with one or more Masters and up to 127 clients. The two wire signals are called SDA (Serial Data) and SCL (Serial Clock). The bus is usually clocked at 100kHz or 400kHz, but slower variants exist as well as fast ones with more than 1MHz clock rate.

Every I2C message consists of an address byte (7 bit address, 1 bit R/W#) and an arbitrary number of data bytes. The master starts transmission by issuing a START condition, then submitting the address byte to the bus. If any client with this I2C address is listening on the bus it acknowledges this address by pulling the SDA wire low for one clock cycle.

For Write Transfers the master sends all following bytes to the bus and the client acknowledges each byte.

Read Transfers are acknowledged by the Master except the last byte (which does not get acknowledged in order to signal the end of transmission).

It would be nice to have some pictures visualizing the protocol. Any contributors? -- There are some nice diagrams and descriptions of i2c in the BT8x8 and CX2388X datasheets (which Google will usually turn up)

i2c is used mainly by European and Asian STB manufacturers as a communication protocol between the Main Processor, Demodulators and Tuner PLLs.

Since Philips Semiconductors did not release the Protocol to the public, but tries to sell licenses there are some, mostly compatible, variations out there with slight modifications. They are usually called "2-wire Bus", "i2c-compatible Bus".

Alternative (incompatible) Inter-Circuit Interfaces are SPI (faster -- up to several MHz clock rate, but more than 3 signal wires), the simple 8-bit Parallel Microcontroller Bus (fast but more than 8 signals), the 1-wire bus (usually very slow).

Also used to

  • change the channel
  • control the monitor

External Links