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