We are using register mode for I2C write. Documentation says that in this mode all APIs are blocking which means they return when the transaction is complete. But we are observing that CyU3PI2cTransmitBytes returns back prior to completion of the transaction i.e before the stop bit. Also if single byte is written CyU3PI2cTransmitBytes returns even much earlier.

How are you timing the execution time of the code and the completion of the transfer i.e. the occurence of stop bit is on the physical line and the returning of the API is code execution. How are you timing the 2?