Disabling I2C Automatic Stop?

Showing results for 
Search instead for 
Did you mean: 

Disabling I2C Automatic Stop?

Contributor II

For an I2C device I'm trying to use, it's required to gang up a bunch of reads and writes in sequence with a STOP signal only at the very end. Here is the reasoning:


9.4 End of Communication Session / Window
Similar to other Azoteq I2C devices, to end the I2C communication session, a STOP command
is given. When sending numerous read and write commands in one communication cycle, a
repeated start command must be used to stack them together (since a STOP will jump out of
the communication window, which is not desired).
The STOP will then end the communication, and the IQS263 will return to process a new set of
data. Once this is obtained, the communication window will again become available (RDY set


After running into issue after issue with the PEx I2C_LDD driver, I'm considering a switch to the fsl_i2c driver but it doesn't look like it supports this use case. I can't see any way to NOT send a STOP condition on send or receive. Am I correct in this conclusion?

Labels (1)
0 Kudos
2 Replies

NXP Employee
NXP Employee

Hello Vishal Talwar:

The I2C driver in KSDK allows one switch from Write to Read in-between a transfer (using a Repeated Start) when calling the function I2C_DRV_MasterReceiveData() or I2C_DRV_MasterReceiveDataBlocking. In case you would need more than 1 Write/Read switch before the STOP condition then you are right, this is not supported but that is not a typical use case.

Actually I checked the datasheet for your device (IQS263) and the KSDK I2C driver can be used for the 3 types of transfers: Current Address Read, Random Read and Write.

I hope this helps to clarify. Let me know if you still face doubts.

Jorge Gonzalez

Note: If this post answers your question, please click the Correct Answer button. Thank you!

0 Kudos

Contributor III

I'm having the same problem.  Using SDK 2.2 for KL27.

How do I send Current Address Read?  The drivers always send out the register address.  Can I put in a NULL for the register address?

0 Kudos