2x NHD-0420D3Z I2C Problem
I've used these displays in the past with success, and now I'm using two of them in parallel on the I2C bus and I can't figure out what's wrong. Each of the two displays has been assigned its own I2C address and they both work great if they are individually plugged in. However, when I plug them both in neither screen accepts any command and nothing is displayed. I've checked the waveforms on my scope and they are identical to the waveforms of the individual LCD operations. Therefore, I must conclude that neither slave device is holding any of the lines low. I've tried reducing my clock speeds down to well below 100kHz with no effect... I am completely at a loss as to how to debug this or where the problem even lies. Has anyone experienced this problem before or have any insight?
How are the displays powered?
Is there a separate 5V input for the VDD on either display. Also are you using any pull up resistors?0
Both displays are powered by a single 5V rail. My control board has 3.3v outputs connected to a bi-directional level shifter with 10kOhm pullups0
Are there any other devices on the I2C bus?
Last time I heard an issue like this occur; another device on the bus was keeping the logic voltage from reaching a valid logic High for the display.0
No, these are the only two devices on the bus.
The bus waveforms for the case of a single display is almost identical to the case with two displays. I did, however, notice a small difference today. For the latter case, the SDA line only gets pulled down to about 900mV for the ACKs whereas the SDA line gets pulled down to about 400mV when only one display is plugged in. The datasheet says that the the voltage must be below 0.6v to register as a low input. Could it be that the other display (the one not being addressed) is trying interpreting an ACK as a release of the bus?
I tried removing the pullup from one of the displays since I thought that perhaps the parallel combination of the two pullups (5KOhm) could be fudging the voltage levels. However, this changed nothing.0
Can you also try this without the pull up resistors?0
Yes, I've done so and there is again no change in the waveforms. I guess this means that the internal pull-ups on the display's pic16f690 are enabled. I've tried lower termination resistances as well (2Kohm) with no changes. I checked the series resistance on the i2c bus (the resistance of my wiring) and it was about 30 ohms. This seems a little high since the wire (22AWG) should only provide 52 ohms/km and there's only about 1foot of wire.
Could it be that the weak internal pullups are too low value and are dragging the pullup resistance way down?0
Hi...i am a new user here. I want to know how are the displays powered?Is there a separate 5V input for the VDD on either display. Also are you using any pull up resistors? Are there any other devices on the I2C bus?Last time I heard an issue like this occur; another device on the bus was keeping the logic voltage from reaching a valid logic High for the display.0
You could power it through a 5V so long as the supply can provide enough current to run the backlight as well. Most MPUs would allow for this.
The display does have internal pull up resistors, so you will not need to worry about providing those externally.0
Please sign in to leave a comment.