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
STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)
- Giovanni
- Site Admin
- Posts: 14893
- Joined: Wed May 27, 2009 8:48 am
- Has thanked: 1202 times
- Been thanked: 997 times
Re: STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)
Hi,
Has the ADC been started? it is better if you post the relevant code.
Giovanni
Has the ADC been started? it is better if you post the relevant code.
Giovanni
Re: STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)
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);
}
}