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

STM32F3-Discovery, не работает ADC1

На DAC Ch1 вывожу аппаратно созданный треугольник.

Соединил выход DAC Ch1 (PA4) со входом ADC1_IN3 (PA2) перемычкой.

Результат АЦП вывожу на DAC Ch2 (PA5), задействованы DMA1, прерывание от него, флаг, потом программно записываю из массива в DAС...

Не могу добиться нормальной работы ADC1, пока не задам тактовую частоту меньше 72 MHz.

Более-менее нормально работает при тактах 18 MHz. При 36 MHz "ломает" сигнал,

а при 72 MHz - вообще, сплошной шум, преимущественно выше входного сигнала.

Считаю это аппаратной ошибкой STM32F303VC, Rev Y.

 

Есть в datasheet упоминание про каналы PA2 и др., табл. 67, что они не совсем fast. Это не то.

 

upd. ADC2 ведет себя так же плохо! Видимо, где-то я просчитался.

Странно, что в двухканальном режиме (interlive) второй АЦП работал нормально. Потому и возникло подозрение насчет первого.

 

Errata смотрел, делал DMA раздельными, не помогло.

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


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

...Не могу добиться нормальной работы ADC1, пока не задам тактовую частоту меньше 72 MHz. ...

 

оно?

превышение частоты

 

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


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

и оно же

http://electronix.ru/forum/index.php?showtopic=119183

 

вы же участвовали в той дискуссии? Или вы пропустили момент где ТС сказал что частоту загнал потому АЦП и не работало?

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


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

оно?

превышение частоты

Нет, у меня задана частота PLL 72 MHz, она же и на АЦП идет. Что установлено именно 72 MHz, видел по многим сигналам - MCO, выход с DAC. Здесь всё точно.

 

и оно же

вы же участвовали в той дискуссии? Или вы пропустили момент где ТС сказал что частоту загнал потому АЦП и не работало?

Про частоту уже сказал. Про выходное сопротивление источника - ЦАП - посмотрю еще раз, но пока не похоже:

• Задавал разную длительность выборки, при тактовой АЦП 72 МГц - удовлетворительно не получалось - шум, пики на весь размах питания.

• Задал тактовую АЦП 36 МГц - выходной сигнал (фрагмент треугольника после ADC->DMA->CPU->DAC) стал кривеньким, и по амплитуде меньше входного.

• Задал тактовую АЦП 18 MHz - выходной сигнал - какой и должен быть (надо посмотреть при минимальной длительности выборки)

• Входной треугольник (с ЦАП) не менялся, и выбросов на нем я не наблюдал (взгляну еще раз), независимо от частоты АЦП.

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

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


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

Несколько снимков с осциллографа. Для тактовой частоты АЦП 72 МГц, и разного времени выборки в тактах.

Желтый сигнал - входной для АЦП1, треугольник со встроенного ЦАП1, буфер включен. Когда на нем "шум" - это время работы АЦП, накапливается массив. После этого - вывод.

Зеленый сигнал - выходной, программный вывод массива на ЦАП2.

181.5 такта

post-10362-1395206554_thumb.png

фрагмент

post-10362-1395206567_thumb.png

19.5 такта

post-10362-1395206529_thumb.png

фрагмент

post-10362-1395206539_thumb.png

7.5 такта

post-10362-1395206498_thumb.png

фрагмент

post-10362-1395206515_thumb.png

Если же задать тактовую частоту 18 MHz, АЦП работает без нареканий, даже при выборке 1.5 такта.

Чудо?

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


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

Так. Передаю по DMA по одному слову с ADC1 на DAC. Все работает нормально с любой частотой и временами выборок.

post-10362-1395216292_thumb.png

Терзают смутные сомненья, что проблема в DMA. Там биты Circular есть и в регистрах DMA и в ADC...

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


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

"Все чудесатее и чудесатее".

После заполнения массива DMA выдает запрос прерывания. В прерывании устанавливаю флаг FrameReady. В основном цикле проверяю этот флаг, и если он есть, останавливаю АЦП командой

ADC1->CR = ADC_CR_ADSTP;

Дальше переписываю массив в DAC.

Когда закомментировал ADC1->CR = ADC_CR_ADSTP; все стало нормально работать.

Не пойму, АЦП у меня останавливается или нет. :)

 

upd. Видимо, все же, останавливается. Потому, что без ADC1->CR |= ADC_CR_ADSTART; в основном цикле новый кадр не собирается.

Как? Нигде его не торможу!

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


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

Доложу, чего достиг.

На АЦП подаю тактовую частоту 72 МГц, запускаю по событию переполнения от таймера 2. Результаты преобразования записываются в массив через ПДП.

В одноканальном режиме - работает согласно документации.

В двухканальном interleave режиме - при разрешении 12 битов, только до частоты 4 МВыб/с (х 2 для двух каналов), вернее, до 72 / 17 = 4,23... если не нужна "круглая" частота. Независимо от ПДП совместного, или поодиночке для каждого АЦП, как предлагается в STM32F303xx silicon limitations. Уменьшая разрядность до 6 битов, получил частоту 6 МВыб/с (х 2). На более высоких частотах ПДП не успевает перебрасывать слова.

Прихожу к выводу, что пользы от двухканального режима меньше, чем хотелось бы. В одноканальном могу иметь 4,8 МВыб/с, вплоть до 72 / 14 = 5,14... Для 6 битов - до 9 МВыб/с.

DELAY, определяющая сдвиг между запусками АЦП1 и АЦП2, позволяет задать его ровно в середине времени запуска АЦП1 только для двух частот дискретизации, 4,8 МВыб/с и 8 МВыб/с. Первая частота невозможна для 12 битов, а вторая - вообще. В остальных случаях сдвиг будет отличаться на полтакта 72 МГц.

 

Буду ждать ревизии...

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


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

ViKo, здравствуйте.
Сталкнулся с точно такой же проблемой, как у вас.
Не помните, что точно сделали что бы АЦП заработал на 72 МГц в одноканальном режиме?

Если не жалко, можете поделиться исходниками? меня интерисует только настройка АЦП и ДМА.
 

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


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

19 часов назад, Nafania сказал:

ViKo, здравствуйте.
Сталкнулся с точно такой же проблемой, как у вас.
Не помните, что точно сделали что бы АЦП заработал на 72 МГц в одноканальном режиме?

Если не жалко, можете поделиться исходниками? меня интерисует только настройка АЦП и ДМА.
 

Вот последний исходник. Если разберетесь. Там лишнего много. 

F3Disco_Scope_v15.zip

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


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

Я уже сам забыл, что там было. И вникать пока нет ни желания, ни времени. Полагаю, сам был неправ, коль оно в конце концов заработало, как надо.

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


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

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

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

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

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

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

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

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

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

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