/** * @brief DeInitializes peripherals used by the I2C EEPROM driver. * @param None * @retval None */ void sEE_LowLevel_DeInit(new_twi* TwiStruct) { GPIO_InitTypeDef GPIO_InitStructure; /* sEE_I2C Peripheral Disable */ //I2C_Cmd(sEE_I2C[TwiStruct->TwiNr], DISABLE); /* sEE_I2C DeInit */ //I2C_DeInit(sEE_I2C[TwiStruct->TwiNr]); /*!< sEE_I2C Periph clock disable */ //RCC_APB1PeriphClockCmd(I2C_CLK[TwiStruct->TwiNr], DISABLE); switch(TwiStruct->TwiNr) { #ifdef __HAL_RCC_I2C1_CLK_DISABLE case 0: __HAL_RCC_I2C1_CLK_DISABLE(); break; #endif #ifdef __HAL_RCC_I2C2_CLK_DISABLE case 1: __HAL_RCC_I2C2_CLK_DISABLE(); break; #endif #ifdef __HAL_RCC_I2C3_CLK_DISABLE case 2: __HAL_RCC_I2C3_CLK_DISABLE(); break; #endif #ifdef __HAL_RCC_I2C4_CLK_DISABLE case 3: __HAL_RCC_I2C4_CLK_DISABLE(); break; #endif #ifdef __HAL_RCC_I2C5_CLK_DISABLE case 4: __HAL_RCC_I2C5_CLK_DISABLE(); break; #endif #ifdef __HAL_RCC_I2C6_CLK_DISABLE case 5: __HAL_RCC_I2C6_CLK_DISABLE(); break; #endif } /*!< GPIO configuration */ /*!< Configure sEE_I2C pins: SCL */ GPIO_InitStructure.Pin = 1 << TwiStruct->SclPin; GPIO_InitStructure.Alternate = GPIO_AF4_I2C1; GPIO_InitStructure.Mode = GPIO_MODE_AF_OD; GPIO_InitStructure.Pull = GPIO_PULLUP; GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GET_GPIO_PORT_ADDR[TwiStruct->SclPort], &GPIO_InitStructure); /*!< Configure sEE_I2C pins: SDA */ GPIO_InitStructure.Pin = 1 << TwiStruct->SdaPin; HAL_GPIO_Init(GET_GPIO_PORT_ADDR[TwiStruct->SdaPort], &GPIO_InitStructure); }
void i2c_deinit(I2C_HandleTypeDef *i2c) { HAL_I2C_DeInit(i2c); if (0) { #if defined(MICROPY_HW_I2C1_SCL) } else if (i2c->Instance == I2C1) { __I2C1_FORCE_RESET(); __I2C1_RELEASE_RESET(); __I2C1_CLK_DISABLE(); HAL_NVIC_DisableIRQ(I2C1_EV_IRQn); HAL_NVIC_DisableIRQ(I2C1_ER_IRQn); #endif #if defined(MICROPY_HW_I2C2_SCL) } else if (i2c->Instance == I2C2) { __I2C2_FORCE_RESET(); __I2C2_RELEASE_RESET(); __I2C2_CLK_DISABLE(); HAL_NVIC_DisableIRQ(I2C2_EV_IRQn); HAL_NVIC_DisableIRQ(I2C2_ER_IRQn); #endif #if defined(MICROPY_HW_I2C3_SCL) } else if (i2c->Instance == I2C3) { __I2C3_FORCE_RESET(); __I2C3_RELEASE_RESET(); __I2C3_CLK_DISABLE(); HAL_NVIC_DisableIRQ(I2C3_EV_IRQn); HAL_NVIC_DisableIRQ(I2C3_ER_IRQn); #endif #if defined(MICROPY_HW_I2C4_SCL) } else if (i2c->Instance == I2C4) { __HAL_RCC_I2C4_FORCE_RESET(); __HAL_RCC_I2C4_RELEASE_RESET(); __HAL_RCC_I2C4_CLK_DISABLE(); HAL_NVIC_DisableIRQ(I2C4_EV_IRQn); HAL_NVIC_DisableIRQ(I2C4_ER_IRQn); #endif } }