@@ -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