@@ -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,16 @@ 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+ #else
141+ sConfig .Channel = ADC_CHANNEL_3; // ADC1_IN3 = PA2 = OP1_OUT or ADC1_IN13 for internal channel
132142 sConfig .Rank = ADC_REGULAR_RANK_2;
143+ #endif
133144 if (HAL_ADC_ConfigChannel (hadc1, &sConfig ) != HAL_OK)
134145 {
135146 SIMPLEFOC_DEBUG (" HAL_ADC_ConfigChannel failed!" );
@@ -140,7 +151,11 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
140151 /* Configure Regular Channel (PB12, Potentiometer)
141152 */
142153 sConfig .Channel = ADC_CHANNEL_11;
154+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
155+ sConfig .Rank = ADC_REGULAR_RANK_2;
156+ #else
143157 sConfig .Rank = ADC_REGULAR_RANK_3;
158+ #endif
144159 sConfig .SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
145160 sConfig .SingleDiff = ADC_SINGLE_ENDED;
146161 sConfig .OffsetNumber = ADC_OFFSET_NONE;
@@ -153,7 +168,11 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
153168 /* * Configure Regular Channel (PB14, Temperature)
154169 */
155170 sConfig .Channel = ADC_CHANNEL_5;
171+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
172+ sConfig .Rank = ADC_REGULAR_RANK_3;
173+ #else
156174 sConfig .Rank = ADC_REGULAR_RANK_4;
175+ #endif
157176 sConfig .SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
158177 sConfig .SingleDiff = ADC_SINGLE_ENDED;
159178 sConfig .OffsetNumber = ADC_OFFSET_NONE;
@@ -163,10 +182,14 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
163182 SIMPLEFOC_DEBUG (" HAL_ADC_ConfigChannel failed!" );
164183 }
165184
166- /* * Configure Regular Channel (PB14, Temperature )
185+ /* * Configure Regular Channel (PA0, VBUS )
167186 */
168187 sConfig .Channel = ADC_CHANNEL_1;
188+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
189+ sConfig .Rank = ADC_REGULAR_RANK_4;
190+ #else
169191 sConfig .Rank = ADC_REGULAR_RANK_5;
192+ #endif
170193 sConfig .SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
171194 sConfig .SingleDiff = ADC_SINGLE_ENDED;
172195 sConfig .OffsetNumber = ADC_OFFSET_NONE;
@@ -208,7 +231,11 @@ void MX_ADC2_Init(ADC_HandleTypeDef* hadc2)
208231 hadc2->Init .EOCSelection = ADC_EOC_SINGLE_CONV;
209232 hadc2->Init .LowPowerAutoWait = DISABLE;
210233 hadc2->Init .ContinuousConvMode = DISABLE;
234+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
235+ hadc2->Init .NbrOfConversion = 2 ;
236+ #else
211237 hadc2->Init .NbrOfConversion = 1 ;
238+ #endif
212239 hadc2->Init .DiscontinuousConvMode = DISABLE;
213240 hadc2->Init .ExternalTrigConv = ADC_EXTERNALTRIG_T1_TRGO;
214241 hadc2->Init .ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
@@ -221,7 +248,11 @@ void MX_ADC2_Init(ADC_HandleTypeDef* hadc2)
221248 }
222249 /* * Configure Regular Channel
223250 */
224- sConfig .Channel = ADC_CHANNEL_3; // ADC2_IN3 = PA6
251+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
252+ sConfig .Channel = ADC_CHANNEL_16; // ADC2_IN3 = PA6 = OP2_OUT or ADC2_IN16 for internal channel
253+ #else
254+ sConfig .Channel = ADC_CHANNEL_3; // ADC2_IN3 = PA6 = OP2_OUT or ADC2_IN16 for internal channel
255+ #endif
225256 sConfig .Rank = ADC_REGULAR_RANK_1;
226257 sConfig .SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
227258 sConfig .SingleDiff = ADC_SINGLE_ENDED;
@@ -231,6 +262,20 @@ void MX_ADC2_Init(ADC_HandleTypeDef* hadc2)
231262 {
232263 SIMPLEFOC_DEBUG (" HAL_ADC_ConfigChannel failed!" );
233264 }
265+ #ifdef OPAMP_USE_INTERNAL_CHANNEL
266+ /* * Configure Regular Channel
267+ */
268+ sConfig .Channel = ADC_CHANNEL_18; // ADC1_IN12 = PB1 = OP3_OUT or ADC2_IN18 for internal channel
269+ sConfig .Rank = ADC_REGULAR_RANK_2;
270+ sConfig .SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
271+ sConfig .SingleDiff = ADC_SINGLE_ENDED;
272+ sConfig .OffsetNumber = ADC_OFFSET_NONE;
273+ sConfig .Offset = 0 ;
274+ if (HAL_ADC_ConfigChannel (hadc2, &sConfig ) != HAL_OK)
275+ {
276+ SIMPLEFOC_DEBUG (" HAL_ADC_ConfigChannel failed!" );
277+ }
278+ #endif
234279 /* USER CODE BEGIN ADC2_Init 2 */
235280
236281 /* USER CODE END ADC2_Init 2 */
0 commit comments