@@ -95,7 +95,11 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
9595 hadc1->Init .EOCSelection = ADC_EOC_SINGLE_CONV;
9696 hadc1->Init .LowPowerAutoWait = DISABLE;
9797 hadc1->Init .ContinuousConvMode = DISABLE;
98+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
99+ hadc1->Init .NbrOfConversion = 4 ;
100+ #else
98101 hadc1->Init .NbrOfConversion = 5 ;
102+ #endif
99103 hadc1->Init .DiscontinuousConvMode = DISABLE;
100104 hadc1->Init .ExternalTrigConv = ADC_EXTERNALTRIG_T1_TRGO;
101105 hadc1->Init .ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
@@ -114,9 +118,10 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
114118 {
115119 SIMPLEFOC_DEBUG (" HAL_ADCEx_MultiModeConfigChannel failed!" );
116120 }
121+ #ifndef OPAMP_USE_INTERNAL_CHANNEL
117122 /* * Configure Regular Channel
118123 */
119- sConfig .Channel = ADC_CHANNEL_12; // ADC1_IN12 = PB1 = OP3_OUT
124+ sConfig .Channel = ADC_CHANNEL_12; // ADC1_IN12 = PB1 = OP3_OUT or ADC2_IN18 for internal channel
120125 sConfig .Rank = ADC_REGULAR_RANK_1;
121126 sConfig .SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
122127 sConfig .SingleDiff = ADC_SINGLE_ENDED;
@@ -126,10 +131,20 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
126131 {
127132 SIMPLEFOC_DEBUG (" HAL_ADC_ConfigChannel failed!" );
128133 }
134+ #endif
129135 /* * Configure Regular Channel
130136 */
131- sConfig .Channel = ADC_CHANNEL_3; // ADC1_IN3 = PA2 = OP1_OUT
137+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
138+ sConfig .Channel = ADC_CHANNEL_13; // ADC1_IN3 = PA2 = OP1_OUT or ADC1_IN13 for internal channel
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;
143+ sConfig .Offset = 0 ;
144+ #else
145+ sConfig .Channel = ADC_CHANNEL_3; // ADC1_IN3 = PA2 = OP1_OUT or ADC1_IN13 for internal channel
132146 sConfig .Rank = ADC_REGULAR_RANK_2;
147+ #endif
133148 if (HAL_ADC_ConfigChannel (hadc1, &sConfig ) != HAL_OK)
134149 {
135150 SIMPLEFOC_DEBUG (" HAL_ADC_ConfigChannel failed!" );
@@ -140,7 +155,11 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
140155 /* Configure Regular Channel (PB12, Potentiometer)
141156 */
142157 sConfig .Channel = ADC_CHANNEL_11;
158+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
159+ sConfig .Rank = ADC_REGULAR_RANK_2;
160+ #else
143161 sConfig .Rank = ADC_REGULAR_RANK_3;
162+ #endif
144163 sConfig .SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
145164 sConfig .SingleDiff = ADC_SINGLE_ENDED;
146165 sConfig .OffsetNumber = ADC_OFFSET_NONE;
@@ -153,7 +172,11 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
153172 /* * Configure Regular Channel (PB14, Temperature)
154173 */
155174 sConfig .Channel = ADC_CHANNEL_5;
175+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
176+ sConfig .Rank = ADC_REGULAR_RANK_3;
177+ #else
156178 sConfig .Rank = ADC_REGULAR_RANK_4;
179+ #endif
157180 sConfig .SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
158181 sConfig .SingleDiff = ADC_SINGLE_ENDED;
159182 sConfig .OffsetNumber = ADC_OFFSET_NONE;
@@ -163,10 +186,14 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
163186 SIMPLEFOC_DEBUG (" HAL_ADC_ConfigChannel failed!" );
164187 }
165188
166- /* * Configure Regular Channel (PB14, Temperature )
189+ /* * Configure Regular Channel (PA0, VBUS )
167190 */
168191 sConfig .Channel = ADC_CHANNEL_1;
192+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
193+ sConfig .Rank = ADC_REGULAR_RANK_4;
194+ #else
169195 sConfig .Rank = ADC_REGULAR_RANK_5;
196+ #endif
170197 sConfig .SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
171198 sConfig .SingleDiff = ADC_SINGLE_ENDED;
172199 sConfig .OffsetNumber = ADC_OFFSET_NONE;
@@ -208,7 +235,11 @@ void MX_ADC2_Init(ADC_HandleTypeDef* hadc2)
208235 hadc2->Init .EOCSelection = ADC_EOC_SINGLE_CONV;
209236 hadc2->Init .LowPowerAutoWait = DISABLE;
210237 hadc2->Init .ContinuousConvMode = DISABLE;
238+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
239+ hadc2->Init .NbrOfConversion = 2 ;
240+ #else
211241 hadc2->Init .NbrOfConversion = 1 ;
242+ #endif
212243 hadc2->Init .DiscontinuousConvMode = DISABLE;
213244 hadc2->Init .ExternalTrigConv = ADC_EXTERNALTRIG_T1_TRGO;
214245 hadc2->Init .ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
@@ -221,7 +252,11 @@ void MX_ADC2_Init(ADC_HandleTypeDef* hadc2)
221252 }
222253 /* * Configure Regular Channel
223254 */
224- sConfig .Channel = ADC_CHANNEL_3; // ADC2_IN3 = PA6
255+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
256+ sConfig .Channel = ADC_CHANNEL_16; // ADC2_IN3 = PA6 = OP2_OUT or ADC2_IN16 for internal channel
257+ #else
258+ sConfig .Channel = ADC_CHANNEL_3; // ADC2_IN3 = PA6 = OP2_OUT or ADC2_IN16 for internal channel
259+ #endif
225260 sConfig .Rank = ADC_REGULAR_RANK_1;
226261 sConfig .SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
227262 sConfig .SingleDiff = ADC_SINGLE_ENDED;
@@ -231,6 +266,20 @@ void MX_ADC2_Init(ADC_HandleTypeDef* hadc2)
231266 {
232267 SIMPLEFOC_DEBUG (" HAL_ADC_ConfigChannel failed!" );
233268 }
269+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
270+ /* * Configure Regular Channel
271+ */
272+ sConfig .Channel = ADC_CHANNEL_18; // ADC1_IN12 = PB1 = OP3_OUT or ADC2_IN18 for internal channel
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;
277+ sConfig .Offset = 0 ;
278+ if (HAL_ADC_ConfigChannel (hadc2, &sConfig ) != HAL_OK)
279+ {
280+ SIMPLEFOC_DEBUG (" HAL_ADC_ConfigChannel failed!" );
281+ }
282+ #endif
234283 /* USER CODE BEGIN ADC2_Init 2 */
235284
236285 /* USER CODE END ADC2_Init 2 */
@@ -331,7 +380,7 @@ void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef* hopamp)
331380 PA2 ------> OPAMP1_VOUT
332381 PA3 ------> OPAMP1_VINM
333382 */
334- HAL_GPIO_DeInit (GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
383+ HAL_GPIO_DeInit (GPIOA, GPIO_PIN_1|( GPIO_PIN_2 * OPAMP_USE_INTERNAL_CHANNEL) |GPIO_PIN_3);
335384
336385 /* USER CODE BEGIN OPAMP1_MspDeInit 1 */
337386
@@ -348,7 +397,7 @@ void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef* hopamp)
348397 PA6 ------> OPAMP2_VOUT
349398 PA7 ------> OPAMP2_VINP
350399 */
351- HAL_GPIO_DeInit (GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
400+ HAL_GPIO_DeInit (GPIOA, GPIO_PIN_5|( GPIO_PIN_6 * OPAMP_USE_INTERNAL_CHANNEL) |GPIO_PIN_7);
352401
353402 /* USER CODE BEGIN OPAMP2_MspDeInit 1 */
354403
@@ -365,7 +414,7 @@ void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef* hopamp)
365414 PB1 ------> OPAMP3_VOUT
366415 PB2 ------> OPAMP3_VINM
367416 */
368- HAL_GPIO_DeInit (GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2);
417+ HAL_GPIO_DeInit (GPIOB, GPIO_PIN_0|( GPIO_PIN_1 * OPAMP_USE_INTERNAL_CHANNEL) |GPIO_PIN_2);
369418
370419 /* USER CODE BEGIN OPAMP3_MspDeInit 1 */
371420
0 commit comments