I2C Speed issues

User avatar
shabtronic
Posts: 49
Joined: Sun Nov 03, 2019 1:33 pm

I2C Speed issues

Postby shabtronic » Thu Jan 02, 2020 6:05 pm

Hi Esp32 Folk


I'm guessing the I2C system is limited to around 1mhz?

I'm testing out various OLEDs - that I know can run above 1mhz - and I'm getting about 1.1mhz speed out the current I2C IDF system.

OLED is a SSD1327, buffer size is 8192 bytes - i2c speed is set to 2,000,000. Transfer time is around 16fps. This all works just splendidly - except it's not transferring at 2mhz:

9 bits per bytes transfer - extra bit is ACK - I'm ignoring the address bits overhead - since I blast my entire buffer in one go. And I have ack_en turned off when using
i2c_master_write_byte.
Filters are turned off:
i2c_filter_disable(I2C_NUM_0);

16x8192x9 = 1,179,648 bits per second.

Is there any simple mod to the current method to bypass the interrupt system - I'm guessing this is the slowdown. It's a really great simple system for general purpose I2C sub 1mhz - but I need a blasty polling system to hit max speeds.

I have attempted to modify the current setup - by changing the i2c structure to a word size for the byte count - and plonking a polling system to wait and fill for the fifo - but honestly I don't know what I'm doing and it crash panics :)

thanks

Shabby

Who is online

Users browsing this forum: Baidu [Spider], Bing [Bot], ok-home and 91 guests