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

Last change on this file was 28, checked in by f.jahn, 3 months ago
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.