Page 1 of 1
STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)
Posted: Wed Apr 22, 2015 6:34 am
by Alex
Hello, I have some problems with implementation SDADC in my project:
During execute adcSTM32Calibrate() process stopped on waiting EOCALF flag. Instead EOCALF, in SDADC_ISR CALIBIP flag appear and stay infinite.
Same procedure, in demo STM32F373x-SDADC/RT finished successfull. Mcuconf.h in both projects are identical generally. Status of SDADC registers
by calling adcSTM32Calibrate() are identical too. In both case was used same hardware.
P.S. HAL 3.0 used
Re: STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)
Posted: Wed Apr 22, 2015 8:22 am
by Giovanni
Hi,
Has the ADC been started? it is better if you post the relevant code.
Giovanni
Re: STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)
Posted: Wed Apr 22, 2015 9:17 am
by Alex
ADC started one time. After this SDADC_ISR = 0x00002000, i.e. JCIP = 1
Code: Select all
#define ADC_GRP1_NUM_CHANNELS 1
#define ADC_GRP1_BUF_DEPTH 7
static adcsample_t samples1[ADC_GRP1_NUM_CHANNELS * ADC_GRP1_BUF_DEPTH];
static void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
(void)adcp;
}
static void adcerrorcallback(ADCDriver *adcp, adcerror_t err) {
(void)adcp;
(void)err;
}
static const ADCConfig sdadc_config = {
0,
{
SDADC_CONFR_GAIN_1X | SDADC_CONFR_SE_ZERO_VOLT | SDADC_CONFR_COMMON_VSSSD,
0,
0
}
};
static const ADCConversionGroup adcgrpcfg1 = {
TRUE,
ADC_GRP1_NUM_CHANNELS,
adccallback,
adcerrorcallback,
.u.sdadc = {
SDADC_CR2_JSWSTART,
SDADC_JCHGR_CH(8),
{
0,
SDADC_CONFCHR2_CH8(0),
}
}
};
THD_WORKING_AREA(waThread3, 128);
THD_FUNCTION(Thread3, arg) {
(void)arg;
PTh3 = chThdGetSelfX();
adcStart(&SDADCD3, &sdadc_config);
//adcSTM32Calibrate(&SDADCD3);
palTogglePad(GPIOF, GPIOF_LEDR);
while (true) {
chThdSleepMilliseconds(500);
adcConvert(&SDADCD3, &adcgrpcfg1, samples1, ADC_GRP1_BUF_DEPTH);
palTogglePad(GPIOF, GPIOF_LEDR);
}
}
Re: STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)
Posted: Wed Apr 22, 2015 4:35 pm
by Alex
Problem is solved. It was my own mistake.