I2C 8 bit address?

Does the Beaglebone support 8 bit I2c addresses? I’m using a TI bq28z610 which has I2C address 0xAA, but I cannot access it via i2ctools. I can connect a TI I2C interface to my Windows PC and access the part, and the Beaglebone can communicate with other devices on the same bus, I’m pretty sure the component is attached properly, but no joy in trying to access it.

Does the Beaglebone support 8 bit I2c addresses? I'm using a TI bq28z610

  Which Beaglebone?

which has I2C address 0xAA, but I cannot access it via i2ctools. I can

  Per the BBB TRM (TI SPRUH73P)
"""
21.1.1 I2C Features
The general features of the I2C controller are:
• Compliant with Philips I2C specification version 2.1
• Supports standard mode (up to 100K bits/s) and fast mode (up to 400K
bits/s).
• Multimaster transmitter/slave receiver mode
• Multimaster receiver/slave transmitter mode
• Combined master transmit/receive and receive/transmit modes
• 7-bit and 10-bit device addressing modes
• Built-in 32-byte FIFO for buffered read or writes in each module
• Programmable clock generation
• Two DMA channels, one interrupt line
"""

  BB-AI TRM
"""
The multimaster HS I2C controllers have the following features:
• Compliant with Philips I2C specification version 2.1
• Supports a standard mode (up to 100 kbps) and fast mode (up to 400 kbps)
• Supports HS mode for transfer up to 3.4 Mbps (only for I2C3, I2C4 and
I2C5)
• 7-bit and 10-bit device addressing modes
• General call
• Start/Restart/Stop
• Multimaster transmitter/slave receiver mode
• Multimaster receiver/slave transmitter mode
• Combined master transmit/receive and receive/transmit mode
• Built-in FIFOs (16 bytes) for buffered read or write
• Module enable/disable capability
• Programmable multislave channel (responds to four separate addresses)
"""

  Per
https://www.totalphase.com/support/articles/200349176-7-bit-8-bit-and-10-bit-I2C-Slave-Addressing#8bit
8-bit addressing is not a proper I2C addressing mode.

  Your xAA is probably address x55 with read/write bit 0 (write)

Thanks. This part is totally confusing me. It is supposed to be an “upgrade” of a part I have been using. I guess my time is better spent getting the TI driver to work instead of accessing the registers directly, which is what I had been doing.

It is much simpler than you think. Look into the bq chip technical reference manual:

  the BQ28Z610 uses a series of 2-byte standard I2C commands with a 7-bit device address of 0x55 (8 bits = 0xAA to write and 0xAB to read).

You just have to know that Linux uses 7-bit addresses.

I.e. use i2cget with 0x55.
Or use i2cdetect to find out on which address the chip is really responding.

Thanks. This part is totally confusing me. It is supposed to be an "upgrade" of a part I have been using. I guess my time is better spent getting the TI driver to work instead of accessing the registers directly, which is what I had been doing.

>Does the Beaglebone support 8 bit I2c addresses? I'm using a TI bq28z610

        Which Beaglebone?

>which has I2C address 0xAA, but I cannot access it via i2ctools. I can

        Per the BBB TRM (TI SPRUH73P)
"""
21.1.1 I2C Features
The general features of the I2C controller are:
• Compliant with Philips I2C specification version 2.1
• Supports standard mode (up to 100K bits/s) and fast mode (up to 400K
bits/s).
• Multimaster transmitter/slave receiver mode
• Multimaster receiver/slave transmitter mode
• Combined master transmit/receive and receive/transmit modes
• 7-bit and 10-bit device addressing modes
• Built-in 32-byte FIFO for buffered read or writes in each module
• Programmable clock generation
• Two DMA channels, one interrupt line
"""

        BB-AI TRM
"""
The multimaster HS I2C controllers have the following features:
• Compliant with Philips I2C specification version 2.1
• Supports a standard mode (up to 100 kbps) and fast mode (up to 400 kbps)
• Supports HS mode for transfer up to 3.4 Mbps (only for I2C3, I2C4 and
I2C5)
• 7-bit and 10-bit device addressing modes
• General call
• Start/Restart/Stop
• Multimaster transmitter/slave receiver mode
• Multimaster receiver/slave transmitter mode
• Combined master transmit/receive and receive/transmit mode
• Built-in FIFOs (16 bytes) for buffered read or write
• Module enable/disable capability
• Programmable multislave channel (responds to four separate addresses)
"""

vvv here is the important info

        Per
https://www.totalphase.com/support/articles/200349176-7-bit-8-bit-and-10-bit-I2C-Slave-Addressing#8bit
8-bit addressing is not a proper I2C addressing mode.

        Your xAA is probably address x55 with read/write bit 0 (write)

^^^ here is the important info

I want to close this out for posterity. I’m not a fan of TI’s documentation, and their using of the 8 bit address (0xAA) is quite confusing. The bq28z610 uses standard 7 bit addressing with address of 0x55. The 8th bit is the Read/Write bit, which in my opinion, should not be linked in with the address. The real rub is the bq28z610 by default does not work with an sck of 400 KHz, which is the default speed of the Beaglebone, so the fix for this is to set a bit in the I2C Configuration register to enable 400 KHz operation – which, of course, you must do via a host running at 100 KHz.

I suspect this will cause someone else frustration, so I post the solution here – or, I might forget what I did in 6 months and need to come back and reference the solution!