source: trunk/fw_g473rct/Core/Src/i2c.c

Last change on this file was 20, checked in by f.jahn, 5 days ago

adc dma funktioniert und modbus funktioniert

File size: 6.1 KB
Line 
1/* USER CODE BEGIN Header */
2/**
3  ******************************************************************************
4  * @file    i2c.c
5  * @brief   This file provides code for the configuration
6  *          of the I2C instances.
7  ******************************************************************************
8  * @attention
9  *
10  * Copyright (c) 2025 STMicroelectronics.
11  * All rights reserved.
12  *
13  * This software is licensed under terms that can be found in the LICENSE file
14  * in the root directory of this software component.
15  * If no LICENSE file comes with this software, it is provided AS-IS.
16  *
17  ******************************************************************************
18  */
19/* USER CODE END Header */
20/* Includes ------------------------------------------------------------------*/
21#include "i2c.h"
22
23/* USER CODE BEGIN 0 */
24
25/* USER CODE END 0 */
26
27I2C_HandleTypeDef hi2c3;
28I2C_HandleTypeDef hi2c4;
29
30/* I2C3 init function */
31void MX_I2C3_Init(void)
32{
33
34  /* USER CODE BEGIN I2C3_Init 0 */
35
36  /* USER CODE END I2C3_Init 0 */
37
38  /* USER CODE BEGIN I2C3_Init 1 */
39
40  /* USER CODE END I2C3_Init 1 */
41  hi2c3.Instance = I2C3;
42  hi2c3.Init.Timing = 0x00E2122E;
43  hi2c3.Init.OwnAddress1 = 0;
44  hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
45  hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
46  hi2c3.Init.OwnAddress2 = 0;
47  hi2c3.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
48  hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
49  hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
50  if (HAL_I2C_Init(&hi2c3) != HAL_OK)
51  {
52    Error_Handler();
53  }
54
55  /** Configure Analogue filter
56  */
57  if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
58  {
59    Error_Handler();
60  }
61
62  /** Configure Digital filter
63  */
64  if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK)
65  {
66    Error_Handler();
67  }
68
69  /** I2C Fast mode Plus enable
70  */
71  HAL_I2CEx_EnableFastModePlus(I2C_FASTMODEPLUS_I2C3);
72  /* USER CODE BEGIN I2C3_Init 2 */
73
74  /* USER CODE END I2C3_Init 2 */
75
76}
77/* I2C4 init function */
78void MX_I2C4_Init(void)
79{
80
81  /* USER CODE BEGIN I2C4_Init 0 */
82
83  /* USER CODE END I2C4_Init 0 */
84
85  /* USER CODE BEGIN I2C4_Init 1 */
86
87  /* USER CODE END I2C4_Init 1 */
88  hi2c4.Instance = I2C4;
89  hi2c4.Init.Timing = 0x20B182BE;
90  hi2c4.Init.OwnAddress1 = 0;
91  hi2c4.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
92  hi2c4.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
93  hi2c4.Init.OwnAddress2 = 0;
94  hi2c4.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
95  hi2c4.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
96  hi2c4.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
97  if (HAL_I2C_Init(&hi2c4) != HAL_OK)
98  {
99    Error_Handler();
100  }
101
102  /** Configure Analogue filter
103  */
104  if (HAL_I2CEx_ConfigAnalogFilter(&hi2c4, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
105  {
106    Error_Handler();
107  }
108
109  /** Configure Digital filter
110  */
111  if (HAL_I2CEx_ConfigDigitalFilter(&hi2c4, 0) != HAL_OK)
112  {
113    Error_Handler();
114  }
115  /* USER CODE BEGIN I2C4_Init 2 */
116
117  /* USER CODE END I2C4_Init 2 */
118
119}
120
121void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
122{
123
124  GPIO_InitTypeDef GPIO_InitStruct = {0};
125  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
126  if(i2cHandle->Instance==I2C3)
127  {
128  /* USER CODE BEGIN I2C3_MspInit 0 */
129
130  /* USER CODE END I2C3_MspInit 0 */
131
132  /** Initializes the peripherals clocks
133  */
134    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C3;
135    PeriphClkInit.I2c3ClockSelection = RCC_I2C3CLKSOURCE_PCLK1;
136    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
137    {
138      Error_Handler();
139    }
140
141    __HAL_RCC_GPIOC_CLK_ENABLE();
142    /**I2C3 GPIO Configuration
143    PC8     ------> I2C3_SCL
144    PC9     ------> I2C3_SDA
145    */
146    GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
147    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
148    GPIO_InitStruct.Pull = GPIO_NOPULL;
149    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
150    GPIO_InitStruct.Alternate = GPIO_AF8_I2C3;
151    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
152
153    /* I2C3 clock enable */
154    __HAL_RCC_I2C3_CLK_ENABLE();
155  /* USER CODE BEGIN I2C3_MspInit 1 */
156
157  /* USER CODE END I2C3_MspInit 1 */
158  }
159  else if(i2cHandle->Instance==I2C4)
160  {
161  /* USER CODE BEGIN I2C4_MspInit 0 */
162
163  /* USER CODE END I2C4_MspInit 0 */
164
165  /** Initializes the peripherals clocks
166  */
167    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C4;
168    PeriphClkInit.I2c4ClockSelection = RCC_I2C4CLKSOURCE_PCLK1;
169    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
170    {
171      Error_Handler();
172    }
173
174    __HAL_RCC_GPIOC_CLK_ENABLE();
175    /**I2C4 GPIO Configuration
176    PC6     ------> I2C4_SCL
177    PC7     ------> I2C4_SDA
178    */
179    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
180    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
181    GPIO_InitStruct.Pull = GPIO_NOPULL;
182    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
183    GPIO_InitStruct.Alternate = GPIO_AF8_I2C4;
184    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
185
186    /* I2C4 clock enable */
187    __HAL_RCC_I2C4_CLK_ENABLE();
188  /* USER CODE BEGIN I2C4_MspInit 1 */
189
190  /* USER CODE END I2C4_MspInit 1 */
191  }
192}
193
194void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
195{
196
197  if(i2cHandle->Instance==I2C3)
198  {
199  /* USER CODE BEGIN I2C3_MspDeInit 0 */
200
201  /* USER CODE END I2C3_MspDeInit 0 */
202    /* Peripheral clock disable */
203    __HAL_RCC_I2C3_CLK_DISABLE();
204
205    /**I2C3 GPIO Configuration
206    PC8     ------> I2C3_SCL
207    PC9     ------> I2C3_SDA
208    */
209    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8);
210
211    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_9);
212
213  /* USER CODE BEGIN I2C3_MspDeInit 1 */
214
215  /* USER CODE END I2C3_MspDeInit 1 */
216  }
217  else if(i2cHandle->Instance==I2C4)
218  {
219  /* USER CODE BEGIN I2C4_MspDeInit 0 */
220
221  /* USER CODE END I2C4_MspDeInit 0 */
222    /* Peripheral clock disable */
223    __HAL_RCC_I2C4_CLK_DISABLE();
224
225    /**I2C4 GPIO Configuration
226    PC6     ------> I2C4_SCL
227    PC7     ------> I2C4_SDA
228    */
229    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6);
230
231    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_7);
232
233  /* USER CODE BEGIN I2C4_MspDeInit 1 */
234
235  /* USER CODE END I2C4_MspDeInit 1 */
236  }
237}
238
239/* USER CODE BEGIN 1 */
240
241/* USER CODE END 1 */
Note: See TracBrowser for help on using the repository browser.