TS-7180 TWI

From embeddedTS Manuals
Revision as of 11:18, 19 December 2018 by Mpeters (talk | contribs) (reworded to change informal personal to formal impersonal. Reorganized for better introduction of instantiation procedure.)

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. The following command will instantiate (create a device node for) a new ssd1306 display at I2C address 0x3C:

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

Once this is done, i2c-tools can manipulate the I2C device, or a the downstream developer can write their 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 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.