AnsweredAssumed Answered

how to reduce the delay of i2c

Question asked by jeff gu on Nov 26, 2014
Latest reply on Nov 26, 2014 by jeff gu

Hello,

I'm using the i2c to read data from device. Presently it is OK to read the data correctly. See the attached waveform:

yellow line: i2c SCL

green line:  i2c SDA

This figure indicates a 10bytes data read, SCL frq=300KHz

In thewaveform, there are 2 long delay during i2c access. The first delay happens between address and first data read, the second delay happens between i2c Nack and i2c Stop. Is there any way to shorten or eliminate these 2 delays?

good_i2c.bmp

 

For a easy understanding, the source code for i2c reading is like:

 

    i2c_Start();

    i2c_write_byte(W9002_ADDRESS<<1|I2C_READ);
    i2c_Wait();

    i2c_EnterRxMode();
    i2c_read_byte(dst[0]);   //Dummy read
    i2c_Wait();

    for(i=0;i<8;i++){
        i2c_read_byte(dst[i]);
        i2c_Wait();      
    }

    i2c_DisableAck();

    i2c_read_byte(dst[i++]);
i2c_Wait();

    i2c_Stop();
    i2c_read_byte(dst[i]);

Outcomes