TS-7180 TWI: Difference between revisions

From embeddedTS Manuals
mNo edit summary
No edit summary
Line 33: Line 33:
</source>
</source>
After executing the above command, you may then access the device at address 0x3c.  You may use the  i2c-tools, or write your own client.  Technologic Systems has provided a simple client program for writing to an SSD1306 OLED display connected to the HD1 connector.  The photo below shows the output on the display.
After executing the above command, you may then access the device at address 0x3c.  You may use the  i2c-tools, or write your own client.  Technologic Systems has provided a simple client program for writing to an SSD1306 OLED display connected to the HD1 connector.  The photo below shows the output on the display.
 
<gallery>
 
Image:DSC02626.jpg
</gallery>
Download the source-code tarball here: [[File:Ssd1306-demo.tar.gz]]





Revision as of 13:10, 18 December 2018

The i.MX6 supports standard I2C at 100khz, or using fast mode for 400khz operation. The CPU has 2 I2C buses used on the TS-7180.

I2C 1 is internal to the TS-7180 and connects to the onboard Silabs supervisory microcontroller at 100khz; and to the onboard ST M41T00S real-time clock (RTC).

/dev/i2c-0
Address Device
0x4a #Silabs
0x68 #RTC

The second I2C bus is connected to the onboard FPGA. This bus also runs at 400khz by default.

/dev/i2c-2
Address Device
0x28-0x2f #FPGA


In addition to the CPU i2c buses, a bit-banged i2c interface is available on the daughter-card interface, using gpio. You may instantiate new devices on this bus, as shown in this example:

  echo ssd1306 0x3c > /sys/bus/i2c/devices/i2c-4/new_device

After executing the above command, you may then access the device at address 0x3c. You may use the i2c-tools, or write your own client. Technologic Systems has provided a simple client program for writing to an SSD1306 OLED display connected to the HD1 connector. The photo below shows the output on the display.

Download the source-code tarball here: File:Ssd1306-demo.tar.gz


Note: It is also possible to request the kernel to bitbang additional I2C buses as needed. See an example here.

The kernel makes the I2C available at /dev/i2c-#. You can use the i2c-tools (i2cdetect, i2cget, i2cset), or you can write your own client.