Hello everyone,
I'm migrating my project to ARM, LPC1343 and I'm having difficulties with I2C, I did the initialization but when it gets to the line LPC_I2C->CONSET = (1 << 5); // STA the MCU stops, I put a serial debug to check as follows
sprintf(string, "CONSET STA INIT - VALUE: %04X\r\nSTAT REG: %04X\r\n", LPC_I2C->CONSET, LPC_I2C->STAT);
uart_enviar(string);
LPC_I2C->CONSET = (1 << 5); // STA
sprintf(string, "CONSET STA OK - VALUE: %04X\r\nSTAT REG: %04X\r\n", LPC_I2C->CONSET, LPC_I2C->STAT);
uart_send(string);
the second uart is not executed
see the monitor
CONSET 0040
STAT 00F8
I2C START
CONSET STA INIT - VALUE: 0040
STAT REG: 00F8
should appear next CONSET STA OK
this is the I2C initialization
uint32_t I2CInit( uint32_t I2cMode ) {
test(16);
LPC_SYSCON->PRESETCTRL |= (0x1<<1);
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<5);
LPC_IOCON->PIO0_4 &= ~0x3F; /* I2C I/O config */
LPC_IOCON->PIO0_4 |= 0x01; /* I2C SCL */
LPC_IOCON->PIO0_5 &= ~0x3F;
LPC_IOCON->PIO0_5 |= 0x01; /* I2C SDA */
/*--- Clear flags ---*/
test(17);
LPC_I2C->CONCLR = I2CONCLR_AAC | I2CONCLR_SIC | I2CONCLR_STAC | I2CONCLR_I2ENC;
/*--- Reset registers ---*/
test(18);
#if FAST_MODE_PLUS
test(19);
LPC_IOCON->PIO0_4 |= (0x2<<8);
LPC_IOCON->PIO0_5 |= (0x2<<8);
LPC_I2C->SCLL = I2SCLL_HS_SCLL;
LPC_I2C->SCLH = I2SCLH_HS_SCLH;
test(20);
#else
test(21);
LPC_I2C->SCLL = I2SCLL_SCLL;
LPC_I2C->SCLH = I2SCLH_SCLH;
test(22);
#endif
The clock is at 72Mhz
What is missing?