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

АЦП на Piccolo

Кому удалось правильно организовать работу АЦП в Piccolo F28027.

У меня почему то погрешность измерений достигала +/- 200 единиц АЦП.

Плата разведена идеально, контроллер запитывался от батареи постоянного тока. На вход АЦП подавался 1.5 В от батареи. Если вывод АЦП был не подключен, то броски напряжения в момент запуска достигали 150 мВ на входе АЦП, и затем наблюдался экспоненциальный спад.

Что видно на осциллограмме:

Oscilloscope.bmp

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


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

Мультиплаксор аналоговых сигналов как сконфигурирован ?

Источник опорного напряжения АЦП как сконфигурирован ?

 

Источник сигнала АЦП должен быть низкоимпедансным !

 

Если вывод АЦП был не подключен, то броски напряжения в момент запуска достигали 150 мВ на входе АЦП, и затем наблюдался экспоненциальный спад.

Похоже на разряд входной емкости.

 

 

 

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


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

 

Источник опорного был как от внутреннего питания так и от внешнего, картина не изменялась

мультиплаксор сконфигурирован последовательным запуском измерения.

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


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

Ого. Да тут чисто схемотехнические просчеты. Либо с питанием что-то, либо - выход формирователя входного напряжения имеет высокое выходное сопротивление. Схему (с номиналами) в студию. Да и код не помешает. Я работал с этими АЦП. 200 емр - это перебор. Вход АЦП никуда не подключать не правильно. В момент выборки имеет место довольно большой ток.

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


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

подскажите пожалуйста

Хочу запускать АЦП от timer0.

Какой режим таймера выбрать? При каком значении таймера будет срабатывать триггер АЦП? Нужно ли разрешать таймеру прерывание? Нужно ли писать обработчик прерывания таймера(сброс итд.)?

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


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

подскажите пожалуйста

Хочу запускать АЦП от timer0.

Какой режим таймера выбрать? При каком значении таймера будет срабатывать триггер АЦП? Нужно ли разрешать таймеру прерывание? Нужно ли писать обработчик прерывания таймера(сброс итд.)?

 

Могу Вам сказать, что такой запуск не использовал из-за не надобности. По документации о АЦП:

 

1. Необходимо установить прерывание по таймеру 0.

2. Запуск будет производится в момент возникновения прерывания.

3. Счетчик таймера сбрасывается сам при достижении значения указанного в регистре (TIMER0PRD и TIMER0PRDH), т.е. при срабатывании прерывания.

 

Ого. Да тут чисто схемотехнические просчеты. Либо с питанием что-то, либо - выход формирователя входного напряжения имеет высокое выходное сопротивление. Схему (с номиналами) в студию. Да и код не помешает. Я работал с этими АЦП. 200 емр - это перебор. Вход АЦП никуда не подключать не правильно. В момент выборки имеет место довольно большой ток.

 

 

Схема особенностей не содержит, плата маленькая тестовая разведена идеально (bot земляной полигон). короткие дорожки от контроллера. Питается от аккумулятора через LDO 3.3V. Сигнал на входы АЦП от батареи AA типа.

Последовательно включался резистор от 0 до 10 кОм. Результат одинаков.

 

Почти такая же разводка в контроллере TMX320F28069, и такая же программа. Работает идеально.

 

Есть регистр в revision A: ADCCTL2, который отсутствует в revision 0 (TMS320F2802x). Пока в описании он отсутствует. Он существенно улучшает качество работы АЦП. Кто-то прошел удачно через это?

 

 

Благодарю всех за отзывы!

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


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

была похожая проблема... решилось всё переносом обработчика прерываний АЦП из флеш в RAM. #pragma CODE_SECTION(adc1_isr,"ramfuncs");

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


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

viZIer спасибо, запустил. Правда своё пока не отладил, взял пример от ti (ADC_SOC) - нормально конвертит. Ошибочка не более +- 2 LSB. Думаю это наводка от эмулятора, да и sample window 6 тактов маловат. Разводка ну почти никакая, посмотрю потом, доработаю.

post-27774-1301541934_thumb.png

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


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

И не забывайте EALLOW-EDIS когда конфигурите ADC

вот убрал он и начал ерунду показывать

 

Сейчас увеличил Sample Window - и результат "стоит" на месте.

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


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

Какие то глюченные чипы.

У одной никак не поборю портированную с 280х программу работы по i2c

Соответственно писать надо 4 байта, FIFO используется

вторая вообще вылетела ни с того ни с сего, сперва "заблокировалась", просила пароль а затем, после перезагрузки вообще перестала реагировать на эмулятор. Самое интересное кварцевый генератор работает (как было прописано в программе). Даже их и не разгонял (2801 - до 120 МГц спокойно).

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


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

Также пользовался проектом от TI: adc_soc. изменял Sample Window во всем спектре (от 6 до 63) изменения качества результата не наблюдал. При проверке Vref_lo (ADCCTL1.VREFCONV) наблюдается не нулевое значение также наблюдаются колебания при измерении. EALLOW - EDIS используются, не помогает. Прилагаются два файла, по разводке отладочной платы.

 

Top:

post-30666-1303154041_thumb.png

 

Bottom:

post-30666-1303154175_thumb.png

 

 

 

У одной никак не поборю портированную с 280х программу работы по i2c

Соответственно писать надо 4 байта, FIFO используется

вторая вообще вылетела ни с того ни с сего, сперва "заблокировалась", просила пароль а затем, после перезагрузки вообще перестала реагировать на эмулятор. Самое интересное кварцевый генератор работает (как было прописано в программе). Даже их и не разгонял (2801 - до 120 МГц спокойно).

 

С I2C проблем не наблюдалось, даже с учетом FIFO. При портировании программы под Piccolo в свою очередь необходимо увеличить время ожидания до порядка 100 мкс.

 

 

И к Вам вопрос по поводу "разгона". Как Вы проверили частоту SYSCLKOUT, что получилось 120 МГц? И какой частоты стоял кварцевый генератор, с каким коэффициентом масштабирования?

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


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

С I2C проблем не наблюдалось, даже с учетом FIFO. При портировании программы под Piccolo в свою очередь необходимо увеличить время ожидания до порядка 100 мкс.

100 оказалось мало.

поставил 10000. Заработало. (чтение после записи). МОжно так же долбить первую часть цикла чтения (задание адреса) до тех пор, пока не перестанет устанавливаться NACK. 5.10я версия компилятора - чудноватая. Ладно, проехали.

И к Вам вопрос по поводу "разгона". Как Вы проверили частоту SYSCLKOUT, что получилось 120 МГц? И какой частоты стоял кварцевый генератор, с каким коэффициентом масштабирования?

 

Я по таймеру определяю.

вместо стандартного

// Configure CPU-Timer 0, 1, and 2 to interrupt every second:
// 60MHz CPU Freq, 1 second Period (in uSeconds)

   ConfigCpuTimer(&CpuTimer0, 60, 1000000);

я пишу

ConfigCpuTimer(&CpuTimer0, 1, 319); // 384 кГц,

 

т.е. прерывание таймера происходит каждые 319+1=320 тактов.

итого 320*384 = 122880кГц.

Задающий при этом может быть как внутренний так и внешний - я использовал оба, в указанном выше примере - использован внешний на 24,576 МГц, sysclkout при этом делю пополам и умножаю на 10. Получается 24,576МГц*5=122,880 МГц частота ядра.

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


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

..., да и sample window 6 тактов маловат. Разводка ну почти никакая, посмотрю потом, доработаю.
У Вас третий вывод (~XRS) в воздухе!

 

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


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

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

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

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

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

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

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

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

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

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