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

Last change on this file was 20, checked in by f.jahn, 4 months ago

adc dma funktioniert und modbus funktioniert

File size: 6.6 KB
Line 
1/* USER CODE BEGIN Header */
2/**
3 ******************************************************************************
4 * @file fdcan.c
5 * @brief This file provides code for the configuration
6 * of the FDCAN 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 "fdcan.h"
22
23/* USER CODE BEGIN 0 */
24
25/* USER CODE END 0 */
26
27FDCAN_HandleTypeDef hfdcan2;
28FDCAN_HandleTypeDef hfdcan3;
29
30/* FDCAN2 init function */
31void MX_FDCAN2_Init(void)
32{
33
34 /* USER CODE BEGIN FDCAN2_Init 0 */
35
36 /* USER CODE END FDCAN2_Init 0 */
37
38 /* USER CODE BEGIN FDCAN2_Init 1 */
39
40 /* USER CODE END FDCAN2_Init 1 */
41 hfdcan2.Instance = FDCAN2;
42 hfdcan2.Init.ClockDivider = FDCAN_CLOCK_DIV1;
43 hfdcan2.Init.FrameFormat = FDCAN_FRAME_CLASSIC;
44 hfdcan2.Init.Mode = FDCAN_MODE_NORMAL;
45 hfdcan2.Init.AutoRetransmission = DISABLE;
46 hfdcan2.Init.TransmitPause = DISABLE;
47 hfdcan2.Init.ProtocolException = DISABLE;
48 hfdcan2.Init.NominalPrescaler = 16;
49 hfdcan2.Init.NominalSyncJumpWidth = 1;
50 hfdcan2.Init.NominalTimeSeg1 = 1;
51 hfdcan2.Init.NominalTimeSeg2 = 1;
52 hfdcan2.Init.DataPrescaler = 1;
53 hfdcan2.Init.DataSyncJumpWidth = 1;
54 hfdcan2.Init.DataTimeSeg1 = 1;
55 hfdcan2.Init.DataTimeSeg2 = 1;
56 hfdcan2.Init.StdFiltersNbr = 0;
57 hfdcan2.Init.ExtFiltersNbr = 0;
58 hfdcan2.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
59 if (HAL_FDCAN_Init(&hfdcan2) != HAL_OK)
60 {
61 Error_Handler();
62 }
63 /* USER CODE BEGIN FDCAN2_Init 2 */
64
65 /* USER CODE END FDCAN2_Init 2 */
66
67}
68/* FDCAN3 init function */
69void MX_FDCAN3_Init(void)
70{
71
72 /* USER CODE BEGIN FDCAN3_Init 0 */
73
74 /* USER CODE END FDCAN3_Init 0 */
75
76 /* USER CODE BEGIN FDCAN3_Init 1 */
77
78 /* USER CODE END FDCAN3_Init 1 */
79 hfdcan3.Instance = FDCAN3;
80 hfdcan3.Init.ClockDivider = FDCAN_CLOCK_DIV1;
81 hfdcan3.Init.FrameFormat = FDCAN_FRAME_CLASSIC;
82 hfdcan3.Init.Mode = FDCAN_MODE_NORMAL;
83 hfdcan3.Init.AutoRetransmission = DISABLE;
84 hfdcan3.Init.TransmitPause = DISABLE;
85 hfdcan3.Init.ProtocolException = DISABLE;
86 hfdcan3.Init.NominalPrescaler = 16;
87 hfdcan3.Init.NominalSyncJumpWidth = 1;
88 hfdcan3.Init.NominalTimeSeg1 = 1;
89 hfdcan3.Init.NominalTimeSeg2 = 1;
90 hfdcan3.Init.DataPrescaler = 1;
91 hfdcan3.Init.DataSyncJumpWidth = 1;
92 hfdcan3.Init.DataTimeSeg1 = 1;
93 hfdcan3.Init.DataTimeSeg2 = 1;
94 hfdcan3.Init.StdFiltersNbr = 0;
95 hfdcan3.Init.ExtFiltersNbr = 0;
96 hfdcan3.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
97 if (HAL_FDCAN_Init(&hfdcan3) != HAL_OK)
98 {
99 Error_Handler();
100 }
101 /* USER CODE BEGIN FDCAN3_Init 2 */
102
103 /* USER CODE END FDCAN3_Init 2 */
104
105}
106
107static uint32_t HAL_RCC_FDCAN_CLK_ENABLED=0;
108
109void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* fdcanHandle)
110{
111
112 GPIO_InitTypeDef GPIO_InitStruct = {0};
113 RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
114 if(fdcanHandle->Instance==FDCAN2)
115 {
116 /* USER CODE BEGIN FDCAN2_MspInit 0 */
117
118 /* USER CODE END FDCAN2_MspInit 0 */
119
120 /** Initializes the peripherals clocks
121 */
122 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_FDCAN;
123 PeriphClkInit.FdcanClockSelection = RCC_FDCANCLKSOURCE_PCLK1;
124 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
125 {
126 Error_Handler();
127 }
128
129 /* FDCAN2 clock enable */
130 HAL_RCC_FDCAN_CLK_ENABLED++;
131 if(HAL_RCC_FDCAN_CLK_ENABLED==1){
132 __HAL_RCC_FDCAN_CLK_ENABLE();
133 }
134
135 __HAL_RCC_GPIOB_CLK_ENABLE();
136 /**FDCAN2 GPIO Configuration
137 PB5 ------> FDCAN2_RX
138 PB6 ------> FDCAN2_TX
139 */
140 GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;
141 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
142 GPIO_InitStruct.Pull = GPIO_NOPULL;
143 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
144 GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN2;
145 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
146
147 /* USER CODE BEGIN FDCAN2_MspInit 1 */
148
149 /* USER CODE END FDCAN2_MspInit 1 */
150 }
151 else if(fdcanHandle->Instance==FDCAN3)
152 {
153 /* USER CODE BEGIN FDCAN3_MspInit 0 */
154
155 /* USER CODE END FDCAN3_MspInit 0 */
156
157 /** Initializes the peripherals clocks
158 */
159 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_FDCAN;
160 PeriphClkInit.FdcanClockSelection = RCC_FDCANCLKSOURCE_PCLK1;
161 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
162 {
163 Error_Handler();
164 }
165
166 /* FDCAN3 clock enable */
167 HAL_RCC_FDCAN_CLK_ENABLED++;
168 if(HAL_RCC_FDCAN_CLK_ENABLED==1){
169 __HAL_RCC_FDCAN_CLK_ENABLE();
170 }
171
172 __HAL_RCC_GPIOB_CLK_ENABLE();
173 /**FDCAN3 GPIO Configuration
174 PB3 ------> FDCAN3_RX
175 PB4 ------> FDCAN3_TX
176 */
177 GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4;
178 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
179 GPIO_InitStruct.Pull = GPIO_NOPULL;
180 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
181 GPIO_InitStruct.Alternate = GPIO_AF11_FDCAN3;
182 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
183
184 /* USER CODE BEGIN FDCAN3_MspInit 1 */
185
186 /* USER CODE END FDCAN3_MspInit 1 */
187 }
188}
189
190void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* fdcanHandle)
191{
192
193 if(fdcanHandle->Instance==FDCAN2)
194 {
195 /* USER CODE BEGIN FDCAN2_MspDeInit 0 */
196
197 /* USER CODE END FDCAN2_MspDeInit 0 */
198 /* Peripheral clock disable */
199 HAL_RCC_FDCAN_CLK_ENABLED--;
200 if(HAL_RCC_FDCAN_CLK_ENABLED==0){
201 __HAL_RCC_FDCAN_CLK_DISABLE();
202 }
203
204 /**FDCAN2 GPIO Configuration
205 PB5 ------> FDCAN2_RX
206 PB6 ------> FDCAN2_TX
207 */
208 HAL_GPIO_DeInit(GPIOB, GPIO_PIN_5|GPIO_PIN_6);
209
210 /* USER CODE BEGIN FDCAN2_MspDeInit 1 */
211
212 /* USER CODE END FDCAN2_MspDeInit 1 */
213 }
214 else if(fdcanHandle->Instance==FDCAN3)
215 {
216 /* USER CODE BEGIN FDCAN3_MspDeInit 0 */
217
218 /* USER CODE END FDCAN3_MspDeInit 0 */
219 /* Peripheral clock disable */
220 HAL_RCC_FDCAN_CLK_ENABLED--;
221 if(HAL_RCC_FDCAN_CLK_ENABLED==0){
222 __HAL_RCC_FDCAN_CLK_DISABLE();
223 }
224
225 /**FDCAN3 GPIO Configuration
226 PB3 ------> FDCAN3_RX
227 PB4 ------> FDCAN3_TX
228 */
229 HAL_GPIO_DeInit(GPIOB, GPIO_PIN_3|GPIO_PIN_4);
230
231 /* USER CODE BEGIN FDCAN3_MspDeInit 1 */
232
233 /* USER CODE END FDCAN3_MspDeInit 1 */
234 }
235}
236
237/* USER CODE BEGIN 1 */
238
239/* USER CODE END 1 */
Note: See TracBrowser for help on using the repository browser.