Skip to content

Commit 53fa4e5

Browse files
committed
MCUXpresso: Enable I2C SDA & SCL pins internal pullup resistors
Signed-off-by: Mahesh Mahadevan <[email protected]>
1 parent d29c12d commit 53fa4e5

File tree

1 file changed

+7
-3
lines changed
  • targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/api

1 file changed

+7
-3
lines changed

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/api/i2c_api.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ void i2c_init(i2c_t *obj, PinName sda, PinName scl)
3636
{
3737
uint32_t i2c_sda = pinmap_peripheral(sda, PinMap_I2C_SDA);
3838
uint32_t i2c_scl = pinmap_peripheral(scl, PinMap_I2C_SCL);
39+
PORT_Type *port_addrs[] = PORT_BASE_PTRS;
40+
PORT_Type *base = port_addrs[sda >> GPIO_PORT_SHIFT];
41+
3942
obj->instance = pinmap_merge(i2c_sda, i2c_scl);
4043
obj->next_repeated_start = 0;
4144
MBED_ASSERT((int)obj->instance != NC);
@@ -49,10 +52,11 @@ void i2c_init(i2c_t *obj, PinName sda, PinName scl)
4952
pinmap_pinout(sda, PinMap_I2C_SDA);
5053
pinmap_pinout(scl, PinMap_I2C_SCL);
5154

52-
#if defined(FSL_FEATURE_PORT_HAS_OPEN_DRAIN) && FSL_FEATURE_PORT_HAS_OPEN_DRAIN
53-
PORT_Type *port_addrs[] = PORT_BASE_PTRS;
54-
PORT_Type *base = port_addrs[sda >> GPIO_PORT_SHIFT];
55+
/* Enable internal pullup resistor */
56+
base->PCR[sda & 0xFF] |= (PORT_PCR_PE_MASK | PORT_PCR_PS_MASK);
57+
base->PCR[scl & 0xFF] |= (PORT_PCR_PE_MASK | PORT_PCR_PS_MASK);
5558

59+
#if defined(FSL_FEATURE_PORT_HAS_OPEN_DRAIN) && FSL_FEATURE_PORT_HAS_OPEN_DRAIN
5660
base->PCR[sda & 0xFF] |= PORT_PCR_ODE_MASK;
5761
base->PCR[scl & 0xFF] |= PORT_PCR_ODE_MASK;
5862
#endif

0 commit comments

Comments
 (0)