1#include "../../../hardware_api.h"
2#if defined(ARDUINO_B_G431B_ESC1)
6#include "stm32g4xx_hal.h"
7#include "stm32g4xx_ll_pwr.h"
8#include "stm32g4xx_hal_adc.h"
33void MX_GPIO_Init(
void)
36 __HAL_RCC_GPIOC_CLK_ENABLE();
37 __HAL_RCC_GPIOF_CLK_ENABLE();
38 __HAL_RCC_GPIOA_CLK_ENABLE();
39 __HAL_RCC_GPIOB_CLK_ENABLE();
41 __HAL_RCC_ADC12_CLK_ENABLE();
50 __HAL_RCC_DMAMUX1_CLK_ENABLE();
51 __HAL_RCC_DMA1_CLK_ENABLE();
52 __HAL_RCC_DMA2_CLK_ENABLE();
56 HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
57 HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
59 HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0);
60 HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn);
63 RCC_PeriphCLKInitTypeDef PeriphClkInit;
64 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;
65 PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_PLL;
66 HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
75void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
81 ADC_MultiModeTypeDef multimode = {0};
82 ADC_ChannelConfTypeDef sConfig = {0};
89 hadc1->Instance = ADC1;
90 hadc1->Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV16;
91 hadc1->Init.Resolution = ADC_RESOLUTION_12B;
92 hadc1->Init.DataAlign = ADC_DATAALIGN_RIGHT;
93 hadc1->Init.GainCompensation = 0;
94 hadc1->Init.ScanConvMode = ADC_SCAN_ENABLE;
95 hadc1->Init.EOCSelection = ADC_EOC_SINGLE_CONV;
96 hadc1->Init.LowPowerAutoWait = DISABLE;
97 hadc1->Init.ContinuousConvMode = DISABLE;
98 #ifdef OPAMP_USE_INTERNAL_CHANNEL
99 hadc1->Init.NbrOfConversion = 4;
101 hadc1->Init.NbrOfConversion = 5;
103 hadc1->Init.DiscontinuousConvMode = DISABLE;
104 hadc1->Init.ExternalTrigConv = ADC_EXTERNALTRIG_T1_TRGO;
105 hadc1->Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
106 hadc1->Init.DMAContinuousRequests = ENABLE;
107 hadc1->Init.Overrun = ADC_OVR_DATA_PRESERVED;
109 if (HAL_ADC_Init(hadc1) != HAL_OK)
116 multimode.Mode = ADC_MODE_INDEPENDENT;
117 if (HAL_ADCEx_MultiModeConfigChannel(hadc1, &multimode) != HAL_OK)
121 #ifndef OPAMP_USE_INTERNAL_CHANNEL
124 sConfig.Channel = ADC_CHANNEL_12;
125 sConfig.Rank = ADC_REGULAR_RANK_1;
126 sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
127 sConfig.SingleDiff = ADC_SINGLE_ENDED;
128 sConfig.OffsetNumber = ADC_OFFSET_NONE;
130 if (HAL_ADC_ConfigChannel(hadc1, &sConfig) != HAL_OK)
137 #ifdef OPAMP_USE_INTERNAL_CHANNEL
138 sConfig.Channel = ADC_CHANNEL_13;
139 sConfig.Rank = ADC_REGULAR_RANK_1;
140 sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
141 sConfig.SingleDiff = ADC_SINGLE_ENDED;
142 sConfig.OffsetNumber = ADC_OFFSET_NONE;
145 sConfig.Channel = ADC_CHANNEL_3;
146 sConfig.Rank = ADC_REGULAR_RANK_2;
148 if (HAL_ADC_ConfigChannel(hadc1, &sConfig) != HAL_OK)
157 sConfig.Channel = ADC_CHANNEL_11;
158 #ifdef OPAMP_USE_INTERNAL_CHANNEL
159 sConfig.Rank = ADC_REGULAR_RANK_2;
161 sConfig.Rank = ADC_REGULAR_RANK_3;
163 sConfig.SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
164 sConfig.SingleDiff = ADC_SINGLE_ENDED;
165 sConfig.OffsetNumber = ADC_OFFSET_NONE;
167 if (HAL_ADC_ConfigChannel(hadc1, &sConfig) != HAL_OK)
174 sConfig.Channel = ADC_CHANNEL_5;
175 #ifdef OPAMP_USE_INTERNAL_CHANNEL
176 sConfig.Rank = ADC_REGULAR_RANK_3;
178 sConfig.Rank = ADC_REGULAR_RANK_4;
180 sConfig.SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
181 sConfig.SingleDiff = ADC_SINGLE_ENDED;
182 sConfig.OffsetNumber = ADC_OFFSET_NONE;
184 if (HAL_ADC_ConfigChannel(hadc1, &sConfig) != HAL_OK)
191 sConfig.Channel = ADC_CHANNEL_1;
192 #ifdef OPAMP_USE_INTERNAL_CHANNEL
193 sConfig.Rank = ADC_REGULAR_RANK_4;
195 sConfig.Rank = ADC_REGULAR_RANK_5;
197 sConfig.SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
198 sConfig.SingleDiff = ADC_SINGLE_ENDED;
199 sConfig.OffsetNumber = ADC_OFFSET_NONE;
201 if (HAL_ADC_ConfigChannel(hadc1, &sConfig) != HAL_OK)
216void MX_ADC2_Init(ADC_HandleTypeDef* hadc2)
222 ADC_ChannelConfTypeDef sConfig = {0};
229 hadc2->Instance = ADC2;
230 hadc2->Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV16;
231 hadc2->Init.Resolution = ADC_RESOLUTION_12B;
232 hadc2->Init.DataAlign = ADC_DATAALIGN_RIGHT;
233 hadc2->Init.GainCompensation = 0;
234 hadc2->Init.ScanConvMode = ADC_SCAN_ENABLE;
235 hadc2->Init.EOCSelection = ADC_EOC_SINGLE_CONV;
236 hadc2->Init.LowPowerAutoWait = DISABLE;
237 hadc2->Init.ContinuousConvMode = DISABLE;
238 #ifdef OPAMP_USE_INTERNAL_CHANNEL
239 hadc2->Init.NbrOfConversion = 2;
241 hadc2->Init.NbrOfConversion = 1;
243 hadc2->Init.DiscontinuousConvMode = DISABLE;
244 hadc2->Init.ExternalTrigConv = ADC_EXTERNALTRIG_T1_TRGO;
245 hadc2->Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
246 hadc2->Init.DMAContinuousRequests = ENABLE;
247 hadc2->Init.Overrun = ADC_OVR_DATA_PRESERVED;
249 if (HAL_ADC_Init(hadc2) != HAL_OK)
255 #ifdef OPAMP_USE_INTERNAL_CHANNEL
256 sConfig.Channel = ADC_CHANNEL_16;
258 sConfig.Channel = ADC_CHANNEL_3;
260 sConfig.Rank = ADC_REGULAR_RANK_1;
261 sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
262 sConfig.SingleDiff = ADC_SINGLE_ENDED;
263 sConfig.OffsetNumber = ADC_OFFSET_NONE;
265 if (HAL_ADC_ConfigChannel(hadc2, &sConfig) != HAL_OK)
269 #ifdef OPAMP_USE_INTERNAL_CHANNEL
272 sConfig.Channel = ADC_CHANNEL_18;
273 sConfig.Rank = ADC_REGULAR_RANK_2;
274 sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
275 sConfig.SingleDiff = ADC_SINGLE_ENDED;
276 sConfig.OffsetNumber = ADC_OFFSET_NONE;
278 if (HAL_ADC_ConfigChannel(hadc2, &sConfig) != HAL_OK)
295void HAL_OPAMP_MspInit(OPAMP_HandleTypeDef* hopamp)
297 GPIO_InitTypeDef GPIO_InitStruct = {0};
298 if(hopamp->Instance==OPAMP1)
304 __HAL_RCC_GPIOA_CLK_ENABLE();
310 GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
311 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
312 GPIO_InitStruct.Pull = GPIO_NOPULL;
313 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
319 else if(hopamp->Instance==OPAMP2)
325 __HAL_RCC_GPIOA_CLK_ENABLE();
331 GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
332 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
333 GPIO_InitStruct.Pull = GPIO_NOPULL;
334 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
340 else if(hopamp->Instance==OPAMP3)
346 __HAL_RCC_GPIOB_CLK_ENABLE();
352 GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2;
353 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
354 GPIO_InitStruct.Pull = GPIO_NOPULL;
355 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
370void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef* hopamp)
372 if(hopamp->Instance==OPAMP1)
383 HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1|(GPIO_PIN_2 * OPAMP_USE_INTERNAL_CHANNEL)|GPIO_PIN_3);
389 else if(hopamp->Instance==OPAMP2)
400 HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|(GPIO_PIN_6 * OPAMP_USE_INTERNAL_CHANNEL)|GPIO_PIN_7);
406 else if(hopamp->Instance==OPAMP3)
417 HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|(GPIO_PIN_1 * OPAMP_USE_INTERNAL_CHANNEL)|GPIO_PIN_2);
#define SIMPLEFOC_DEBUG(msg,...)