CY8C29466 I2CHW multimaster slave hang

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

cross mob
JaLi_1091341
Level 1
Level 1
5 sign-ins First question asked First reply posted

I have a "smart" IO board based on the CY8C29466.   The smartio board is designed to collaborate with an central processor via exchange of I2C messages.      Both devices are configured as  Multi-master-slave mode i2c.        This is a legacy product that has been working well for some years.       I've configured the smartio board to send a test message at 1 second intervals.     When connected to an Older central processor (also CY8C29466 based)  the communications works reliably.

When I connect the legacy smartio device to a newer pSoc4 based central control processor board,  the smartio device stops sending messages after a few seconds (always less than 60seconds).       I've traced the I2C bus using a logic analyzer and scope in parallel.    The odd thing is that the smartio/29466 seems to abort transmission in the midst of transmitting a byte on the I2C.     This is NOT a case where the receiving I2C device fails to generate an acknowledge.    The sending device (my legacy smartio board) just stops sending somewhere between 1 and 7 bits into the byte.  

I've check errata on the I2CHW module, the 8C29466, and the psoc4 and did not see anything that seemed relevant.    

One thought is that the smartio/29466 is getting reset although I don't see a good reason why this would happen with a legacy host device vs the newer one.   XRES is not going high/glitching.   Watchdog timer is disabled.

Any suggestions appreciated.....

Jim

0 Likes
2 Replies
SampathS_11
Moderator
Moderator
Moderator
250 sign-ins 250 solutions authored 5 questions asked

Hello Jim,

This looks like the Smart IO Board I2C Master has lost arbitration. Can you kindly insert a 100 ohm resistor in SDA / SCL lines, first between 1 master and the bus, and then between the other master and the bus. This way, you will see logic low a bit higher on the bus, compared to the logic low level in the master.

Are the VDD for Smart IO and PSoC4 same?

Thanks,

Sampath

0 Likes

Hi Sampath,

Thank-you for your suggestion.    I'm not sure I understand the objective of the resistors?    Although it is a multimaster bus,  there is only one sending master (the smartio board).    

As a test I configured one of the other devices to also become master and send a message periodically.    This seems to "unstick" the smartio board and it resumes transmitting its test message for a while before hanging up again.     I think this supports the theory that its an arbitration issue.    Perhaps an SDA glitch is causing the smartio board to think it lost arbitration even though no-one else is actually sending.

Regarding the Vdd question,   the test configuration has 4 devices including the smartio board.    3 of the devices are powered by Vdd=5V,  one has Vdd=3.3V.    We use the LTC4313-3 I2C buffer/repeater/level translator to handle the differences in Vdd.     I am sort of wondering if the LTC4313 is glitching!

Regards,

Jim

0 Likes