Skip to content

Commit 94f45d9

Browse files
authored
Merge pull request #222 from Igitigit2/bg431b-ADC-extension
Added changes to use additional ADC channels
2 parents 10ab753 + b90c4c6 commit 94f45d9

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

src/current_sense/hardware_specific/stm32/b_g431/b_g431_hal.cpp

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ 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-
hadc1->Init.NbrOfConversion = 2;
98+
hadc1->Init.NbrOfConversion = 5;
9999
hadc1->Init.DiscontinuousConvMode = DISABLE;
100100
hadc1->Init.ExternalTrigConv = ADC_EXTERNALTRIG_T1_TRGO;
101101
hadc1->Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
@@ -134,6 +134,47 @@ void MX_ADC1_Init(ADC_HandleTypeDef* hadc1)
134134
{
135135
SIMPLEFOC_DEBUG("HAL_ADC_ConfigChannel failed!");
136136
}
137+
138+
//******************************************************************
139+
// Temp, Poti ....
140+
/* Configure Regular Channel (PB12, Potentiometer)
141+
*/
142+
sConfig.Channel = ADC_CHANNEL_11;
143+
sConfig.Rank = ADC_REGULAR_RANK_3;
144+
sConfig.SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
145+
sConfig.SingleDiff = ADC_SINGLE_ENDED;
146+
sConfig.OffsetNumber = ADC_OFFSET_NONE;
147+
sConfig.Offset = 0;
148+
if (HAL_ADC_ConfigChannel(hadc1, &sConfig) != HAL_OK)
149+
{
150+
SIMPLEFOC_DEBUG("HAL_ADC_ConfigChannel failed!");
151+
}
152+
153+
/** Configure Regular Channel (PB14, Temperature)
154+
*/
155+
sConfig.Channel = ADC_CHANNEL_5;
156+
sConfig.Rank = ADC_REGULAR_RANK_4;
157+
sConfig.SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
158+
sConfig.SingleDiff = ADC_SINGLE_ENDED;
159+
sConfig.OffsetNumber = ADC_OFFSET_NONE;
160+
sConfig.Offset = 0;
161+
if (HAL_ADC_ConfigChannel(hadc1, &sConfig) != HAL_OK)
162+
{
163+
SIMPLEFOC_DEBUG("HAL_ADC_ConfigChannel failed!");
164+
}
165+
166+
/** Configure Regular Channel (PB14, Temperature)
167+
*/
168+
sConfig.Channel = ADC_CHANNEL_1;
169+
sConfig.Rank = ADC_REGULAR_RANK_5;
170+
sConfig.SamplingTime = ADC_SAMPLETIME_47CYCLES_5;
171+
sConfig.SingleDiff = ADC_SINGLE_ENDED;
172+
sConfig.OffsetNumber = ADC_OFFSET_NONE;
173+
sConfig.Offset = 0;
174+
if (HAL_ADC_ConfigChannel(hadc1, &sConfig) != HAL_OK)
175+
{
176+
SIMPLEFOC_DEBUG("HAL_ADC_ConfigChannel failed!");
177+
}
137178
/* USER CODE BEGIN ADC1_Init 2 */
138179

139180
/* USER CODE END ADC1_Init 2 */

src/current_sense/hardware_specific/stm32/b_g431/b_g431_mcu.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
#define _ADC_VOLTAGE 3.3f
1212
#define _ADC_RESOLUTION 4096.0f
13-
#define ADC_BUF_LEN_1 2
13+
#define ADC_BUF_LEN_1 5
1414
#define ADC_BUF_LEN_2 1
1515

1616
static ADC_HandleTypeDef hadc1;
@@ -37,6 +37,14 @@ float _readADCVoltageInline(const int pin, const void* cs_params){
3737
else if(pin == PB1) // = ADC1_IN12 = phase W (OP3_OUT) on B-G431B-ESC1
3838
raw_adc = adcBuffer1[0];
3939
#endif
40+
41+
else if (pin == A_POTENTIOMETER)
42+
raw_adc = adcBuffer1[2];
43+
else if (pin == A_TEMPERATURE)
44+
raw_adc = adcBuffer1[3];
45+
else if (pin == A_VBUS)
46+
raw_adc = adcBuffer1[4];
47+
4048
return raw_adc * ((Stm32CurrentSenseParams*)cs_params)->adc_voltage_conv;
4149
}
4250

0 commit comments

Comments
 (0)