SparkFun 20x4 SerLCD LCD-16398 fw v1.4 - Display Randomly locks up via i2c

I have successfully interfaced via the Qwiic link on the SerLCD in the 100KHz clock mode.

I am updating the display’s 20x4 field at 1Hz, by sending a cursor position command for each line and then writing a string of 20 characters to the target line, resulting in 8 command sequences per second.

The display also randomly locks up roughly every 15 minutes of operation and can only be recovered by power cycling the display. This is a work stoppage that has to be resolved otherwise this display/interface is unusable.

Diagnositcs:

  • I’ve verified that the voltage is 3.26V with backlight on and 3.28V with backlight off with power supplied via the Qwiic connector/cable.

  • I’ve verified that the signal level and timing are all within spec.

If the problem is that the SerLCD display can’t handle the 8Hz workload, what can be changed in the SerLCD to make it work reliably with I2C. I am not using any other of the interfaces.

How long is the cable you’re using? You might need to use shorter qwiic cables or disable the pull ups (reversible)

Disable i2c pull-up resistors from sensors on the bus (one set per bus should be active; disable others…see each device/sensor’s hookup guide for locating these…on most boards it is simply a trace to cut between the “i2c” pads on the front/back on the device/sensor) - reverse if needed by placing a solder blob reconnecting the 2 pads

Thanks for reminding me to check my “assumptions” which was that the SerLCD had no i2c termination since I found no mention of it in the hookup guide. I removed my extra pullups and qwiic cable so now I am directly hooked up to the controller with a 6 inch qwiic cable and it works with less display corruption.

However I am still detecting random NAK responses occurring on average every 8 seconds. Is this “normal” for this device?

Further testing will tell me if removing the extra pull-ups and cable fixes the lockup issue.