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

 
 
> 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 1 2011, 17:16
Сообщение #2


Участник
*

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



Цитата
Всё равно у меня в тылу остался вопрос, предыдущий пост.

Этот?
Цитата
В чём порочность подхода?


Не может ли там быть каким-то образом, что перезапуск дма получился где-то в середине? По идее достаточно одно такого глюка, что бы началась каша.
АЦП выдает 2 значения подряд, а дма уже не в 0, на 1ом будет флаг ТС1, пересброс дма, по сути операция эта очень быстрая, ацп не успеет 2ое значение потерять, 2ое значение ляжет первым, после чего 1ое (новое) значение пойдет на 2ое место, опять готовность дма и всё повторяется. Если буфер не 2, а больше значений, то соотв. сдвижка будет другая. И никуда она не денется и период таймера не повлияет.
Как вариант, можно попробовать ловить флаг не от дма, а от ацп, он его выдаст после оцифровки всей группы каналов. Тут уже глюков быть не должно.
Заодно можно проверить, если от ацп флаг есть, а от дма нету (в течение некоторого адекватного времени, весьма короткого), значит имеет место косяк.
Go to the top of the page
 
+Quote Post
pr0m
сообщение Feb 1 2011, 20:19
Сообщение #3


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

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



Цитата(akimych @ Feb 1 2011, 20:16) *
Не может ли там быть каким-то образом, что перезапуск дма получился где-то в середине? По идее достаточно одно такого глюка, что бы началась каша.

Очень на то похоже, другого объяснения не вижу.
Цитата(akimych @ Feb 1 2011, 20:16) *
АЦП выдает 2 значения подряд,

Разве такое возможно? Каналы перебираются последовательно, после каждого преобразования i-го канала запрос к DMA. В моём случае АЦП на максимальной скорости - 12МГц, 14 тактов - одна конверсия 1.17мкс. Период триггера запуска АЦП от таймера >50мкс. А пересылка посредством DMA одного 16-бит слова из АЦП со всякими там арбитражами-подтверждениями (тонкостей не знаю), думаю, займёт ну пусть 10 тактов системных (72МГц) - всё равно несоизмеримо с 1.17мкс.
Цитата(akimych @ Feb 1 2011, 20:16) *
а дма уже не в 0, на 1ом будет флаг ТС1, пересброс дма, по сути операция эта очень быстрая, ацп не успеет 2ое значение потерять, 2ое значение ляжет первым, после чего 1ое (новое) значение пойдет на 2ое место, опять готовность дма и всё повторяется. Если буфер не 2, а больше значений, то соотв. сдвижка будет другая. И никуда она не денется и период таймера не повлияет.

Характер сдвига несколько другой, в хаосе имеется закономерность - сдвиг циклический sm.gif - из моих 6 каналов возможны комбинации
012345-123450-234501 и т.д. И сдвиг гуляет, а не стоит на месте.
Вот такого нет: 102345,42501 и т.п.
Цитата(akimych @ Feb 1 2011, 20:16) *
Как вариант, можно попробовать ловить флаг не от дма, а от ацп, он его выдаст после оцифровки всей группы каналов. Тут уже глюков быть не должно.
Заодно можно проверить, если от ацп флаг есть, а от дма нету (в течение некоторого адекватного времени, весьма короткого), значит имеет место косяк.

Согласен полностью, выглядит самым надёжным вариантом. От АЦП конечно флаг будет, раз уж ввалились в прерывание от оного, и очень интересно поглядеть, чем в это момент занимается ДМА,все ли дела закончило. Думаю, проверка флага ТС1 обязательна, и вовсе не будет означать косяк. Важнее глянуть на счётчик передач, он должен быть не больше 1, т.е. может идти последняя передача. К сожалению, сегодня не добрался до железки, как только опробую, отрапортую.

Сообщение отредактировал pr0m - Feb 1 2011, 20:27


--------------------
Правильно поставленный вопрос - половина ответа...
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, 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 12 2011, 20:35
|- - pr0m   Цитата(akimych @ Feb 12 2011, 23:35) В че...   Feb 13 2011, 07:56
- - 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:52
Рейтинг@Mail.ru


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