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.

MSP430F6734A: Understanding DriverLib's Master I2C routines

Part Number: MSP430F6734A

Hi,

1) Why is there a timeout parameter in master mode of I2C module?

bool EUSCI_B_I2C_masterSendMultiByteStartWithTimeout (uint16_t baseAddress,
    uint8_t txData, uint32_t timeout);

Isn't sending the data under the control of MSP because it is master?

And also what is the unit of this parameter?

2) Why does non of the master routines check whether the data transmitted is acknowledged by the slave? Suppose the slave address is wrong in production and what will be the behavior of DiriverLib I2C routines?

3) Can TI provide me a reliable I2C routines that uses latest eUSCI capabilities without any interrupts that increase design complexity (pooling is enough in this case) in order to read data from an EEPROM.

Thanks.

  • The timeout is measured in "iterations of a loop that polls the status register", so it is anything but precise. Assume that one loop iteration takes at least seven MCLK cycles.

    Without an ACK, TXIFG is not set, and you run into the timeout.
    If you do not want to use the timeout, you could instead install an interrupt handler for UCNACKIFG.

    The DriverLib functions do not use interrupts if UCTXIE etc. are not set.

  • DriverLib is the official peripheral libraries provided by TI. What is the reason of not checking UCNACKIFG flag instead of timeout? Is there a bug in MSP430 I2C module?