STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)

Discussions and support about ChibiOS/HAL, the MCU Hardware Abstraction Layer.
Post Reply
Alex
Posts: 39
Joined: Sat Feb 22, 2014 2:40 pm
Been thanked: 3 times

STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)

Post 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
User avatar
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)

Post by Giovanni »

Hi,

Has the ADC been started? it is better if you post the relevant code.

Giovanni
Alex
Posts: 39
Joined: Sat Feb 22, 2014 2:40 pm
Been thanked: 3 times

Re: STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)

Post 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);
  }
}
Alex
Posts: 39
Joined: Sat Feb 22, 2014 2:40 pm
Been thanked: 3 times

Re: STM32F373/NIL Unsuccessful adcSTM32Calibrate(&SDADCx)

Post by Alex »

Problem is solved. It was my own mistake.
Post Reply