Instrument Control (GPIB, Serial, VISA, IVI)

cancel
Showing results for 
Search instead for 
Did you mean: 

SMBus addressing using USB-8451

The LabVIEW drivers for I2C used with USB-8451 require the Read/Write bit in the address byte to be dropped and the driver internally deals with this for the I2C bus. For the SMBus this same bit is used to specific 'Packet Error Checking' not Read/Write. If I drop the bit from 0x0B and use 0x05 and try to communicate with a Smart Battery on the bus it does not respond. If I leave the bit in the byte and simply use the address as is (0x0B), it works. What is going on here? Is there a set of VIs specifically for the SMBus so that this bit can be set appropriately?

Thanks,

Peter  

0 Kudos
Message 1 of 5
(4,216 Views)

Hi Peter,

 

What device (model number wise) are you communicating with? I'm curious to see the data sheet for it to see how it expects data.

 

Thanks!

Chris T.
0 Kudos
Message 2 of 5
(4,194 Views)

I have a custom PCB with four PCA9547 8-channel I2C bus multiplexers that allow me to connect 32 smart batteries and chargers (both SMBus devices). The battery uses TI bq20z80-v110 and the charger uses TI bq24721c.

 

The addressing scheme for the PCA9547 has the bit shift which drops the read/write but if I do this with the battery or charger they do not respond. The battery address is 0x0B and the charger is 0x09... fixed addresses for these ICs. If I use these addresses as is with no bit shifting they work. I may have misread the SMBus specification for PEC, pack error checking, and confused it with what I am seeing in my addressing issues. I simply want to make sure that I am not overlooking something that will be an issue later on.

 

Why do I need to bit shift the PCA9547 address but not the bq24721c or bq20z80-v110 addresses?

 

thanks,

pete

0 Kudos
Message 3 of 5
(4,186 Views)

Hi pete,

 

Looking at the specifications, the PCA9547 doesn't seem to be using any bit shifting but has a standard I2C addressing. In I2C the R/W bit is automatically done and the address is just the value that is sent through. So the address you put in is going to look like <Address><R/W> as one byte. As for PEC, PEC is an additional byte added to the end of the transmission as a check and not the last bit.

 

Is this bit shift that you are doing before putting this into the address for the 8451 VI's? If so, then the reason why is the address as the R/W bit still included in the address, for your battery, it does not seem like the address that you were given has the R/W bit tacked on.

 

Hope this clears things up.

Chris T.
0 Kudos
Message 4 of 5
(4,162 Views)

Chris...

 

Thanks.

 

Looking at it closer you are correct the battery and charger SMBus addresses drop the R/W bit for me where as the I2C mux IC does not hence why I have to remove it from the address for the I2C mux IC and NOT the SMBus battery and charger ICs.

 

Thanks again. 

 

Pete

0 Kudos
Message 5 of 5
(4,148 Views)