Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: АЦП: 8 выборок последовательно
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
repairDV
Здравствуйте. У 56F8xx-серии микроконтроллеров Freescale имеется 12-разрядная АЦП. АЦП-шка, конечно, дрянь, в том смысле, что если делать однократную выборку, то результат не имеет ничего общего с истиной. Freescale объясняет это влиянием паразитных емкостей во входных цепях. Но они вышли из положения другим способом. У АЦП имеется возможность делать последовательно 8 выборок, при этом под результат каждой имеются свои регистры запоминания. Истинное значение получается уже в двух последних выборках, все остальные можно смело игнорировать. Лично я делаю так: складываю результаты 7 и 8 выборок, делю на 2 и получается результат, по стабильности аналогичный АЦП 12-тактовых 51-х контроллеров. А что может быть стабильнее 12-тактовой 51-й серии?
Таким образом, если время одной выборки равно 1/5мгц = 200 нс, то время 8 выборок 200нс*8 = 1,6 мкс.
Есть ли у других фирм микроконтроллеры с такими возможностями?
Сергей Борщ
Цитата(repairDV @ Apr 9 2008, 08:35) *
Есть ли у других фирм микроконтроллеры с такими возможностями?
Из тех, с которыми я работал: MSP430 - 16 ячеек, для каждой индивидуально указывается номер канала и входы опоры. AT91SAM7 - при чтении через DMA перебирает по кругу все включенные каналы. Количество запомненных результатов ограничивается только размером свободной памяти.
SSerge
TMS320F28xx
из доки на TMS320F28044:
· 12-bit ADC core with built-in S/H
· Analog input: 0.0 V to 3.0 V (Voltages above 3.0 V produce full-scale conversion results.)
· Fast conversion rate: 80 ns at 25-MHz ADC clock, 12.5 MSPS
· 16-channel, MUXed inputs
· Autosequencing capability provides up to 16 "autoconversions" in a single session. Each conversion
can be programmed to select any 1 of 16 input channels
· Sequencer can be operated as two independent 8-state sequencers or as one large 16-state
sequencer (i.e., two cascaded 8-state sequencers)
· Sixteen result registers (individually addressable) to store conversion values
· Multiple triggers as sources for the start-of-conversion (SOC) sequence
– S/W - software immediate start
– ePWM start of conversion
– XINT2 ADC start of conversion
· Flexible interrupt control allows interrupt request on every end-of-sequence (EOS) or every other EOS.
· Sequencer can operate in "start/stop" mode, allowing multiple "time-sequenced triggers" to
synchronize conversions.
· SOCA and SOCB triggers can operate independently in dual-sequencer mode.
· Sample-and-hold (S/H) acquisition time window has separate prescale control.

Самая интересная его особенность - наличие двух схем выборки-хранения (S/H) которые могут работать независимо. Это позволяет, например, сделать одновременную выборку двух сигналов а потом оцифровать их по очереди. Только DMA ещё для полного комплекта не хватает.
repairDV
Цитата(Сергей Борщ @ Apr 9 2008, 18:37) *
MSP430 - 16 ячеек, для каждой индивидуально указывается номер канала и входы опоры. AT91SAM7 - при чтении через DMA перебирает по кругу все включенные каналы. Количество запомненных результатов ограничивается только размером свободной памяти.

Я пропустил: имелся в виду один канал. Последовательно 8 выборок по одному каналу.

Здесь смысл в том, что точной оцифровке при одной выборке мешают паразитные влияния, если сделать подряд 8 выборок по одному каналу, то ёмкости по входам успевают зарядиться-разрядиться и мы в последних выборках имеем реальные значения.
SSerge
Цитата(repairDV @ Apr 9 2008, 15:50) *
Я пропустил: имелся в виду один канал. Последовательно 8 выборок по одному каналу.

Для MSP430 с его ADC12 это просто частный случай. Можно запрограммировать выборку с разных аналоговых входов в любом порядке, в том числе и всегда с одного и того-же.
Более того, DMA можно заставить пересылать данные из регистров результата АЦП не только в ОЗУ, но и в регистр аппаратного умножителя-сумматора. После старта АЦП останется только дождаться прерывания по окончанию пересылки канала DMA и забрать из умножителя-сумматора готовую сумму всех N отсчётов.

update:
Что же до зарядки внутренних ёмкостей, то здесь это выглядит несколько иначе. При низкоомном источнике сигнала время выборки для получения 12-разрядной точности порядка 1мкс.
Если же у источника внутренне сопротивление большое то совсем не обязательно делать подряд несколько преобразований, можно просто увеличить время выборки, оно программируется в довольно широких пределах ( 4, 8, 16 ... 1024 такта).

Вообще, на MSP430 очень интересная периферия, конструкция из таймеров, АЦП, ЦАП, DMA и MAC (умножитель 16*16->32 с сумматором-аккумулятором) позволяет многое делать вообще без участия процессора. К хорошему очень быстро привыкаешь и этой гибкости уже начинает не хватать.. smile.gif
repairDV
Цитата(SSerge @ Apr 9 2008, 20:07) *
Что же до зарядки внутренних ёмкостей, то здесь это выглядит несколько иначе. При низкоомном источнике сигнала время выборки для получения 12-разрядной точности порядка 1мкс.
Если же у источника внутренне сопротивление большое то совсем не обязательно делать подряд несколько преобразований, можно просто увеличить время выборки, оно программируется в довольно широких пределах ( 4, 8, 16 ... 1024 такта).

И результат реальный?

Если напряжение по входу АЦП постоянное, то меняются ли показания АЦП и на сколько разрядов?
Сергей Борщ
Цитата(repairDV @ Apr 9 2008, 12:44) *
Если напряжение по входу АЦП постоянное, то меняются ли показания АЦП и на сколько разрядов?
12 бит. Я получал +-1LSB. На входе стоял усилитель с Ку~100, сколько из этого шума вносил он - затрудняюсь сказать.
repairDV
Цитата(Сергей Борщ @ Apr 9 2008, 21:05) *
12 бит.

Мать честная...
А у 56f803 у меня на модели - изредка прыгает только младший разряд.
MrYuran
Цитата(repairDV @ Apr 9 2008, 13:18) *
Мать честная...
А у 56f803 у меня на модели - изредка прыгает только младший разряд.

ну дык вам и ответили - +/- 1 LSB
Сергей Борщ
Цитата(repairDV @ Apr 9 2008, 13:18) *
А у 56f803 у меня на модели - изредка прыгает только младший разряд.
Это если в цикле опрашивать 4 канала, то результаты для одного канала отличаются на единицу младшего разряда от цикла к циклу? О чем тогда был первый пост?
repairDV
Нет, опрос в цикле идёт по одному каналу. Делается последовательно 8 выборок.

Если делать по одному каналу одну выборку, то показания АЦП скачут где-то в пределах 6 младших разрядов. Просто из чисто визуального наблюдения через стендовую программу на PC.
SSerge
У меня на MSP430 было такое, что результаты АЦП зависели от порядка опроса каналов и от работы других устройств. Оказалось - отсутствовали конденсаторы на ноге Vref, поставил - и все чудеса сразу же прекратились.
repairDV
Цитата(SSerge @ Apr 9 2008, 22:20) *
Оказалось - отсутствовали конденсаторы на ноге Vref, поставил - и все чудеса сразу же прекратились.

Кстати, этот контроллер я не изучал, сколько тактов кварца в машинном цикле?
Сергей Борщ
Цитата(repairDV @ Apr 9 2008, 14:01) *
Если делать по одному каналу одну выборку, то показания АЦП скачут где-то в пределах 6 младших разрядов.
Так может стоило спросить, какой контроллер с первой же выборки дает правильное значение? smile.gif Очень похоже, что у вас не усперает зарядиться конденсатор УВХ. Контроллер не позволяет увеличить время выборки?


Цитата(repairDV @ Apr 9 2008, 14:26) *
Кстати, этот контроллер я не изучал, сколько тактов кварца в машинном цикле?
Один. Но обращение к памяти требует до 6 циклов.
repairDV
Цитата(Сергей Борщ @ Apr 9 2008, 22:54) *
Так может стоило спросить, какой контроллер с первой же выборки дает правильное значение? smile.gif

А я и так знаю. LPC935
Цитата(Сергей Борщ @ Apr 9 2008, 22:54) *
Очень похоже, что у вас не усперает зарядиться конденсатор УВХ. Контроллер не позволяет увеличить время выборки?

Пытался в пределах требований по работе девайса, но - бесполезно. Здесь же ещё нужно быстродействие.
Кстати, есть контроллер однотактовый из 51 серии - 8051F350 Silabs с 24-разрядной АЦП, так там, вроде, как время выборки не увеличивай, всё равно толку нет. Можно смело младшие 8 разрядов игнорировать.
mdmitry
Использовал MC56F8346. 14 каналов АЦП в работе, точность предельная мне была не нужна. На входах стояли RC-фильтры. каналы опрашивались последовательно в прерываниии с усреднением результата. Время преобразования установливается в широких пределах (описано в документации)

Если пользуетесь PE, то будьте очень осторожны: большие накладные расходы в программе и могут быть проблемы в прерываниями, если задействовано много периферии.
repairDV
Цитата(mdmitry @ Apr 10 2008, 06:14) *
Использовал MC56F8345.

О-о-о, как вы мне удачно попались... Можно несколько вопросов - но не по АЦП? В принципе, я думаю, по интерфейсам эта серия вся однотипная. Но у меня вопрос про другое. Похоже, загробил бесплатный сэмпл MC56F8356 от Freescale, правда, так и не понял, почему. У них в даташите неявно описано, что вывод "VDDA_OSC_PLL" должен быть обязательно подключён к "+" питания. Я думал, что это выход, а не вход. Возможно, из-за этого что-то вылетело. Я сразу взял тактовую частоту от генератора "KXO", у него полный размах по амплитуде. Как я понял, т.к. питание не было подано на этот вывод "VDDA_OSC_PLL", там что-то не выдержало. Во всяком случае, частоты на выходе "CLKO" нет. Короче, CodeWarrior пишет: "Core not responding". Либо - другой вариант: паял незаземлённым паяльником, хотя странно. Процессора других фирм вроде такое выдерживают. Неужто этот проц такой уж нежный?
Короче, вопрос: у вас не было с этим процем аналогичных проблем? Вы вывод "VDDA_OSC_PLL" подключали сразу?
mdmitry
VDDA_OSC_PLL ПОДКЛЮЧЕН на питание через отдельный фильтр, который описан в документации на оценочную плату (LC-фильтр). В целом плата (4 слоя) проектировалась и разводилась с оглядкой на схему оценочной платы. На VDDA_ADC отдельное питание через фильтр, у нас вообще стоит отдельные стабилизатор на аналоговую часть. Опорное напряжение внешнее от REF193GS.

Была проблема с запуском генератора. Некоторые кварцы не запускались без параллельного резистора 1 МОм, что описано в документации.

Коллега разводил и паял на станции. Один кристалл кажется, сдох, но причину не помню. Скорее я сильно над ним поиздевался smile.gif Платы прошли испытания в составе блока на тряску, температуру, влажность без проблем.

Уточнение MC56F8346, а не MC56F8345. Спутал smile.gif
repairDV
Спасибо. Ладно, будем думать дальше. Пока жду КИТы на 56F8323 и 56F8013.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.