Перейти к содержанию
    

Надёжность EFM32 и их АЦП

1 час назад, scifi сказал:

Это без усреднения. Если сигнал медленный и позволяет агрессивно усреднять, будут все 12 разрядов.

Даже больше. Но ENOB не использует цифровые махинации. :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, di4zerus said:

У меня сигнал сущие герцы.

АЦП в микроконтроллере на номинальной частоте запускать или снижение частоты оцифровки улучшит ситуацию?

 

С внешним ИОН? Там калибровка такая же как в STM32?

не помню. могу проверить только вечером когда будет доступ к схеме и исходникам.

 

о. нашел. без ИОН.

насколько я вижу из кода калибровку не делал

void ADC0_SetupSingle(char adc_chan)
{
  if (adc_chan > 7)
	  return;

  CMU_ClockEnable(cmuClock_ADC0, true);
  //CMU_ClockSelectSet(cmuClock_ADC0, cmuSelect_LFXO);

  ADC_Init_TypeDef adcInit = ADC_INIT_DEFAULT;
  ADC_InitSingle_TypeDef  adcInitSingle = ADC_INITSINGLE_DEFAULT;

  // Init common issues for both single conversion and scan mode/
  adcInit.warmUpMode = adcWarmupNormal;
  adcInit.lpfMode = adcLPFilterBypass;
  adcInit.timebase = ADC_TimebaseCalc(0);
  adcInit.prescale = ADC_PrescaleCalc(7000000, 0);
  ADC_Init(ADC0, &adcInit);

 // Init for scan sequence use
  //scanInit.reference = adcRefVDD;
  adcInitSingle.acqTime = adcAcqTime4;
  adcInitSingle.reference = adcRefVDD;
  adcInitSingle.resolution = adcRes12Bit;
  adcInitSingle.rep = false; //repeated sampling
  adcInitSingle.input = adc_chan;  //adcSingleInpCh7;
  ADC_InitSingle(ADC0, &adcInitSingle);

  // Enable ADC single overflow interrupt to indicate lost samples
  ADC_IntEnable(ADC0, ADC_IEN_SINGLE);
  NVIC_EnableIRQ(ADC0_IRQn);

   //DMA_ConfigAdcSingle();

   ///Start repetitive ADC single conversions
   //ADC_Start(ADC0, adcStartSingle);
}

хотя возможность калибрации присутствует

static void ADC_CalibrateLoadSingle(ADC_TypeDef *adc, ADC_Ref_TypeDef ref)
{
  uint32_t cal;

  /* Load proper calibration data depending on selected reference */
  /* NOTE: We use ...SCAN... defines below, they are the same as */
  /* similar ...SINGLE... defines. */
  switch (ref)
  {
  case adcRef1V25:
    cal  = adc->CAL & ~(_ADC_CAL_SINGLEOFFSET_MASK | _ADC_CAL_SINGLEGAIN_MASK);
    cal |= ((DEVINFO->ADC0CAL0 & _DEVINFO_ADC0CAL0_1V25_GAIN_MASK) >>
            _DEVINFO_ADC0CAL0_1V25_GAIN_SHIFT) << _ADC_CAL_SINGLEGAIN_SHIFT;
    cal |= ((DEVINFO->ADC0CAL0 & _DEVINFO_ADC0CAL0_1V25_OFFSET_MASK) >>
            _DEVINFO_ADC0CAL0_1V25_OFFSET_SHIFT) << _ADC_CAL_SINGLEOFFSET_SHIFT;
    adc->CAL = cal;
    break;

  case adcRef2V5:
    cal  = adc->CAL & ~(_ADC_CAL_SINGLEOFFSET_MASK | _ADC_CAL_SINGLEGAIN_MASK);
    cal |= ((DEVINFO->ADC0CAL0 & _DEVINFO_ADC0CAL0_2V5_GAIN_MASK) >>
            _DEVINFO_ADC0CAL0_2V5_GAIN_SHIFT) << _ADC_CAL_SINGLEGAIN_SHIFT;
    cal |= ((DEVINFO->ADC0CAL0 & _DEVINFO_ADC0CAL0_2V5_OFFSET_MASK) >>
            _DEVINFO_ADC0CAL0_2V5_OFFSET_SHIFT) << _ADC_CAL_SINGLEOFFSET_SHIFT;
    adc->CAL = cal;
    break;

  case adcRefVDD:
    cal  = adc->CAL & ~(_ADC_CAL_SINGLEOFFSET_MASK | _ADC_CAL_SINGLEGAIN_MASK);
    cal |= ((DEVINFO->ADC0CAL1 & _DEVINFO_ADC0CAL1_VDD_GAIN_MASK) >>
            _DEVINFO_ADC0CAL1_VDD_GAIN_SHIFT) << _ADC_CAL_SINGLEGAIN_SHIFT;
    cal |= ((DEVINFO->ADC0CAL1 & _DEVINFO_ADC0CAL1_VDD_OFFSET_MASK) >>
            _DEVINFO_ADC0CAL1_VDD_OFFSET_SHIFT) << _ADC_CAL_SINGLEOFFSET_SHIFT;
    adc->CAL = cal;
    break;

  case adcRef5VDIFF:
    cal  = adc->CAL & ~(_ADC_CAL_SINGLEOFFSET_MASK | _ADC_CAL_SINGLEGAIN_MASK);
    cal |= ((DEVINFO->ADC0CAL1 & _DEVINFO_ADC0CAL1_5VDIFF_GAIN_MASK) >>
            _DEVINFO_ADC0CAL1_5VDIFF_GAIN_SHIFT) << _ADC_CAL_SINGLEGAIN_SHIFT;
    cal |= ((DEVINFO->ADC0CAL1 & _DEVINFO_ADC0CAL1_5VDIFF_OFFSET_MASK) >>
            _DEVINFO_ADC0CAL1_5VDIFF_OFFSET_SHIFT) << _ADC_CAL_SINGLEOFFSET_SHIFT;
    adc->CAL = cal;
    break;

  case adcRef2xVDD:
    /* Gain value not of relevance for this reference, leave as is */
    cal  = adc->CAL & ~_ADC_CAL_SINGLEOFFSET_MASK;
    cal |= ((DEVINFO->ADC0CAL2 & _DEVINFO_ADC0CAL2_2XVDDVSS_OFFSET_MASK) >>
            _DEVINFO_ADC0CAL2_2XVDDVSS_OFFSET_SHIFT) << _ADC_CAL_SINGLEOFFSET_SHIFT;
    adc->CAL = cal;
    break;

  /* For external references, the calibration must be determined for the */
  /* specific application and set explicitly. */
  default:
    break;
  }
}

 

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, di4zerus said:

У меня сигнал сущие герцы.

АЦП в микроконтроллере на номинальной частоте запускать или снижение частоты оцифровки улучшит ситуацию?

Не встречал АЦП, которые обещали лучшие характеристики при сниженной частоте. Ну и, конечно, нужно помнить о выходном сопротивлении источника сигнала, чтобы входной ток АЦП не вносил чрезмерную погрешность.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, jenya7 said:

о. нашел. без ИОН.

Ого. Калибровочка подлиннее будет.

1 hour ago, scifi said:

Ну и, конечно, нужно помнить о выходном сопротивлении источника сигнала, чтобы входной ток АЦП не вносил чрезмерную погрешность.

О! Не могли бы Вы подробнее объяснить.

У меня операционник до АЦП стоит (AD8605). Мне между ним и АЦП нужно ещё сопротивление воткнуть, получается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 minutes ago, di4zerus said:

У меня операционник до АЦП стоит (AD8605). Мне между ним и АЦП нужно ещё сопротивление воткнуть, получается?

Наоборот. Если бы было споротивление, его нужно было бы учитывать. Выход ОУ низкоомный, он способен запитывать вход АЦП при любой частоте преобразований.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И всё же, есть у кого-нибудь опыт установки EFM32 в промышленные приборы. Чтоб industrial, так industrial.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Моя промышленность - это -1...+40 градусов и возможное нахождение в полуметре от 75 кВт нагревателя с тиристорным управлением.

Если не секрет, в оборудовании какого типа Вы их применяете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, di4zerus said:

И всё же, есть у кого-нибудь опыт установки EFM32 в промышленные приборы. Чтоб industrial, так industrial.

уточните Ваш вопрос! Какие требования к устройство? Требования надежности?

По вашему контроллер рассчитанный на использование в температурном диапазоне -40 to +125°C (из даташита на  EFR32BG1P333F256IM48-C0 ) предназначен для детских игрушек?

 

UPD: долго писал, уже ответили. Тогда да! подойдет! Но в данном случае не все от контроллера зависит, требованиям надежность должны удовлетворять все компоненты, то-есть все устройство, в том числе плата и корпус.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, di4zerus сказал:

И всё же, есть у кого-нибудь опыт установки EFM32 в промышленные приборы. Чтоб industrial, так industrial.

Можно вот как поступить. Известен официальный поставщик этих микросхем в России. И можно туда так вежливо позвонить, сказать что будете покупать только у них и много... и спросить, продают ли они микросхемы в исполнении "industrial", а не только в коммерческом. А потом так же вежливо попросить их дать пару телефонов тех, кто применяет, чтобы выяснить "кое-какие технические детали"... Ну и позвонить, а может быть даже и подъехать, поговорить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Integro said:

Но в данном случае не все от контроллера зависит, требованиям надежность должны удовлетворять все компоненты, то-есть все устройство, в том числе плата и корпус.

Вы почему-то не упомянули самое главное: кривизну рук (или отсутствие таковой).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 22.10.2018 в 21:28, di4zerus сказал:

Как у них с АЦП. Шумное? Можно ли использовать для такого разрешения?

Как-то странно - область применения озвучена типа "серьёзная", а денег на то чтобы закупить отладочные платы для планируемого МК и потестить реальный МК на них - нету. И выбор делается на основании отзывов на некоем форуме. Отзывов непонятно от кого и какой степени достоверности...  %-)

 

31 минуту назад, iosifk сказал:

А потом так же вежливо попросить их дать пару телефонов тех, кто применяет, чтобы выяснить "кое-какие технические детали"... Ну и позвонить, а может быть даже и подъехать, поговорить...

А Вам продаваны так и раскрывают "кто применяет"? Обычно они вроде ссылаются на коммерческую тайну.... Если только не совсем ручные-прикормленные  ;))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, jcxz сказал:

А Вам продаваны так и раскрывают "кто применяет"? Обычно они вроде ссылаются на коммерческую тайну.... Если только не совсем ручные-прикормленные  ;))))

Не знаю, как другие, а я в таких случаях старался помочь. Уж если не свести напрямую, то запросить у знакомых помощи для клиента никогда не отказывал..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 22.10.2018 в 21:28, di4zerus сказал:


Вообще, в виду простоты прибора, хотел делать на MSP430.

 

 

 

Если речь о оцифровке медленных сигналов и о простом приборе - почему бы не сделать на STM8 ? Стоит копейки, жрет мало... Разве что ради освоения ARM ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, jcxz said:

Как-то странно - область применения озвучена типа "серьёзная", а денег на то чтобы закупить отладочные платы для планируемого МК и потестить реальный МК на них - нету. И выбор делается на основании отзывов на некоем форуме. Отзывов непонятно от кого и какой степени достоверности...  %-)

Вообще то я не фирма, потому и денег на инструмент не много. И производство, на котором я работаю, не относится к разработке электроники. С отладочными платами туго (за более или менее приемлемую цену, пытался заказать с texas instruments - не пропустили на нашей таможне).

Но есть проблема. Решение которой позволит облегчить мой физический труд. 

1 hour ago, rx3apf said:

Если речь о оцифровке медленных сигналов и о простом приборе - почему бы не сделать на STM8 ? Стоит копейки, жрет мало... Разве что ради освоения ARM ?

MSP430 тогда уж. У меня аналоговая часть есть. Насчёт копеек, спорно конечно - с ARM цены примерно равны (где-то в начале сравнивал цены с EFM32 cortex M4F и MSP430). Да и народ везде ARM пихает теперь. Думаю, с ними будет банально легче.

1 hour ago, iosifk said:

Не знаю, как другие, а я в таких случаях старался помочь. Уж если не свести напрямую, то запросить у знакомых помощи для клиента никогда не отказывал..

Только утром подумал, что было бы неплохо обменять немного знаний и опыта, например, на коньяк:)

Как только что то конкретное получиться, естественно, буду искать критику. На этом форуме, обычно не отказывают:) Спасибо Вам всем за отклик, кстати!

Изменено пользователем di4zerus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...