I2C communication reliability

Hi all

This is my first post so please be kind! I'm completely new to programming but trying my best to learn

Apologies if this is in the wrong section, I'll move the post if an admin can advise.

I'm currently designing a watch using an LED Matrix Display and a RTC module connected via I2C. In short I'm concerned with the reliability of I2C (purely due to seeing other posts on various forums claiming lost data packets etc.) which has set my paranoia going!

I am using the wire.h library, in combination with the DSRTCLib.h RTC library. It concerns me that if the I2C does lose communication or data packets somewhere down the line I'm not going to know. I've read up on I2C and have a reasonable grasp of it's functioning but I'm by no means an expert in it's operation.

I suppose what I'm looking for is some way of knowing that the I2C has successfully transmitted all data packets so the time displayed on the LED Matrix is accurate.

In addition if the I2C did suddenly lose connection mid way through sending data what would the processor interpret this as? does it simply hang waiting for the ACK and the STOP command or does it just take whatever data it has received and assume the rest is value 0 and ends communication?

Sorry for the long post, I'm really close to finishing my project but I'm concerned that I'll never know if the time displayed on my watch is accurate - obviously a pretty important thing for a watch!

Many thanks


Most of the i2c issues I have seen involve the project having solenoids or motors or other noisy parts that can cause noise on the i2c lines. Simply reading/writing to other ICs will not have this issue. How long is the connection to the matrix?

Hi blh64

Thank you for your reply! The connection should be really short. In essence the processor (328p) requests data from the rtc and stores this in a buffer (i think thats the right term) ready for the software to read from. Reading the DSRTCLib.h library it appears that when a RTC.read statement is called the 328p requests 6 peices of information (the hour, minute, second, month, day and year) from the rtc.

What worries me was if half way through the data transfer for lets say the minutes if the connection was interupted or lost and an innacurate value was recorded. This would then be shown on the display.