158 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|   ******************************************************************************
 | |
|   * File Name          : I2C.c
 | |
|   * Description        : This file provides code for the configuration
 | |
|   *                      of the I2C instances.
 | |
|   ******************************************************************************
 | |
|   ** This notice applies to any and all portions of this file
 | |
|   * that are not between comment pairs USER CODE BEGIN and
 | |
|   * USER CODE END. Other portions of this file, whether 
 | |
|   * inserted by the user or by software development tools
 | |
|   * are owned by their respective copyright owners.
 | |
|   *
 | |
|   * COPYRIGHT(c) 2018 STMicroelectronics
 | |
|   *
 | |
|   * Redistribution and use in source and binary forms, with or without modification,
 | |
|   * are permitted provided that the following conditions are met:
 | |
|   *   1. Redistributions of source code must retain the above copyright notice,
 | |
|   *      this list of conditions and the following disclaimer.
 | |
|   *   2. Redistributions in binary form must reproduce the above copyright notice,
 | |
|   *      this list of conditions and the following disclaimer in the documentation
 | |
|   *      and/or other materials provided with the distribution.
 | |
|   *   3. Neither the name of STMicroelectronics nor the names of its contributors
 | |
|   *      may be used to endorse or promote products derived from this software
 | |
|   *      without specific prior written permission.
 | |
|   *
 | |
|   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | |
|   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
|   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | |
|   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 | |
|   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
|   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 | |
|   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | |
|   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 | |
|   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | |
|   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
|   *
 | |
|   ******************************************************************************
 | |
|   */
 | |
| 
 | |
| /* Includes ------------------------------------------------------------------*/
 | |
| #include "i2c.h"
 | |
| 
 | |
| 
 | |
| /* USER CODE BEGIN 0 */
 | |
| 
 | |
| /* USER CODE END 0 */
 | |
| 
 | |
| I2C_HandleTypeDef hi2c3;
 | |
| 
 | |
| /* I2C3 init function */
 | |
| void MX_I2C3_Init(void)
 | |
| {
 | |
| 
 | |
|   hi2c3.Instance = I2C3;
 | |
|   hi2c3.Init.Timing = 0x00501E63;
 | |
|   hi2c3.Init.OwnAddress1 = 0;
 | |
|   hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
 | |
|   hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
 | |
|   hi2c3.Init.OwnAddress2 = 0;
 | |
|   hi2c3.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
 | |
|   hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
 | |
|   hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
 | |
|   if (HAL_I2C_Init(&hi2c3) != HAL_OK)
 | |
|   {
 | |
|    for(;;){}
 | |
|   }
 | |
| 
 | |
|     /**Configure Analogue filter 
 | |
|     */
 | |
|   if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_DISABLE) != HAL_OK)
 | |
|   {
 | |
|    for(;;){}
 | |
|   }
 | |
| 
 | |
|     /**Configure Digital filter 
 | |
|     */
 | |
|   if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK)
 | |
|   {
 | |
|    for(;;){}
 | |
|   }
 | |
| 
 | |
| }
 | |
| 
 | |
| void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
 | |
| {
 | |
| 
 | |
|   GPIO_InitTypeDef GPIO_InitStruct;
 | |
|   if(i2cHandle->Instance==I2C3)
 | |
|   {
 | |
|   /* USER CODE BEGIN I2C3_MspInit 0 */
 | |
| 
 | |
|   /* USER CODE END I2C3_MspInit 0 */
 | |
|   
 | |
|     /**I2C3 GPIO Configuration    
 | |
|     PC9     ------> I2C3_SDA
 | |
|     PA8     ------> I2C3_SCL 
 | |
|     */
 | |
|     GPIO_InitStruct.Pin = GPIO_PIN_9;
 | |
|     GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
 | |
|     GPIO_InitStruct.Pull = GPIO_PULLUP;
 | |
|     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
 | |
|     GPIO_InitStruct.Alternate = GPIO_AF4_I2C3;
 | |
|     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 | |
| 
 | |
|     GPIO_InitStruct.Pin = GPIO_PIN_8;
 | |
|     GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
 | |
|     GPIO_InitStruct.Pull = GPIO_PULLUP;
 | |
|     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
 | |
|     GPIO_InitStruct.Alternate = GPIO_AF4_I2C3;
 | |
|     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 | |
| 
 | |
|     /* I2C3 clock enable */
 | |
|     __HAL_RCC_I2C3_CLK_ENABLE();
 | |
|   /* USER CODE BEGIN I2C3_MspInit 1 */
 | |
| 
 | |
|   /* USER CODE END I2C3_MspInit 1 */
 | |
|   }
 | |
| }
 | |
| 
 | |
| void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
 | |
| {
 | |
| 
 | |
|   if(i2cHandle->Instance==I2C3)
 | |
|   {
 | |
|   /* USER CODE BEGIN I2C3_MspDeInit 0 */
 | |
| 
 | |
|   /* USER CODE END I2C3_MspDeInit 0 */
 | |
|     /* Peripheral clock disable */
 | |
|     __HAL_RCC_I2C3_CLK_DISABLE();
 | |
|   
 | |
|     /**I2C3 GPIO Configuration    
 | |
|     PC9     ------> I2C3_SDA
 | |
|     PA8     ------> I2C3_SCL 
 | |
|     */
 | |
|     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_9);
 | |
| 
 | |
|     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_8);
 | |
| 
 | |
|   /* USER CODE BEGIN I2C3_MspDeInit 1 */
 | |
| 
 | |
|   /* USER CODE END I2C3_MspDeInit 1 */
 | |
|   }
 | |
| } 
 | |
| 
 | |
| /* USER CODE BEGIN 1 */
 | |
| 
 | |
| /* USER CODE END 1 */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 |