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.

MSP432E401Y: I2C register read initialized using only 1 or 2 master bytes

Part Number: MSP432E401Y

Team,

I am trying to determine if the MSP432's dedicated I2C block will support a register read initialized with one master byte (i.e. master sends slave address with read request, and slave data immediately follows) or two master bytes (i.e. master sends slave address with read request, then the register address, and slave data immediately follows).

I know the standard typically requires three master bytes (0:write request, 1:slave address, 2:read request) to be sent before the slave starts to respond as shown in Figure 9 of http://www.ti.com/lit/pdf/slva704. However, looking through the "UM10204 I2C-bus specification and user manual" from NXP ( https://www.nxp.com/docs/en/user-guide/UM10204.pdf ), I found that there is a mode whereby the "Master reads slave immediately after first byte (see Figure 12). At the moment of the first acknowledge, the master-transmitter becomes a master-receiver and the slave-receiver becomes a slave-transmitter.

However, I have not been able to find any mention or examples (from TI and non-TI sources) that implement this single master byte initiated register read, so I assume it is not very common. I know the I2C supports the Quick Command in SMBus mode, which is similar, but not identical to what is described in the I2C standard doc. Figure 1 of the http://www.ti.com/lit/an/sloa132/sloa132.pdf shows a comparison SMBus versus I2C, and it is the "I2C Single -Byte Read" (top right) example in the figure we want to implement using the I2C block of the MSP432 without having to bit-bang.

If the MSP432E401Y's I2C block only supports the 3 byte master initiated register read, does TI offer an alternative MCU that does support the 1 or 2 byte master initiated standard variant? If not, I suspect this will need to be bit-banged.

  • Hi,

    I must say slva704 is not specially for MSP432Exx.

    I check the UG and example code, I can't find enough information about master receive.

    This is from MPS432Pxx, which is same with MSP430, it shows that it support this function. 

    I must say it should meet the I2C standard and support this function. I can't find any code examples, one solution is to refer to bootloader(C:\ti\simplelink_msp432e4_sdk_4_10_00_13\examples\nortos\MSP_EXP432E401Y\boot_loader). Or you can look into the API user guide.

**Attention** This is a public forum