Why does I2Cm_SendStop() create an extra pulse on SCL?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
wistc_299286
Level 3
Level 3
10 replies posted 10 sign-ins First solution authored

Hello Cypress Forum,

I'm having an issue where the I2Cm_SendStop() appears to create an extra pulse on the SCL line in PSOC1. We are having communication issues with the slave that are catastrophic in certain conditions and the slave device sometimes won't ACK the PSOC with this extra pulse and the whole design fails. We think our problem of the slave not acknowledging the master is due to the extra clock pulse after the ACK. I've created a slide that shows the I2C transactions with a one byte write both with a stop and without and the code that generates this transaction. In both pics the slave acknowledges the master as I haven't created the failure state. I am just showing the extra clock pulse that is being created by the I2CmSendStop code.

Does anyone know why this is happening and how to correct it?

Also, is it possible to write my own send stop function and still use the I2Cm API library if this extra pulse can't be removed?

In my application I am using the Low Level functions.

pastedImage_0.png

0 Likes
1 Reply
BragadeeshV
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hi William,

Could you please share your project file focusing on the issue. I will try to replicate the issue from my side and see what's the issue.

Regards,

Bragadeesh

Regards,
Bragadeesh
0 Likes