Skip to main content
added 62 characters in body
Source Link

I'm trying to use an Aardvark I2C controller over the SMBUS_TEST1 header on an ASRock IMB-A8000 motherboard to read voltage and current from an RT3674AE regulator. I don't have a schematic for the motherboard, but through trial and error I've determined that there's a PCA9545A switch on the bus, with the CPU on one side, and both the RT3674AE and the SMBUS_TEST1 header pins on the other.

[CPU] ---- [ i2c controller ] ---- [  PCA9545A 3] ---- [RT3674AE] ------- [others]
                                   [           2] ---- [SMBUS_TEST1] ---- [Aardvark]
                                   [(disabled) 1] ----
                                   [           0] ----

The RT3674A is at address 0x20. I can get the chip id (register 0xfb, value 0x74) from both sides of the switch, using a Linux shell on one side of the switch, and Python to drive the Aardvark on the other.

The problem is when I try to read the two voltage registers at 0x8b and 0x8c, usually after writing to set the page but not always, I get two completely different values; the one I get from the Linux shell makes sense, but the one I get from the Aardvark doesn't. I've attached some screen shots of the transactions from both sides. I thought it may be an address conflict but as far as I can tell from using i2cdetect there are no other slave devices with address 0x20.

Has anyone seen anything like this before? Another thought I had was maybe there's a multi-master issue, but I only see traffic on the I2C bus at boot, and never when I'm trying to query the regulator.

Attached are some waveforms of both controllers initiating reads, captured parallel to the Aardvark and the SMBUS_TEST1 header.

Any help or insight is much appreciated. Thanks.

Aardvark reading chipid Aardvark reading chipid

Linux reading chipid Linux reading chipid

Aardvark writing page 0x3 (rail A) Aardvark writing page

Linux writing page 0x3 (rail A) Linux writing page

Aardvark reading voltage high byte Aardvark reading voltage high byte

Linux reading voltage high byte Linux reading voltage high byte

Aardvark reading voltage low byte Aardvark reading voltage low byte

Linux reading voltage low byte Linux reading voltage low byte

I'm trying to use an Aardvark I2C controller over the SMBUS_TEST1 header on an ASRock IMB-A8000 motherboard to read voltage and current from an RT3674AE regulator. I don't have a schematic for the motherboard, but through trial and error I've determined that there's a PCA9545A switch on the bus, with the CPU on one side, and both the RT3674AE and the SMBUS_TEST1 header pins on the other.

[CPU] ---- [ i2c controller ] ---- [  PCA9545A 3] ---- [RT3674AE] ------- [others]
                                   [           2] ---- [SMBUS_TEST1] ---- [Aardvark]
                                   [(disabled) 1] ----
                                   [           0] ----

The RT3674A is at address 0x20. I can get the chip id (register 0xfb, value 0x74) from both sides of the switch, using a Linux shell on one side of the switch, and Python to drive the Aardvark on the other.

The problem is when I try to read the two voltage registers at 0x8b and 0x8c, usually after writing to set the page but not always, I get two completely different values; the one I get from the Linux shell makes sense, but the one I get from the Aardvark doesn't. I've attached some screen shots of the transactions from both sides. I thought it may be an address conflict but as far as I can tell from using i2cdetect there are no other slave devices with address 0x20.

Has anyone seen anything like this before? Another thought I had was maybe there's a multi-master issue, but I only see traffic on the I2C bus at boot, and never when I'm trying to query the regulator.

Attached are some waveforms of both controllers initiating reads.

Any help or insight is much appreciated. Thanks.

Aardvark reading chipid Aardvark reading chipid

Linux reading chipid Linux reading chipid

Aardvark writing page 0x3 (rail A) Aardvark writing page

Linux writing page 0x3 (rail A) Linux writing page

Aardvark reading voltage high byte Aardvark reading voltage high byte

Linux reading voltage high byte Linux reading voltage high byte

Aardvark reading voltage low byte Aardvark reading voltage low byte

Linux reading voltage low byte Linux reading voltage low byte

I'm trying to use an Aardvark I2C controller over the SMBUS_TEST1 header on an ASRock IMB-A8000 motherboard to read voltage and current from an RT3674AE regulator. I don't have a schematic for the motherboard, but through trial and error I've determined that there's a PCA9545A switch on the bus, with the CPU on one side, and both the RT3674AE and the SMBUS_TEST1 header pins on the other.

[CPU] ---- [ i2c controller ] ---- [  PCA9545A 3] ---- [RT3674AE] ------- [others]
                                   [           2] ---- [SMBUS_TEST1] ---- [Aardvark]
                                   [(disabled) 1] ----
                                   [           0] ----

The RT3674A is at address 0x20. I can get the chip id (register 0xfb, value 0x74) from both sides of the switch, using a Linux shell on one side of the switch, and Python to drive the Aardvark on the other.

The problem is when I try to read the two voltage registers at 0x8b and 0x8c, usually after writing to set the page but not always, I get two completely different values; the one I get from the Linux shell makes sense, but the one I get from the Aardvark doesn't. I've attached some screen shots of the transactions from both sides. I thought it may be an address conflict but as far as I can tell from using i2cdetect there are no other slave devices with address 0x20.

Has anyone seen anything like this before? Another thought I had was maybe there's a multi-master issue, but I only see traffic on the I2C bus at boot, and never when I'm trying to query the regulator.

Attached are some waveforms of both controllers initiating reads, captured parallel to the Aardvark and the SMBUS_TEST1 header.

Any help or insight is much appreciated. Thanks.

Aardvark reading chipid Aardvark reading chipid

Linux reading chipid Linux reading chipid

Aardvark writing page 0x3 (rail A) Aardvark writing page

Linux writing page 0x3 (rail A) Linux writing page

Aardvark reading voltage high byte Aardvark reading voltage high byte

Linux reading voltage high byte Linux reading voltage high byte

Aardvark reading voltage low byte Aardvark reading voltage low byte

Linux reading voltage low byte Linux reading voltage low byte

squash up ascii art so it fits
Source Link
Attie
  • 3k
  • 1
  • 10
  • 15

I'm trying to use an Aardvark I2C controller over the SMBUS_TEST1 header on an ASRock IMB-A8000 motherboard to read voltage and current from an RT3674AE regulator. I don't have a schematic for the motherboard, but through trial and error I've determined that there's a PCA9545A switch on the bus, with the CPU on one side, and both the RT3674AE and the SMBUS_TEST1 header pins on the other.

[CPU] ----- [ i2c controller ] --------- [  PCA9545A 3] ---------- [RT3674AE] ------- [others]
                                         [           2] ---------- [SMBUS_TEST1] ---- [Aardvark]
                                         [(disabled) 1] ----------
                                         [           0] ----------

The RT3674A is at address 0x20. I can get the chip id (register 0xfb, value 0x74) from both sides of the switch, using a Linux shell on one side of the switch, and Python to drive the Aardvark on the other.

The problem is when I try to read the two voltage registers at 0x8b and 0x8c, usually after writing to set the page but not always, I get two completely different values; the one I get from the Linux shell makes sense, but the one I get from the Aardvark doesn't. I've attached some screen shots of the transactions from both sides. I thought it may be an address conflict but as far as I can tell from using i2cdetect there are no other slave devices with address 0x20.

Has anyone seen anything like this before? Another thought I had was maybe there's a multi-master issue, but I only see traffic on the I2C bus at boot, and never when I'm trying to query the regulator.

Attached are some waveforms of both controllers initiating reads.

Any help or insight is much appreciated. Thanks.

Aardvark reading chipid Aardvark reading chipid

Linux reading chipid Linux reading chipid

Aardvark writing page 0x3 (rail A) Aardvark writing page

Linux writing page 0x3 (rail A) Linux writing page

Aardvark reading voltage high byte Aardvark reading voltage high byte

Linux reading voltage high byte Linux reading voltage high byte

Aardvark reading voltage low byte Aardvark reading voltage low byte

Linux reading voltage low byte Linux reading voltage low byte

I'm trying to use an Aardvark I2C controller over the SMBUS_TEST1 header on an ASRock IMB-A8000 motherboard to read voltage and current from an RT3674AE regulator. I don't have a schematic for the motherboard, but through trial and error I've determined that there's a PCA9545A switch on the bus, with the CPU on one side, and both the RT3674AE and the SMBUS_TEST1 header pins on the other.

[CPU] ----- [ i2c controller ] --------- [  PCA9545A 3] ---------- [RT3674AE] ------ [others]
                                         [           2] ---------- [SMBUS_TEST1] --- [Aardvark]
                                         [(disabled) 1] ----------
                                         [           0] ----------

The RT3674A is at address 0x20. I can get the chip id (register 0xfb, value 0x74) from both sides of the switch, using a Linux shell on one side of the switch, and Python to drive the Aardvark on the other.

The problem is when I try to read the two voltage registers at 0x8b and 0x8c, usually after writing to set the page but not always, I get two completely different values; the one I get from the Linux shell makes sense, but the one I get from the Aardvark doesn't. I've attached some screen shots of the transactions from both sides. I thought it may be an address conflict but as far as I can tell from using i2cdetect there are no other slave devices with address 0x20.

Has anyone seen anything like this before? Another thought I had was maybe there's a multi-master issue, but I only see traffic on the I2C bus at boot, and never when I'm trying to query the regulator.

Attached are some waveforms of both controllers initiating reads.

Any help or insight is much appreciated. Thanks.

Aardvark reading chipid Aardvark reading chipid

Linux reading chipid Linux reading chipid

Aardvark writing page 0x3 (rail A) Aardvark writing page

Linux writing page 0x3 (rail A) Linux writing page

Aardvark reading voltage high byte Aardvark reading voltage high byte

Linux reading voltage high byte Linux reading voltage high byte

Aardvark reading voltage low byte Aardvark reading voltage low byte

Linux reading voltage low byte Linux reading voltage low byte

I'm trying to use an Aardvark I2C controller over the SMBUS_TEST1 header on an ASRock IMB-A8000 motherboard to read voltage and current from an RT3674AE regulator. I don't have a schematic for the motherboard, but through trial and error I've determined that there's a PCA9545A switch on the bus, with the CPU on one side, and both the RT3674AE and the SMBUS_TEST1 header pins on the other.

[CPU] ---- [ i2c controller ] ---- [  PCA9545A 3] ---- [RT3674AE] ------- [others]
                                   [           2] ---- [SMBUS_TEST1] ---- [Aardvark]
                                   [(disabled) 1] ----
                                   [           0] ----

The RT3674A is at address 0x20. I can get the chip id (register 0xfb, value 0x74) from both sides of the switch, using a Linux shell on one side of the switch, and Python to drive the Aardvark on the other.

The problem is when I try to read the two voltage registers at 0x8b and 0x8c, usually after writing to set the page but not always, I get two completely different values; the one I get from the Linux shell makes sense, but the one I get from the Aardvark doesn't. I've attached some screen shots of the transactions from both sides. I thought it may be an address conflict but as far as I can tell from using i2cdetect there are no other slave devices with address 0x20.

Has anyone seen anything like this before? Another thought I had was maybe there's a multi-master issue, but I only see traffic on the I2C bus at boot, and never when I'm trying to query the regulator.

Attached are some waveforms of both controllers initiating reads.

Any help or insight is much appreciated. Thanks.

Aardvark reading chipid Aardvark reading chipid

Linux reading chipid Linux reading chipid

Aardvark writing page 0x3 (rail A) Aardvark writing page

Linux writing page 0x3 (rail A) Linux writing page

Aardvark reading voltage high byte Aardvark reading voltage high byte

Linux reading voltage high byte Linux reading voltage high byte

Aardvark reading voltage low byte Aardvark reading voltage low byte

Linux reading voltage low byte Linux reading voltage low byte

Corrected registers and added salutations
Source Link

I'm trying to use an Aardvark I2C controller over the SMBUS_TEST1 header on an ASRock IMB-A8000 motherboard to read voltage and current from an RT3674AE regulator. I don't have a schematic for the motherboard, but through trial and error I've determined that there's a PCA9545A switch on the bus, with the CPU on one side, and both the RT3674AE and the SMBUS_TEST1 header pins on the other.

[CPU] ----- [ i2c controller ] --------- [  PCA9545A 3] ---------- [RT3674AE] ------ [others]
                                         [           2] ---------- [SMBUS_TEST1] --- [Aardvark]
                                         [(disabled) 1] ----------
                                         [           0] ----------

The RT3674A is at address 0x20. I can get the chip id (register 0xfb, value 0x74) from both sides of the switch, using a Linux shell on one side of the switch, and Python to drive the Aardvark on the other.

The problem is when I try to read the two voltage registers at 0x8a and 0x8b and 0x8c, usually after writing to set the page but not always, I get two completely different values; the one I get from the Linux shell makes sense, but the one I get from the Aardvark doesn't. I've attached some screen shots of the transactions from both sides. I thought it may be an address conflict but as far as I can tell from using i2cdetect there are no other slave devices with address 0x20.

Has anyone seen anything like this before? Another thought I had was maybe there's a multi-master issue, but I only see traffic on the I2C bus at boot, and never when I'm trying to query the regulator.

Attached are some waveforms of both controllers initiating reads.

Any help or insight is much appreciated. Thanks.

Aardvark reading chipid Aardvark reading chipid

Linux reading chipid Linux reading chipid

Aardvark writing page 0x3 (rail A) Aardvark writing page

Linux writing page 0x3 (rail A) Linux writing page

Aardvark reading voltage high byte Aardvark reading voltage high byte

Linux reading voltage high byte Linux reading voltage high byte

Aardvark reading voltage low byte Aardvark reading voltage low byte

Linux reading voltage low byte Linux reading voltage low byte

I'm trying to use an Aardvark I2C controller over the SMBUS_TEST1 header on an ASRock IMB-A8000 motherboard to read voltage and current from an RT3674AE regulator. I don't have a schematic for the motherboard, but through trial and error I've determined that there's a PCA9545A switch on the bus, with the CPU on one side, and both the RT3674AE and the SMBUS_TEST1 header pins on the other.

[CPU] ----- [ i2c controller ] --------- [  PCA9545A 3] ---------- [RT3674AE] ------ [others]
                                         [           2] ---------- [SMBUS_TEST1] --- [Aardvark]
                                         [(disabled) 1] ----------
                                         [           0] ----------

The RT3674A is at address 0x20. I can get the chip id (register 0xfb, value 0x74) from both sides of the switch, using a Linux shell on one side of the switch, and Python to drive the Aardvark on the other.

The problem is when I try to read the two voltage registers at 0x8a and 0x8b, usually after writing to set the page but not always, I get two completely different values; the one I get from the Linux shell makes sense, but the one I get from the Aardvark doesn't. I've attached some screen shots of the transactions from both sides. I thought it may be an address conflict but as far as I can tell from using i2cdetect there are no other slave devices with address 0x20.

Has anyone seen anything like this before? Another thought I had was maybe there's a multi-master issue, but I only see traffic on the I2C bus at boot, and never when I'm trying to query the regulator.

Attached are some waveforms of both controllers initiating reads.

Any help or insight is much appreciated. Thanks.

Aardvark reading chipid Aardvark reading chipid

Linux reading chipid Linux reading chipid

Aardvark writing page 0x3 (rail A) Aardvark writing page

Linux writing page 0x3 (rail A) Linux writing page

Aardvark reading voltage high byte Aardvark reading voltage high byte

Linux reading voltage high byte Linux reading voltage high byte

Aardvark reading voltage low byte Aardvark reading voltage low byte

Linux reading voltage low byte Linux reading voltage low byte

I'm trying to use an Aardvark I2C controller over the SMBUS_TEST1 header on an ASRock IMB-A8000 motherboard to read voltage and current from an RT3674AE regulator. I don't have a schematic for the motherboard, but through trial and error I've determined that there's a PCA9545A switch on the bus, with the CPU on one side, and both the RT3674AE and the SMBUS_TEST1 header pins on the other.

[CPU] ----- [ i2c controller ] --------- [  PCA9545A 3] ---------- [RT3674AE] ------ [others]
                                         [           2] ---------- [SMBUS_TEST1] --- [Aardvark]
                                         [(disabled) 1] ----------
                                         [           0] ----------

The RT3674A is at address 0x20. I can get the chip id (register 0xfb, value 0x74) from both sides of the switch, using a Linux shell on one side of the switch, and Python to drive the Aardvark on the other.

The problem is when I try to read the two voltage registers at 0x8b and 0x8c, usually after writing to set the page but not always, I get two completely different values; the one I get from the Linux shell makes sense, but the one I get from the Aardvark doesn't. I've attached some screen shots of the transactions from both sides. I thought it may be an address conflict but as far as I can tell from using i2cdetect there are no other slave devices with address 0x20.

Has anyone seen anything like this before? Another thought I had was maybe there's a multi-master issue, but I only see traffic on the I2C bus at boot, and never when I'm trying to query the regulator.

Attached are some waveforms of both controllers initiating reads.

Any help or insight is much appreciated. Thanks.

Aardvark reading chipid Aardvark reading chipid

Linux reading chipid Linux reading chipid

Aardvark writing page 0x3 (rail A) Aardvark writing page

Linux writing page 0x3 (rail A) Linux writing page

Aardvark reading voltage high byte Aardvark reading voltage high byte

Linux reading voltage high byte Linux reading voltage high byte

Aardvark reading voltage low byte Aardvark reading voltage low byte

Linux reading voltage low byte Linux reading voltage low byte

Source Link
Loading