source: trunk/fw_g473rct/Core/Src/fdcan.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.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.