/** * @brief Configure the IO pins used by the I2C device. * @param Device : I2C Device instance. * @retval None. */ void CPAL_I2C_HAL_GPIOInit(CPAL_DevTypeDef Device) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable I2Cx SCL and SDA Pin Clock */ __I2C_GPIO_CLK_CMD((CPAL_I2C_SCL_GPIO_CLK[Device] | CPAL_I2C_SDA_GPIO_CLK[Device]), ENABLE); /* Connect PXx to I2C_SCL */ GPIO_PinAFConfig((GPIO_TypeDef*)CPAL_I2C_SCL_GPIO_PORT[Device],CPAL_I2C_SCL_GPIO_PINSOURCE[Device],CPAL_I2C_AF[Device]); /* Connect PXx to I2C_SDA */ GPIO_PinAFConfig((GPIO_TypeDef*)CPAL_I2C_SDA_GPIO_PORT[Device],CPAL_I2C_SDA_GPIO_PINSOURCE[Device],CPAL_I2C_AF[Device]); /* Set GPIO frequency to 50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* Select Alternate function mode */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; /* Select output Open Drain type */ GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; /* Disable internal Pull-up */ GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; /* Initialize I2Cx SCL Pin */ GPIO_InitStructure.GPIO_Pin = CPAL_I2C_SCL_GPIO_PIN[Device]; GPIO_Init((GPIO_TypeDef*)CPAL_I2C_SCL_GPIO_PORT[Device], &GPIO_InitStructure); /* Initialize I2Cx SDA Pin */ GPIO_InitStructure.GPIO_Pin = CPAL_I2C_SDA_GPIO_PIN[Device]; GPIO_Init((GPIO_TypeDef*)CPAL_I2C_SDA_GPIO_PORT[Device], &GPIO_InitStructure); }
/** * @brief Configure the IO pins used by the I2C device. * @param Device : I2C Device instance. * @retval None. */ void CPAL_I2C_HAL_GPIOInit(CPAL_DevTypeDef Device) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable I2Cx SCL and SDA Pin Clock */ __I2C_GPIO_CLK_CMD((CPAL_I2C_SCL_GPIO_CLK[Device] | CPAL_I2C_SDA_GPIO_CLK[Device]), ENABLE); /* Enable Pin Remap if PB8 (SCL) and PB9 (SDA) is used for I2C1 */ if ((Device == CPAL_I2C1) && (CPAL_I2C1_SCL_GPIO_PIN == GPIO_Pin_8) && (CPAL_I2C1_SDA_GPIO_PIN == GPIO_Pin_9)) { /* Enable GPIO Alternative Functions */ __AFIO_CLK_CMD(ENABLE); /* Enable I2C1 pin Remap */ GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE); } /* Set GPIO frequency to 50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* Select Output open-drain mode */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; /* Initialize I2Cx SCL Pin */ GPIO_InitStructure.GPIO_Pin = CPAL_I2C_SCL_GPIO_PIN[Device]; GPIO_Init((GPIO_TypeDef*)CPAL_I2C_SCL_GPIO_PORT[Device], &GPIO_InitStructure); /* Initialize I2Cx SDA Pin */ GPIO_InitStructure.GPIO_Pin = CPAL_I2C_SDA_GPIO_PIN[Device]; GPIO_Init((GPIO_TypeDef*)CPAL_I2C_SDA_GPIO_PORT[Device], &GPIO_InitStructure); }