1*225f4ba4SMatthias Ringwald /** 2*225f4ba4SMatthias Ringwald ****************************************************************************** 3*225f4ba4SMatthias Ringwald * File Name : I2C.c 4*225f4ba4SMatthias Ringwald * Description : This file provides code for the configuration 5*225f4ba4SMatthias Ringwald * of the I2C instances. 6*225f4ba4SMatthias Ringwald ****************************************************************************** 7*225f4ba4SMatthias Ringwald * @attention 8*225f4ba4SMatthias Ringwald * 9*225f4ba4SMatthias Ringwald * <h2><center>© Copyright (c) 2019 STMicroelectronics. 10*225f4ba4SMatthias Ringwald * All rights reserved.</center></h2> 11*225f4ba4SMatthias Ringwald * 12*225f4ba4SMatthias Ringwald * This software component is licensed by ST under BSD 3-Clause license, 13*225f4ba4SMatthias Ringwald * the "License"; You may not use this file except in compliance with the 14*225f4ba4SMatthias Ringwald * License. You may obtain a copy of the License at: 15*225f4ba4SMatthias Ringwald * opensource.org/licenses/BSD-3-Clause 16*225f4ba4SMatthias Ringwald * 17*225f4ba4SMatthias Ringwald ****************************************************************************** 18*225f4ba4SMatthias Ringwald */ 19*225f4ba4SMatthias Ringwald 20*225f4ba4SMatthias Ringwald /* Includes ------------------------------------------------------------------*/ 21*225f4ba4SMatthias Ringwald #include "i2c.h" 22*225f4ba4SMatthias Ringwald 23*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 0 */ 24*225f4ba4SMatthias Ringwald 25*225f4ba4SMatthias Ringwald /* USER CODE END 0 */ 26*225f4ba4SMatthias Ringwald 27*225f4ba4SMatthias Ringwald I2C_HandleTypeDef hi2c1; 28*225f4ba4SMatthias Ringwald 29*225f4ba4SMatthias Ringwald /* I2C1 init function */ MX_I2C1_Init(void)30*225f4ba4SMatthias Ringwaldvoid MX_I2C1_Init(void) 31*225f4ba4SMatthias Ringwald { 32*225f4ba4SMatthias Ringwald 33*225f4ba4SMatthias Ringwald hi2c1.Instance = I2C1; 34*225f4ba4SMatthias Ringwald hi2c1.Init.ClockSpeed = 100000; 35*225f4ba4SMatthias Ringwald hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; 36*225f4ba4SMatthias Ringwald hi2c1.Init.OwnAddress1 = 0; 37*225f4ba4SMatthias Ringwald hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; 38*225f4ba4SMatthias Ringwald hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; 39*225f4ba4SMatthias Ringwald hi2c1.Init.OwnAddress2 = 0; 40*225f4ba4SMatthias Ringwald hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; 41*225f4ba4SMatthias Ringwald hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; 42*225f4ba4SMatthias Ringwald if (HAL_I2C_Init(&hi2c1) != HAL_OK) 43*225f4ba4SMatthias Ringwald { 44*225f4ba4SMatthias Ringwald Error_Handler(); 45*225f4ba4SMatthias Ringwald } 46*225f4ba4SMatthias Ringwald 47*225f4ba4SMatthias Ringwald } 48*225f4ba4SMatthias Ringwald HAL_I2C_MspInit(I2C_HandleTypeDef * i2cHandle)49*225f4ba4SMatthias Ringwaldvoid HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) 50*225f4ba4SMatthias Ringwald { 51*225f4ba4SMatthias Ringwald 52*225f4ba4SMatthias Ringwald GPIO_InitTypeDef GPIO_InitStruct = {0}; 53*225f4ba4SMatthias Ringwald if(i2cHandle->Instance==I2C1) 54*225f4ba4SMatthias Ringwald { 55*225f4ba4SMatthias Ringwald /* USER CODE BEGIN I2C1_MspInit 0 */ 56*225f4ba4SMatthias Ringwald 57*225f4ba4SMatthias Ringwald /* USER CODE END I2C1_MspInit 0 */ 58*225f4ba4SMatthias Ringwald 59*225f4ba4SMatthias Ringwald __HAL_RCC_GPIOB_CLK_ENABLE(); 60*225f4ba4SMatthias Ringwald /**I2C1 GPIO Configuration 61*225f4ba4SMatthias Ringwald PB6 ------> I2C1_SCL 62*225f4ba4SMatthias Ringwald PB9 ------> I2C1_SDA 63*225f4ba4SMatthias Ringwald */ 64*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = Audio_SCL_Pin|Audio_SDA_Pin; 65*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; 66*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_PULLUP; 67*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 68*225f4ba4SMatthias Ringwald GPIO_InitStruct.Alternate = GPIO_AF4_I2C1; 69*225f4ba4SMatthias Ringwald HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 70*225f4ba4SMatthias Ringwald 71*225f4ba4SMatthias Ringwald /* I2C1 clock enable */ 72*225f4ba4SMatthias Ringwald __HAL_RCC_I2C1_CLK_ENABLE(); 73*225f4ba4SMatthias Ringwald /* USER CODE BEGIN I2C1_MspInit 1 */ 74*225f4ba4SMatthias Ringwald 75*225f4ba4SMatthias Ringwald /* USER CODE END I2C1_MspInit 1 */ 76*225f4ba4SMatthias Ringwald } 77*225f4ba4SMatthias Ringwald } 78*225f4ba4SMatthias Ringwald HAL_I2C_MspDeInit(I2C_HandleTypeDef * i2cHandle)79*225f4ba4SMatthias Ringwaldvoid HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle) 80*225f4ba4SMatthias Ringwald { 81*225f4ba4SMatthias Ringwald 82*225f4ba4SMatthias Ringwald if(i2cHandle->Instance==I2C1) 83*225f4ba4SMatthias Ringwald { 84*225f4ba4SMatthias Ringwald /* USER CODE BEGIN I2C1_MspDeInit 0 */ 85*225f4ba4SMatthias Ringwald 86*225f4ba4SMatthias Ringwald /* USER CODE END I2C1_MspDeInit 0 */ 87*225f4ba4SMatthias Ringwald /* Peripheral clock disable */ 88*225f4ba4SMatthias Ringwald __HAL_RCC_I2C1_CLK_DISABLE(); 89*225f4ba4SMatthias Ringwald 90*225f4ba4SMatthias Ringwald /**I2C1 GPIO Configuration 91*225f4ba4SMatthias Ringwald PB6 ------> I2C1_SCL 92*225f4ba4SMatthias Ringwald PB9 ------> I2C1_SDA 93*225f4ba4SMatthias Ringwald */ 94*225f4ba4SMatthias Ringwald HAL_GPIO_DeInit(GPIOB, Audio_SCL_Pin|Audio_SDA_Pin); 95*225f4ba4SMatthias Ringwald 96*225f4ba4SMatthias Ringwald /* USER CODE BEGIN I2C1_MspDeInit 1 */ 97*225f4ba4SMatthias Ringwald 98*225f4ba4SMatthias Ringwald /* USER CODE END I2C1_MspDeInit 1 */ 99*225f4ba4SMatthias Ringwald } 100*225f4ba4SMatthias Ringwald } 101*225f4ba4SMatthias Ringwald 102*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 1 */ 103*225f4ba4SMatthias Ringwald 104*225f4ba4SMatthias Ringwald /* USER CODE END 1 */ 105*225f4ba4SMatthias Ringwald 106*225f4ba4SMatthias Ringwald /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 107