реклама на сайте
подробности

 
 
> ADC+DMA в STM32F107, Глюк DMA??
pr0m
сообщение Jan 31 2011, 11:36
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 183
Регистрация: 22-06-05
Из: Таганрог
Пользователь №: 6 233



Всем привет.

Играюсь со слегка модицицированным примером для STM32F10x "RegSimul_DualMode" для ADC (из стандартной STM32F10xFWLib).
Там используются 2 ADC в режиме DualMode, 2 группы по 2 канала, после окончания конверсии каждой пары 32-битный результат складывается посредством DMA1 в буфер в ОЗУ. Так вот, я его переделал в том смысле, что зациклил процесс опроса (а не однократный опрос, как в оригинальном примере), после чего обнаружил несколько шокирующую картину - положение данных опроса в ОЗУ меняется от опроса к опросу, т.е. в том месте, где я ожидаю увидеть результат от каналов 1,2 через раз оказываются данные каналов 3,4, и наоборот.
Что это??? Только бы не глюк контроллера.... Собираюсь использовать его именно в режиме циклического опроса регулярной группы каналов АЦП.
Прилагаю кейловский проект.
Прикрепленные файлы
Прикрепленный файл  Project.rar ( 25.63 килобайт ) Кол-во скачиваний: 29
 


--------------------
Правильно поставленный вопрос - половина ответа...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
akimych
сообщение Feb 12 2011, 20:35
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073



Цитата
Уже решил задачу, но посмотреть как другие делают, всегда полезно. Выложите, пожалуйста.

В чем все же был косяк?

2 ацп там могут иметь смысл для оцифровки одновременно сигнала и опорного напряжения, у STM-а же "опорное" - это по сути "эталонное", т.е. просто еще один канал, который можно мерить.

Я тут было экспериментировал на F100, у него 1 ацп, оцифровывал тоже на частоте ~100кГц. На слабом сигнале проявляются помехи по питанию. Я пытался это как-то устранить с помощью "опорного", но приходится мерить по очереди, не одновременно. Так по большому счету ничего хорошего не получилось. Иногда помогает, а иногда нет.
Go to the top of the page
 
+Quote Post
pr0m
сообщение Feb 13 2011, 07:56
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 183
Регистрация: 22-06-05
Из: Таганрог
Пользователь №: 6 233



Цитата(akimych @ Feb 12 2011, 23:35) *
В чем все же был косяк?

В следующем: в том варианте я реагировал на EOC в обработчике прерывания там забирал данные АЦП, переинициализировал и перезапускал ДМА, а в самом его начале дополнительно проверял while(DMA->CNTDR != 0), и здесь появлялись "чудеса" (перемешивание порядка каналов). Вместо ожидаемого значения DMA->CNTDR равным 0 или 1 максимум были любые от 1 до 3 (напомню, 2АЦП*3 канала=3 пересылки). Оказалось, забыл в ходе экспериментов при начальной инициализации ДМА сменить CircularMode на Noncircular sm.gif

Цитата(akimych @ Feb 12 2011, 23:35) *
2 ацп там могут иметь смысл для оцифровки одновременно сигнала и опорного напряжения, у STM-а же "опорное" - это по сути "эталонное", т.е. просто еще один канал, который можно мерить.

Дело в том, что в моём случае желательно получить макс. частоту дискретизации, 160 кГц оптимально. При тактовой АЦП 12МГц, миним. времени преобразования 14 тактов и последовательном переборе 6 каналов T=1/12*14*6 = 7мкс, а 160кГц=6.25мкс. Вот и пригодился DualMode, в 2раза быстрее. А Vref действительно тоже понадобится, но думаю измерять его где-то между делом, с большим интервалом чтобы учесть температурный дрейф, да и то не уверен, может будет достаточно один раз при старте его померить.
Кстати, моё железо не позволяет испытать характеристики АЦП (демо-плата, голые ноги, выведены на кросс-контакты, никаких фильтров), сделал пару наблюдений (один из каналов на внутреннем Vref для экспериментов) :
1) взаимное влияние на результат соседних соседних входов, т.е. допустим 5 моих входов просто болтаются в воздухе, на выходах АЦП вижу шумы определённого уровня. При закорачивании на землю одного из входов, уровни шумов соседних каналов тоже меняются. Думаю, особого криминала в этом нет,всё-таки вношу ёмкость. В реальности перед каждым входом будет ФНЧ с низким выходным.
2) для точного измерения внутреннего Vref 1.5...7 тактов на сэмплирование мало. Результат получается меньше. В даташите расплывчато дан пример чтения датчика температуры, там сказано про время сэмплирования 17.5мкс, видимо это и к Vref относится.

Цитата(akimych @ Feb 12 2011, 23:35) *
Я тут было экспериментировал на F100, у него 1 ацп, оцифровывал тоже на частоте ~100кГц. На слабом сигнале проявляются помехи по питанию. Я пытался это как-то устранить с помощью "опорного", но приходится мерить по очереди, не одновременно. Так по большому счету ничего хорошего не получилось. Иногда помогает, а иногда нет.

Тут Вы видимо исходили из предположения о синфазности помехи и по сигналу, и по внутреннему Vref?
Вот тут имхо неправильный посыл "На слабом сигнале проявляются помехи по питанию." - они есть независимо от силы сигнала sm.gif Ну что делать, это же не дельта-сигма какая с дифф. входами. Фильтровать цепи питания, проявить мастерство в разводке платы (цифровые и аналоговые земли разделить и соединить звездой в одной точке, идущей к источнику питания). Ничего нового не сообщаю... А фильтр по входу достаточно хороший был? Может алиас какой пролезал?

Сообщение отредактировал pr0m - Feb 13 2011, 08:11


--------------------
Правильно поставленный вопрос - половина ответа...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- pr0m   ADC+DMA в STM32F107   Jan 31 2011, 11:36
- - scifi   Разбираться времени нет. Прикладываю свой модуль А...   Jan 31 2011, 11:42
|- - pr0m   Цитата(scifi @ Jan 31 2011, 14:42) Разбир...   Jan 31 2011, 20:03
- - akimych   ЦитатаПрилагаю кейловский проект. Вот что мне не н...   Jan 31 2011, 16:01
- - akimych   ЦитатаВсё равно у меня в тылу остался вопрос, пред...   Feb 1 2011, 17:16
|- - pr0m   Цитата(akimych @ Feb 1 2011, 20:16) Не мо...   Feb 1 2011, 20:19
- - akimych   ЦитатаРазве такое возможно? Сложно сказать. Я не д...   Feb 1 2011, 22:23
|- - pr0m   Цитата(akimych @ Feb 2 2011, 01:23) Хм, а...   Feb 2 2011, 09:48
- - akimych   Правильно, я что-то стормозил, счетчик же к нулю с...   Feb 2 2011, 20:13
- - kan35   Во первых размер буфера посчитан не верно: КодDMA_...   Feb 12 2011, 05:14
|- - pr0m   Цитата(kan35 @ Feb 12 2011, 08:14) Во пер...   Feb 12 2011, 11:43
- - kan35   да, то, что идет работа синхронно 2 каналов я не у...   Feb 12 2011, 17:52
|- - pr0m   Цитата(kan35 @ Feb 12 2011, 20:52) да, то...   Feb 12 2011, 19:00
- - akimych   Да не, я пока разбирался, вдруг заметил, что если ...   Feb 13 2011, 11:26
|- - pr0m   Цитата(akimych @ Feb 13 2011, 14:26) Да н...   Feb 13 2011, 16:20
- - kan35   Работа ADC1 через HT и FT прерывания. Оцифровка 3 ...   Feb 14 2011, 06:19
- - akimych   ЦитатаТогда для эксперименту одновременно в DualMo...   Feb 15 2011, 11:05


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 03:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016