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

Странное поведение АЦП stm32L476

Процедура получения данных с АЦП настроена на работу по таймеру.

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

Таймер запускает два АЦП, Готовность данных по прерыванию

ADC1->IER = ADC_IER_EOC.

Забираем данные библиотечной функцией

void HAL_ADC_ConvCpltCallback( ADC_HandleTypeDef* hadc )

Получаем несколько значений.

Проблема в том, что при рассмотрении выборки (10-20 значений) меняются не младшие биты, как можно было бы ожидать: а 4,5,6 разряды намного чаще, чем 1,2,3.

На картинке типичный случай

Clip_1_crop.jpg

С чем это может быть связано?

post-19602-1516275585_thumb.jpg

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


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

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

 

с чем угодно.

но первое что рекомендую сделать - переведите в 16сс ваши числа.

после этого задайтесь вопросами

1) а первый и третий полубайты - они адэкватны и живы (т.е. точно на входе такие напряжения вы подавали, и что будет в этих разрядах при подаче нуля, или другого уровня напряжения)?

2) размерность записи-выборке одинаковы в логике ПДП и инициализации портов?

 

дальше думаю уже сможете более интересную инфу предоставить и(или) сами уже найти-пофиксить траблу...

 

с уважением

(круглый)

 

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


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

Pavlik, а периодичность опроса какая?

Потому как согласно "errata" на этот камень:

если время между последовательными преобразованиями АЦП

превышает 1 мс, то результаты будут некорректными.

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


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

с чем угодно.

 

Оказалось действительно "что угодно", проблема связана не с кодом.

Оказалось, что в момент взятия выборки опорное напряжение просаживается примерно на 200 мВ.

Странно такое поведение stm в работе с Ref3030 (25mA) когда по линии Vref декларируется потребление 400uA.

Еще stm не любит когда аналоговая земля двигается относительно цифровой (при стабильных питающих VDD, VDDA). Конечно он такого любить и не должен, так как цифра и аналог в недрах его соединяются, но "удача - награда за смелость .." была. Следовательно никаких соединяющих землю дросселей нам не позволено, только нулевые сопротивления. Такие выводы.

Поправьте, если неправ.

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


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

Оказалось действительно "что угодно", проблема связана не с кодом.

Оказалось, что в момент взятия выборки опорное напряжение просаживается примерно на 200 мВ.

Странно такое поведение stm в работе с Ref3030 (25mA) когда по линии Vref декларируется потребление 400uA.

Еще stm не любит когда аналоговая земля двигается относительно цифровой (при стабильных питающих VDD, VDDA). Конечно он такого любить и не должен, так как цифра и аналог в недрах его соединяются, но "удача - награда за смелость .." была. Следовательно никаких соединяющих землю дросселей нам не позволено, только нулевые сопротивления. Такие выводы.

Поправьте, если неправ.

Потребление по VRef декларируется среднее, а пиковое гораздо выше, это типично для любых АЦП со взвешиванием на конденсаторах, на VRef обязателен большой внешний конденсатор. Про земли в даташите написано - не более 50мВ разницы, и вообще там много интересного написано, почитайте как-нибудь:).

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


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

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

Спасибо за ответ. В даташите не сказано, что потребление VREF среднее. Очевидно, что фактическое потребление будет зависеть от того как часто будет проводится конвертация, поэтому среднее будет зависеть от кода.

Вы правы по факту дело обстоит именно так. Просто из даташита этого не следует.

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


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

Вы правы по факту дело обстоит именно так. Просто из даташита этого не следует.

В даташите схема питания есть - на Vref два конденсатора должно быть 1uf и 0.1uF.

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


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

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

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

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

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

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

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

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

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

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