Because of the Thanksgiving holiday in the U.S., TI E2E™ design support forum responses may be delayed from November 25 through December 2. Thank you for your patience.

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

No I2C Acknowledge from LCD Screen Slave Device

Other Parts Discussed in Thread: MSP430F2012, PCA9306

Hi all,

I am currently trying to get my master MSP430 to communicate with yet another slave device, this time an LCD screen. However, once again I am having trouble getting the slave to acknowledge. According to the datasheet, the address for the LCD screen is 80 (0x50): In the following waveform, I am attempting to write to the slave device, however, it doesn't get past the first byte ((0x50 << 1) | 0) because the slave does not provide the proper ACK:

I am certain that the timing/overall appearance of the waveform is correct, as I have used this I2C code for two other slave devices, which both work. The slave device is powered by 5V, as opposed to the MSP430F2012 which is powered by 3.3V, and the voltage levels defined for high and low as seen in the data sheet are 0.8*Vdd (4V in this case) for the minimum "high" logic level, and 0.2*Vdd (1V in this case) for the maximum "low" logic level.

My code is on the verge of not meeting these voltage level requirements, but overall it looks like they do pass the voltage levels. If this is not the case however, could someone tell me how to fix these levels in hardware, just to see if that will fix my ACK problem? It is important to note that I had this problem previously with my I2C voltage logic levels for my first device, where the resistance on the MSP430 was very high, so I had to add another resistor to decrease the resistance to get the desired voltage levels to get my first slave device to acknowledge. Other than that, are there any other possibilities that anyone sees as to why I am not getting an ACK from my slave device?

Here is the datasheet for the LCD screen slave device: http://www.mouser.com/ds/2/291/NHD-0216K3Z-NSW-BBW-V3-39871.pdf

Any help would be greatly appreciated!

Thanks,

Matt 

  • It is indeed possible that the 3.3V from the MSP aren't enough. The 4V limit is the worst case. Usually, 3.3V are okay, but not guaranteed to work.

    What you can try: put a series resistor of 1k between teh two on both signal lines. and connect the pullup on the slave side to 5V. THis is a dirty hack, but when the pullup tries to pull theline up to 5V, the MSPs clamp diodes will pull it down to 3.3V. Now a current will flow (well, that's not low power) whcih causes a voltage drop on teh pullup and on the series resistor, effectively leaving the slave side on ~4V while the MSP side will fall down to 3.3V. On the othe rside, when the MSP is pulling the line low, there will be a voltage drop on the series resistor too, preventing the MSP to pull the line down to 0V, but 1V will be sufficient anyway.

    A cleaner solution is to use a level translator like the PCA9306.

**Attention** This is a public forum