Part Number: TMS570LC4357
An IC we're working with (PCA9654E) requires a repeat start condition -- without stop -- between writing a command byte and reading the resultant value from the register.

Here is the code I'm calling to do this. Note that I've removed code that waits for the busy bus, etc, here to save space. (Those functions are working OK when called from functions that exclusively write or read bytes on the bus).
inline int i2cSendGetBytes(uint8_t slaveId, uint32_t out_length, uint8_t *out_data,
uint32_t in_length, uint8_t *in_data) {
i2cBASE_t *i2c = i2cREG1;
i2cSetMode(i2c, I2C_MASTER | I2C_REPEATMODE);
i2cSetSlaveAdd(i2c, slaveId);
i2cSetDirection(i2c, I2C_TRANSMITTER);
i2cSetStart(i2c);
//WaitForTxReady Here
i2cSend(i2c, out_length, out_data);
//WaitWhileBusy Here
//WaitForMasterReady Here
i2cSetMode(i2c, I2C_MASTER);
i2cSetSlaveAdd(i2c, slaveId);
i2cSetDirection(i2c, I2C_RECEIVER);
i2cSetCount(i2c, in_length);
i2cSetStart(i2c);
//WaitForRxReady Here
i2cReceive(i2c, in_length, in_data);
// WaitWhileBusy Here
// WaitForStop here
//WaitForMasterReady here
i2cSetStop(i2c);
}
Is this the general algorithm? I never get anything but 0x00 from the read operation. I suspect I'm missing setting a mode or state.
