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.

I2C Burst Mode



Hello,

I want to understand does API function

I2CMasterControl(uint32_t ui32Base, I2C_MASTER_CMD_BURST_RECEIVE_START)

increments the address of register with which reading began? I want to read from peripherals FIFO buffer and have an address of its register. 

What occurs on next cycle, when I use function

I2CMasterControl(uint32_t ui32Base, I2C_MASTER_CMD_BURST_RECEIVE_CONT) ?

Regards

  • The different control "codes" only control whether the I2C module puts a START or STOP condition on the bus before/after sending/receiving a byte or not. Whether the "address of register" (which I assume means for example the register address of an EEPROM chip) is incremented or not depends on the peripheral - the I2C module has no control over it.
    Briefly:
    _RECEIVE_START = put a START condition on the bus, transmit the slave address and read a byte
    _RECEIVE_CONT = read a byte
    _RECEIVE_FINISH = read a byte and put a STOP condition on the bus
    _SINGLE_RECEIVE = put a START condition on the bus, transmit the slave address, read a byte and put a STOP condition on the bus
    Similar for the _SEND_ counterparts.
  • Hello Sergey,

    The BURST feature on TM4C devices only manages the data in the FIFO and not the address. That is a function of the end device as to how it handles the address.
    As Veikko mentioned it already the MACRO manage how the I2C Frame has to be controlled in terms of putting a Start, Stop or doing a transaction. As an example
    TRANSMIT_START: Will send a Start with an slave address and data in write direction
    RECEIVE_START:Will send a Start with an slave address and data in read direction
    RECEIVE_CONT:Will receive data
    RECEIVE_STOP: Will receive data and put a stop condition

    Regards
    Amit