diff --git a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/i2c_api.c b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/i2c_api.c index ea69893..394a414 100644 --- a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/i2c_api.c +++ b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/i2c_api.c @@ -138,8 +138,10 @@ /* Send the STOP signal */ base->MTDR = LPI2C_MTDR_CMD(0x2U); - /* Wait till STOP has been sent successfully */ - while (!(base->MSR & kLPI2C_MasterStopDetectFlag)) { + // Wait until: + // - Stop has been generated + // - Bus ready to transmit data again + while(!(base->MSR & kLPI2C_MasterStopDetectFlag) || !(base->MSR & kLPI2C_MasterTxReadyFlag)) { } if (base->MSR & kLPI2C_MasterNackDetectFlag) { diff --git a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_MIMXRT1050/PeripheralPins.c b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_MIMXRT1050/PeripheralPins.c index 0712820..20c4076 100644 --- a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_MIMXRT1050/PeripheralPins.c +++ b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_MIMXRT1050/PeripheralPins.c @@ -73,21 +73,35 @@ /************I2C***************/ const PinMap PinMap_I2C_SDA[] = { + {GPIO_SD_B1_05, I2C_1, ((0U << DAISY_REG_VALUE_SHIFT) | (0x4D0 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, {GPIO_AD_B1_01, I2C_1, ((1U << DAISY_REG_VALUE_SHIFT) | (0x4D0 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 3)}, - // I2C3 is ALT1 of GPIO_AD_B1_06 - // GPIO_AD_B1_06 is daisy chain input 3 of I2C3 per the IOMUXC_LPI2C3_SDA_SELECT_INPUT register description - {GPIO_AD_B1_06, I2C_3, ((3U << DAISY_REG_VALUE_SHIFT) | (0x4E0 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 1)}, + {GPIO_B0_05, I2C_2, ((1U << DAISY_REG_VALUE_SHIFT) | (0x4D8 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, + {GPIO_SD_B1_10, I2C_2, ((0U << DAISY_REG_VALUE_SHIFT) | (0x4D8 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 3)}, + + {GPIO_AD_B1_06, I2C_3, ((2U << DAISY_REG_VALUE_SHIFT) | (0x4E0 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 1)}, + {GPIO_EMC_21, I2C_3, ((0U << DAISY_REG_VALUE_SHIFT) | (0x4E0 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, + {GPIO_SD_B0_01, I2C_3, ((1U << DAISY_REG_VALUE_SHIFT) | (0x4E0 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, + + {GPIO_EMC_11, I2C_4, ((0U << DAISY_REG_VALUE_SHIFT) | (0x4E8 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, + {GPIO_AD_B0_13, I2C_4, ((1U << DAISY_REG_VALUE_SHIFT) | (0x4E8 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 0)}, {NC , NC , 0} }; const PinMap PinMap_I2C_SCL[] = { + {GPIO_SD_B1_04, I2C_1, ((0U << DAISY_REG_VALUE_SHIFT) | (0x4CC << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, {GPIO_AD_B1_00, I2C_1, ((1U << DAISY_REG_VALUE_SHIFT) | (0x4CC << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 3)}, - // I2C3 is ALT1 of GPIO_AD_B1_07 - // GPIO_AD_B1_07 is daisy chain input 3 of I2C3 per the IOMUXC_LPI2C3_SCL_SELECT_INPUT register description - {GPIO_AD_B1_07, I2C_3, ((3U << DAISY_REG_VALUE_SHIFT) | (0x4DC << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 1)}, + {GPIO_SD_B1_11, I2C_2, ((0U << DAISY_REG_VALUE_SHIFT) | (0x4D4 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 3)}, + {GPIO_B0_04, I2C_2, ((1U << DAISY_REG_VALUE_SHIFT) | (0x4D4 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, + + {GPIO_EMC_22, I2C_3, ((0U << DAISY_REG_VALUE_SHIFT) | (0x4DC << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, + {GPIO_SD_B0_00, I2C_3, ((1U << DAISY_REG_VALUE_SHIFT) | (0x4DC << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, + {GPIO_AD_B1_07, I2C_3, ((2U << DAISY_REG_VALUE_SHIFT) | (0x4DC << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 1)}, + + {GPIO_EMC_12, I2C_4, ((0U << DAISY_REG_VALUE_SHIFT) | (0x4E4 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 2)}, + {GPIO_AD_B0_12, I2C_4, ((1U << DAISY_REG_VALUE_SHIFT) | (0x4E4 << DAISY_REG_SHIFT) | (1U << SION_BIT_SHIFT) | 0)}, {NC , NC , 0} };