why some I2C-displays stop working ...
Posted: Thu Jun 13, 2024 5:21 am
Hi,
I see, some people have problems with their I²C displays.
I had similar problems 3 month ago. I made a temperature logger with a SAMD21-board - the important thing is, it's working with 3.3 V. There is a monochrome LCD display and a DS3231-RTC, both connected by I²C. First everything worked fine. Then it freezed after 30 minutes or 2 hours or nearly 3 days. Reset button on µC-board didn't help, I had to remove power supply.
Problems came from display!
Controller can work at 3.6 V maximum, but display board should work with 3.3 - 5.0 V.
There is a LDO to supply controller with 3.3 V, but no level shifter for SDA / SCL. I can't find a schematic, so I tried by my own to check out:
Diodes D1 and D2 have marking "Z14". That is a zener diode BZX84-C3V3, but in a SOT23 package with 3 pins. Diodes on board only have 2 pins. But I guess, developper of that display board wants to clamp voltages on SDA/SCL-lines.
A BZX84-C3V3 (and other small diodes for 3.3 V) have capacity of 450 pF, that's too much for I²C-lines according to I²C-bus specification UM10204. On my board these diodes clamped HIGH-logic level voltage to 2,4 V. From specification it must be more that 2,31 V. Also low-to-high transition is too long with nearly 600 ms.
After removing diodes D1 and D2 my temperature logger is working for now 3 months.
Here is the signal on SCL-line with diodes (cyan) and without (green):
So if you also have problems, that I²C-bus is freezing without a reason (missing pullup resistors, long lines or crazy Dupont-connectors), please check your board, how SCL and SDA lines are connected.
I see, some people have problems with their I²C displays.
I had similar problems 3 month ago. I made a temperature logger with a SAMD21-board - the important thing is, it's working with 3.3 V. There is a monochrome LCD display and a DS3231-RTC, both connected by I²C. First everything worked fine. Then it freezed after 30 minutes or 2 hours or nearly 3 days. Reset button on µC-board didn't help, I had to remove power supply.
Problems came from display!
Controller can work at 3.6 V maximum, but display board should work with 3.3 - 5.0 V.
There is a LDO to supply controller with 3.3 V, but no level shifter for SDA / SCL. I can't find a schematic, so I tried by my own to check out:
Diodes D1 and D2 have marking "Z14". That is a zener diode BZX84-C3V3, but in a SOT23 package with 3 pins. Diodes on board only have 2 pins. But I guess, developper of that display board wants to clamp voltages on SDA/SCL-lines.
A BZX84-C3V3 (and other small diodes for 3.3 V) have capacity of 450 pF, that's too much for I²C-lines according to I²C-bus specification UM10204. On my board these diodes clamped HIGH-logic level voltage to 2,4 V. From specification it must be more that 2,31 V. Also low-to-high transition is too long with nearly 600 ms.
After removing diodes D1 and D2 my temperature logger is working for now 3 months.
Here is the signal on SCL-line with diodes (cyan) and without (green):
So if you also have problems, that I²C-bus is freezing without a reason (missing pullup resistors, long lines or crazy Dupont-connectors), please check your board, how SCL and SDA lines are connected.