Short term display fade
Two different displays are misbehaving in the same way: they work for a few minutes, then the characters fade out, and randomly fade in and out over the next several minutes.
I first used a NHD-C0216CiZ-FSW-FBW-3V3. After observing the failure I tried a NHD-C0220BiZ-FSW-FBW-3V3M which worked fine in a breadboard test with a different microcontroller, but behaves as described in the assembly.
I am controlling the displays with a RP2040, programmed in C. The display is connected in accordance with the datasheets, except that reset is permanently connected to V+ through a 10K pullup. There is also an IO expander on the I2C bus. Upon initial assembly I observed that the bus would frequently hang, with either SDA or SCL held low, for no obvious reason. I tried data rates between 50KHz and 400KHz, with no observable difference in behavior. Then, I discovered that the display had not been acknowledging all the data sent to it. After a few hours of fiddling I added a 47pF capacitor to each SDA and SCL, and the hanging stopped. The display now acknowledges all data sent to it and shows text, but the characters still fade as described.
I2C is currently running at 200KHz, with 2.2K pullups.
Is it likely that these displays are damaged, and how can I avoid that in the future?
Initialization sequence:
uint8_t da = 0x3c;
//start display
uint8_t startup1[] = {0x00, 0x38, 0x00, 0x39};
uint8_t startup2[] = {0x00, 0x14, 0x00, 0x78, 0x00, 0x5E, 0x00, 0x6D, 0x00, 0x0C, 0x00, 0x01, 0x00, 0x06};
success = i2c_write_timeout_us(i2c_default, da, startup1, 4, false, 2000);
sleep_ms(30);
success = i2c_write_timeout_us(i2c_default, da, startup2, 14, false, 4000);
sleep_ms(300);
uint8_t clearDisplay[] = {0x00, 0x01};
uint8_t splash[] = {"@STARTING"};
success = i2c_write_timeout_us(i2c_default, da, clearDisplay, 2, false, 2000);
sleep_ms(300);
success = i2c_write_timeout_us(i2c_default, da, splash, 9, false, 2000);
-
Hi Timothy,
Thank you for your questions and the details you provided.
First I would like to verify the functionality of your display units. It would be helpful if you could verify that the displays can still function normally using your other setup which you had mentioned worked previously. In addition, can you confirm how you are wiring the display?
That said, my suspicion is that your issue is related to your connection on the I2C bus. If you had not already can you try directly connecting the display to the I2C line of the controller without the IO- expander? Additionally, it would be helpful to see if the I2C lines are writing data after the display fade.
One additional thing to note is that the last image does not stay present on your display, but fades out. This indicates that the supply voltage is not present for the display's controller. Can you also confirm that the display still has access to consistent power at the time of the error?
0
Please sign in to leave a comment.
Comments
1 comment