Thanks. That confirms what I'm seeing with my logic analyzer.

What confuses me is why am I only seeing one byte transmitted, and not the three bytes that I expected? This is how I have the message to be sent defined:
buf[3] = { 0x02, 0x80, 0x70 };My transfer is setup as so...I've added comments to show the values I see when I single-step with the debugger:
memset(&Info[i2c].handle, 0, sizeof(i2c_master_handle_t));
memset(&Info[i2c].xfer, 0, sizeof(i2c_master_transfer_t));
Info[i2c].xfer.slaveAddress = addr; // 0x40
Info[i2c].xfer.direction = kI2C_Write; // 0x00
Info[i2c].xfer.subaddress = (uint32_t)reg; // 0x04
Info[i2c].xfer.subaddressSize = 1;
Info[i2c].xfer.data = buf; // address of { 0x02, 0x80, 0x70 }
Info[i2c].xfer.dataSize = len; // 0x03
Info[i2c].xfer.flags = kI2C_TransferDefaultFlag;
I2C_MasterTransferCreateHandle(Config[i2c].base, &Info[i2c].handle, MasterTxRxCallback, I2CU_Write);
stat = I2C_MasterTransferNonBlocking(Config[i2c].base, &Info[i2c].handle, &Info[i2c].xfer);
Info[i2c].inProgress = true;My understanding of the `subaddress` is that it's supposed to be the register/command to the slave device. If that's so, then I would expect the packet on the I2C bus to be something like `{ 0x40, 0x04, 0x80, 0x70 }`. Is that not so? Is there perhaps something with my transfer setup that I'm missing?