<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://bitwizard.nl/wiki/index.php?action=history&amp;feed=atom&amp;title=General_I2C_protocol</id>
	<title>General I2C protocol - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://bitwizard.nl/wiki/index.php?action=history&amp;feed=atom&amp;title=General_I2C_protocol"/>
	<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=General_I2C_protocol&amp;action=history"/>
	<updated>2026-04-05T18:23:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.6</generator>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=General_I2C_protocol&amp;diff=4679&amp;oldid=prev</id>
		<title>Rew at 12:06, 6 November 2023</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=General_I2C_protocol&amp;diff=4679&amp;oldid=prev"/>
		<updated>2023-11-06T12:06:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:06, 6 November 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;div&gt;I2C is a standard protocol, sometimes called &quot;TW&quot; or &quot;TWI&quot; by other manufacturers. &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;div&gt;I2C is a standard protocol, sometimes called &quot;TW&quot; or &quot;TWI&quot; by other manufacturers. &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-deletedline diff-side-deleted&quot;&gt;&lt;div&gt;Each I2C slave has its own I2C address. This allows us to daisy chain a large number of boards. The BitWizard I2C boards can be told to use a different I2C address so that you can resolve conflicts if you would otherwise have several devices at one address.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;div&gt;Each I2C slave has its own I2C address. This allows us to daisy chain a large number of boards. The BitWizard I2C boards can be told to use a different I2C address so that you can resolve conflicts if you would otherwise have several devices at one address.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; Most other commercial products have an I2C address assigned by the manufacturer or a small range that you can configure using strapping pins. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;div&gt;For the pinout of the bitwizard connector: [https://bitwizard.nl/wiki/I2C_connector_pinout look here]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:wikidiff2:1.12:old-3694:rev-4679:1.13.0 --&gt;
&lt;/table&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=General_I2C_protocol&amp;diff=3694&amp;oldid=prev</id>
		<title>Cartridge1987 at 16:00, 27 November 2015</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=General_I2C_protocol&amp;diff=3694&amp;oldid=prev"/>
		<updated>2015-11-27T16:00:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:00, 27 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-deletedline diff-side-deleted&quot;&gt;&lt;div&gt;= &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;timing&lt;/del&gt; =&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;div&gt;= &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Timing&lt;/ins&gt; =&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;div&gt;The slaves use an ATTINY44 processor. These have a hardware universal serial interface (USI) module that can be configured as &quot;I2C slave&quot;. Many things however have to be processed in software. This means that some time is required between each byte. The hardware of the ATTINY44 will pull the SCL line low while the processing is not finished. If you use a software I2C master, doublecheck that your I2C master supports this feature. &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;div&gt;The slaves use an ATTINY44 processor. These have a hardware universal serial interface (USI) module that can be configured as &quot;I2C slave&quot;. Many things however have to be processed in software. This means that some time is required between each byte. The hardware of the ATTINY44 will pull the SCL line low while the processing is not finished. If you use a software I2C master, doublecheck that your I2C master supports this feature. &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;div&gt;The I2C protocol is specified at 100kHz and 400kHz bit rate. If you lower the pullup resistors a bit and have a short bus, the hardware will probably be able to handle bit rates up to 2MHz. This is not recommended. Use the standard 400kHz. &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;div&gt;The I2C protocol is specified at 100kHz and 400kHz bit rate. If you lower the pullup resistors a bit and have a short bus, the hardware will probably be able to handle bit rates up to 2MHz. This is not recommended. Use the standard 400kHz. &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-deletedline diff-side-deleted&quot;&gt;&lt;div&gt;= &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;protocol&lt;/del&gt; =&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;div&gt;= &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Protocol&lt;/ins&gt; =&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;div&gt;To send a sequence of bytes to the slave I2C device, the master starts by creating a START condition: the SDA line goes low while SCL is held high. All slaves are now primed to receive an &quot;address&quot; byte. Next the master sends the address byte. &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;div&gt;To send a sequence of bytes to the slave I2C device, the master starts by creating a START condition: the SDA line goes low while SCL is held high. All slaves are now primed to receive an &quot;address&quot; byte. Next the master sends the address byte. &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:wikidiff2:1.12:old-1071:rev-3694:1.13.0 --&gt;
&lt;/table&gt;</summary>
		<author><name>Cartridge1987</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=General_I2C_protocol&amp;diff=1071&amp;oldid=prev</id>
		<title>Rew: Created page with &quot; BitWizard expansion boards communicate using an I2C protocol.   I2C is a standard protocol, sometimes called &quot;TW&quot; or &quot;TWI&quot; by other manufacturers.  Each I2C slave has its own...&quot;</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=General_I2C_protocol&amp;diff=1071&amp;oldid=prev"/>
		<updated>2012-04-06T14:22:11Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; BitWizard expansion boards communicate using an I2C protocol.   I2C is a standard protocol, sometimes called &amp;quot;TW&amp;quot; or &amp;quot;TWI&amp;quot; by other manufacturers.  Each I2C slave has its own...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
BitWizard expansion boards communicate using an I2C protocol. &lt;br /&gt;
&lt;br /&gt;
I2C is a standard protocol, sometimes called &amp;quot;TW&amp;quot; or &amp;quot;TWI&amp;quot; by other manufacturers. &lt;br /&gt;
Each I2C slave has its own I2C address. This allows us to daisy chain a large number of boards. The BitWizard I2C boards can be told to use a different I2C address so that you can resolve conflicts if you would otherwise have several devices at one address.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= timing =&lt;br /&gt;
&lt;br /&gt;
The slaves use an ATTINY44 processor. These have a hardware universal serial interface (USI) module that can be configured as &amp;quot;I2C slave&amp;quot;. Many things however have to be processed in software. This means that some time is required between each byte. The hardware of the ATTINY44 will pull the SCL line low while the processing is not finished. If you use a software I2C master, doublecheck that your I2C master supports this feature. &lt;br /&gt;
&lt;br /&gt;
The I2C protocol is specified at 100kHz and 400kHz bit rate. If you lower the pullup resistors a bit and have a short bus, the hardware will probably be able to handle bit rates up to 2MHz. This is not recommended. Use the standard 400kHz. &lt;br /&gt;
&lt;br /&gt;
= protocol =&lt;br /&gt;
&lt;br /&gt;
To send a sequence of bytes to the slave I2C device, the master starts by creating a START condition: the SDA line goes low while SCL is held high. All slaves are now primed to receive an &amp;quot;address&amp;quot; byte. Next the master sends the address byte. &lt;br /&gt;
&lt;br /&gt;
After this the protocol in theory depends on which slave you are talking to. In practice so far it is convenient to make the slaves talk a similar protocol: the  next byte specifies a &amp;quot;register&amp;quot; or &amp;quot;port&amp;quot; address. After this you can send data to that port or register. &lt;br /&gt;
&lt;br /&gt;
If the data can be considered a &amp;quot;data stream&amp;quot; like with the I2C_LCD board, you can call it a &amp;quot;port&amp;quot;. If there is just a single value, it is more common to call it a register.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
</feed>