This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ78350-R1: SMBus Communication for BQ78350-R1: (Data Flash) Block Write, Block Read

Part Number: BQ78350-R1

Hello,

I'm a university student working on a 10-series BMS using the BQ78350-R1 and the BQ769300.

I did some research and looked at other forums to get started with SMBus using an I2C Interface (BLE113).

This is what I have so far, but I can't figure out what is or isn't happening correctly. I have here attached code, examples, and the Logic Analyzer. 

Any help would be appreciated!

-------------------------------------------------------------

Based off of the TI I2C Compatibility Worksheet...

Block Write = SMBus Address // Command // N Bytes (Write) // Data

Block Read = SMBus Address (Write) // Command // Restart // SMBus Address (Read) // N Bytes (Read) // Data 

The example DF Write and Read from the Fuel Gauge Technical:

This is my code in IAR to write. The TRUE parameter is simply the repeated start. 
I am attempting to write to the address 0x4466 the value 0x00 then read that value back. 

Here is the response:

As far as I am aware, the 0x0B is just the 0x16/0x17 write/read shifted for my I2C implementation?

Thanks,

  • Hello,

    Any help from TI Employees or anyone with SMBus Experience? 

    Note, I believe I have it working now to initially write and read blocks.

    Simply: A write of the command, number of bytes, address then data, followed by a write of the command and sequential read gives me the value I wrote to the registers, 32 bytes at a time. 

    I don't believe my SMBus Communication is very reliable, however. I am attempting to write to multiple registers and I am getting a set of NACK'ed writes that occur every other ACK'ed write. The NACK'ed writes are random, as well.

    Take a look at the following Logic Analyzer.