Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-июн-24 10:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 2016-окт-20 08:57 
Не в сети

Зарегистрирован: 2013-апр-15 13:01
Сообщения: 64
Внешнее тактирование 12 Мгц, PLL 3, источник опорного напряжения АЦП - внешний, стабильный.
При опросе АЦП значения 12 битного АЦП скачут туда-сюда на 300 отсчетов.
Если ли ошибка в инициализации, какой она должна быть?
Код:
   
        ADC_InitTypeDef sADC;
   ADCx_InitTypeDef sADCx;
   RST_CLK_ADCclkSelection(RST_CLK_ADCclkPLLCPU);
   RST_CLK_ADCclkPrescaler(RST_CLK_ADCclkDIV256);
   
   RST_CLK_PCLKcmd(RST_CLK_PCLK_ADC,ENABLE);
   RST_CLK_ADCclkEnable(ENABLE);
   ADC_DeInit();
        ADC_StructInit(&sADC);
   sADC.ADC_StartDelay=15;      // delay of begin converting
   /*sADC.ADC_TempSensorAmplifier=ADC_TEMP_SENSOR_AMPLIFIER_Enable;
   sADC.ADC_TempSensorConversion=ADC_TEMP_SENSOR_CONVERSION_Enable;
   sADC.ADC_IntVRefAmplifier=ADC_INT_VREF_AMPLIFIER_Enable;
   sADC.ADC_IntVRefConversion=ADC_VREF_CONVERSION_Enable;
   sADC.ADC_TempSensor=ADC_TEMP_SENSOR_Enable;*/
        ADC_Init (&sADC);
   
  ADCx_StructInit (&sADCx);
  sADCx.ADC_ClockSource      = ADC_CLOCK_SOURCE_CPU;
  sADCx.ADC_SamplingMode     = ADC_SAMPLING_MODE_CICLIC_CONV;         
  sADCx.ADC_ChannelSwitching = ADC_CH_SWITCHING_Disable;
  sADCx.ADC_ChannelNumber    = ADC_CH_ADC0;
  sADCx.ADC_Channels         = ADC_CH_ADC0_MSK | ADC_CH_ADC2_MSK |ADC_CH_ADC4_MSK |ADC_CH_ADC5_MSK |ADC_CH_ADC6_MSK |ADC_CH_ADC7_MSK;
   sADCx.ADC_LevelControl     = ADC_LEVEL_CONTROL_Disable;
  sADCx.ADC_LowLevel         = 0;//L_Level;
  sADCx.ADC_HighLevel        = 0;//H_Level;
  sADCx.ADC_VRefSource       = ADC_VREF_SOURCE_EXTERNAL;
  sADCx.ADC_IntVRefSource    = ADC_INT_VREF_SOURCE_EXACT;//EXACT
  sADCx.ADC_Prescaler        = ADC_CLK_div_2048;
  sADCx.ADC_DelayGo          = 0x7;
   
  ADC1_Init (&sADCx);
  ADC1_ITConfig(ADCx_IT_END_OF_CONVERSION, ENABLE);

  ADC1_Cmd (ENABLE);
   ADC1_Start();         


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-янв-08 23:56 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 88
Откуда: Новосибирск
300 отсчётов imho это чересчур. У меня получалось 3-4 младших разряда... Возможно входная ёмкость АЦП не успевает заряжаться? И много зависит ещё от выходной ёмкости и выходного сопротивления источника измеряемого сигнала.

_________________
Странник


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-янв-09 16:54 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 121
Откуда: ПКК "Миландр"
Цитата:
источник опорного напряжения АЦП - внешний, стабильный

Внешний источник опорного напряжения - это через ADC0_REF+ и ADC1_REF-? (ADC_VREF_SOURCE_EXTERNAL выбирает это)

Если да, то:
- Измеряется то, что задается как опорное - sADCx.ADC_ChannelNumber = ADC_CH_ADC0 ?
- Разница в вольтах между ADC0_REF+ и ADC1_REF- превышает 2,4В?

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB