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.

doing back-to-back I2C transfers without a stop/start or restart

Other Parts Discussed in Thread: OMAP3530

I'm writing a driver for the I2C controller in the OMAP35xx and i'm looking to read or write data in multiple chunks within a single transaction without a restart condition between the chunks.  I unfortunately know how many bytes the client will want to transfer in the entire transaction up front.

Say i'm writing two chunks, one n bytes and one m bytes, to a device.

I can send out the first chunk (CNT = n, CON = MST | TRX | EN | STT) and that ends with STAT=BB | ARDY and with the controller resetting CNT to n.

But for the second chunk (CNT = m, CON = MST | TRX | EN)  i never see XRDY asserted in STAT.

Is there a way to convince the I2C controller to start sending more data once it's finished a chunk?

thanks,

-p

  • Unfortunately it looks like your only options are to issue a "stop" or a "restart".  Some of our other devices with a similar I2C peripheral offer a different mode of operation where you don't need to use the CNT register.  Unfortunately OMAP3530 does not support this mode of operation.