Jump to content

    
Sign in to follow this  
gr9

STM32 и ADC

Recommended Posts

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

Share this post


Link to post
Share on other sites
Наверное что-то не заметил, но как быть в такой ситуации. Например, запущена группа каналов в циклическом режиме с прерыванием от аналогового вотчдога. Если такое прерывание происходит, то как выяснить от какого именно входа АЦП он пришел? Должен же быть регистр, где хранится номер текущего или последнего канала?

Похоже, что никак. Прерывание "окончание преобразования" вызывается когда заканчивается преобразование по всем каналам (а зачем чаще?), а вот аналоговый ватчдог один на все каналы, и наиболее логично может применяться для какого-то одного канала. Хотя, имхо, это может иметь смысл только при высоких скоростях преобразования, иначе удобнее это сделать программно. Отдельного же регистра, где можно узнать номер текущего канала, я не нашел. Да и с учетом времени входа в прерывание вероятность переключиться на "следующий" канал за это время довольно высока, т.е. этот способ не гарантировал бы правильность определения номера канала.

 

Сам я стм32 еще не применял (работал с ихним стр911, впечатления положительные), но уже заложил в один проект и примеряюсь к другому. Имеется встречный вопрос: насколько хорош АЦП у стм32? Интересуют шумовые характеристики в первую очередь.

Share this post


Link to post
Share on other sites

Спасибо. Значит я не ошибся.

Насчет АЦП могу высказать только личные впечатления (специалисты, возможно, поправят и дополнят). Сравнивая с AVR, очень важным оказалось правильная разводка, как можно больше конденсаторов на своих местах и фильтрация входных сигналов, т.к. шумы цифровой части, особенно на высоких частотах, легко ловятся АЦП. В принципе, удалось добиться, что шумы не превышали +-2-3 уровня квантования. Правда рядом работала мощная силовая схема (в идеальных условиях можно и +-1LSB получить)). В общем если расчитывать, что АЦП берется с небольшим запасом, то вполне приемлемо. Правда, если важно быстродействие, то ядро для такого потока данных все-таки слабовато (в AVR в таких случаях можно было уйти в ассемблер)).

Edited by gregory812

Share this post


Link to post
Share on other sites
А что мешает в стм32 уйти в асемблер ?

 

Во-первых, еще не освоенность этой области, а во-вторых, как мне кажется, более запутанный код ассемблера АRM в купе с конвеерами и т.п. может привести к непредсказуемым ошибкам. Хотя здесь все зависит от опыта. Да и была надежда, что на такой мощи можно будет забыть про низкоуровневое программирование )).

Edited by gregory812

Share this post


Link to post
Share on other sites

Всё же интересует чуть более подробная информация об АЦП, если можно. Какую частоту выборки использовали, что было источником сигнала, что опорой, и какой шум был получен. Сравнение с AVR только запутало ситуацию: там АЦП 10-разрядный, здесь 12-разрядный. Так шум, указанный Вами, исходя из 10 или 12 разрядов? И "+-2-3 уровня квантования" - это значит 4-6 ед. от пика до пика? А каков характер этого шума? И спектр случайно не анализировали?

Share this post


Link to post
Share on other sites
Всё же интересует чуть более подробная информация об АЦП, если можно. Какую частоту выборки использовали, что было источником сигнала, что опорой, и какой шум был получен. Сравнение с AVR только запутало ситуацию: там АЦП 10-разрядный, здесь 12-разрядный. Так шум, указанный Вами, исходя из 10 или 12 разрядов? И "+-2-3 уровня квантования" - это значит 4-6 ед. от пика до пика? А каков характер этого шума? И спектр случайно не анализировали?

 

Для простой проверки АЦП (скорость 1МГц) подавал на один из входов постоянное напряжение взятое с 10кОм потенциометра от 3.3В полученное со стабилизатора IRU1117-3.3. Это же напряжение использовал как опорное. От отсчета к отсчету увидел перепады до 2ед., иногда 3 ед. Форма шума характеризовалась именно тем, что каждое следущее преобразование давало полный размах отклонения.

Замечания по поводу AVR относились не к сравнению характеристик в лоб как таковых, а к необходимости приложить больше усилий к качеству разводки и схемотехники (например, у меня в 10 разрядном AVR отклонения были ок. 1ед. и то, если попасть на границу между уровнями квантования). На другом форуме сказали, что АЦП "стоит намертво", поэтому рекомендую испытать самому и решить для себя подходит или нет, а заодно высказать свои впечатления.

Edited by gregory812

Share this post


Link to post
Share on other sites

Ни как не могу понять, каким образом выбираются опорные напряжения для ADC ?

У меня STM32L151 в 48 пиновом корпуса, соответственно ног Vref+ Vref- нет . Но куда они подключенны

внутри и как ими управлять ? Прочитал про ADC в документации , но том ни слова про то что бы опортное напряжение выбиралось в каком-то регистре.

Share this post


Link to post
Share on other sites

из CD00277537.pdf

 

VREF+ can be internally connected to VDDA and VREF- can be internally connected to VSSA, depending on the package.

Refer to Section 4: Pin descriptions for further details.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this