I have a 1602A V2.0 LCD display (16 chars x 2 lines) that I intend to connect to my MK26 ARM M4 MCU via a LCM 1602 I2C extender (which has a Philips PCF8574AT on it).
I'm trying to get it to work since this morning, but apparently, the address I calculated for the I2C extender (0x3F according to this datasheet, A0, A1, A2 are non-jumpered) is not OK, so I tried to scan for a valid address where the I2C extender would ACK me back, but I cannot find any.
I connected just the PCF8574AT to my board, the LCD is not connected and it still doesn't work.
I have the following piece of code (KSDK 2.0):
/* Get default configuration for master. */
printf("Got def. config\r\n");
/* Init I2C master. */
I2C_MasterInit(I2C0, &masterConfig, CLOCK_GetFreq(I2C0_CLK_SRC));
/* Send start and slave address. */
// 0x70, 0x27, 0x38, 0x20, 0x3F
uint8_t u8Addr = 0x3F;
for(u8Addr=0; u8Addr<128; u8Addr++)
status = I2C_MasterStart(I2C0, u8Addr, kI2C_Write);
LOG("sent address 0x%x", u8Addr);
/* Wait address sent out. */
uint16_t timeout = UINT16_MAX;
while(!((u32Flags = I2C_MasterGetStatusFlags(I2C0)) & kI2C_IntPendingFlag) && (--timeout))
if((u32Flags = I2C_MasterGetStatusFlags(I2C0)) & kI2C_IntPendingFlag)
LOG("ADDRESSS 0x%x IS OK", u8Addr);
LOG("timeout is %d", timeout);
status = I2C_MasterStop(I2C0);
LOG("Stopped with status=%d", status);
Could you please point out what I'm doing wrong, why my scan doesn't yield any results?
Or is there a problem with my I2C extender, phisycally?
I'd expect the output of the above code to contain a single "ADDRESSS 0x... IS OK" line with a timeout different than 0, but that's not the case.