- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Labels:
-
PSoC 1
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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