Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Программирование АЦП

Непрочитано 13.10.2010, 09:24  
SFHK
Частый гость
 
Регистрация: 17.12.2009
Сообщений: 13
Сказал спасибо: 3
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
SFHK на пути к лучшему
По умолчанию Программирование АЦП

Встроенное в микороконтроллер семейства STM32F АЦП.
Разбирался каким образом можно установить частоту оцифровки входного аналогового сигнала. В регистрах управления АЦП нет явно выделенных бит. Косвенно можно через установку непрерывного режима преобразования (Continuous conversion mode) и задания времени семплирования (Sampling time).
При завершении одного преобразования выставляется флаг конца преобразования (EOC) и одновременно стартует следующее.

Само Sampling time программируется в пределах 1.5 - 239.5 циклов частоты тактирования АЦП.

Непонятно вот что, возможно я не разобрался, возможно так оно практикуется, но само время преобразования (ADC conversion time), т.е. время выборки и хранения, как я полагаю, в даташите фиксировано и порядка 1 мкс.

Почему сразу же не выставлять флаг EOC через эту 1 мкс, а ждать окончания Sampling time? Пусть автоматический запуск очередного преобразования происходит после Sampling time как и сейчас, но данные очень желательно что бы были доступны сразу же по истечении ADC conversion time, что бы их можно было обработать и выдать в контур управления как можно раньше.
В чем логика организации именно такой работы АЦП по доступности данных с программируемой задержкой?
Реклама:
SFHK вне форума  
Непрочитано 13.10.2010, 10:27  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Программирование АЦП

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

В stm32 есть ещё один любопытный момент. В кристаллах, где есть 2 АЦП (например stm32f105) оба АЦП посажены на одни и те же ноги. Там есть режим запуска со смещением измерения. Грубо говоря один и тот же канал поступает на 2 АЦП. Выборка по второму АЦП начинается раньше чем завершается преобразование по первому. Иными словами вы имеете возможность увеличить скорость выборки в 2 раза.

Тем не менее всё это лирика. Если возникает задача существенного уменьшения времени выборки, то надо ставить внешнее АЦП. Либо применять DSP.
SasaVitebsk вне форума  
Непрочитано 13.10.2010, 13:29  
SFHK
Частый гость
 
Регистрация: 17.12.2009
Сообщений: 13
Сказал спасибо: 3
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
SFHK на пути к лучшему
По умолчанию Re: Программирование АЦП

Задача в том, что бы при данном времени выборки (1 мкс или около этого) не использовать дополнительных триггеров запуска, и получать данные сразу после выборки, а не в конце задержки, определяемой временем Sampling time.
Возможно ли такое и в чем смысл задержки Sampling time?

Еще бы тогда хотелось прояснить, раз упомянуто: Частота 72 МГц - это частота тактирования самого АЦП (ADC clock)?
Тут такой момент, что в даташите максимальная частота ADC clock не превышает 14 МГц. А если это не ADC clock, то какое тогда отношение 72 МГц может иметь к времени выборки АЦП, если она не подается на схемную часть АЦП и в чем смысл приводить в даташите данные по времени выборки для 72 МГц?
Извините за возможно очевидные вопросы.
SFHK вне форума  
Непрочитано 13.10.2010, 14:14  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Программирование АЦП

Сообщение от SFHK Посмотреть сообщение
и в чем смысл задержки Sampling time
Это задержка не после, а до преобразования. На входе стоит аналоговый мультиплексор (набор аналоговых ключей) - туда подключаются входы АЦП. Выход у мультиплексора один и на нем весит конденсатор. Это так называемое устройство выборки-хранения. На время Sampling time соответствующий входу ключ в мультиплексоре замыкается и входной сигнал заряжает/разряжает конденсатор. По окончании этого времени ключ в мультиплексоре размыкается и АЦП начинает преобразование используя как входное напряжение на конденсаторе. Время Sampling time регулируется, потому как выходное сопротивление источника сигнала бывает разным. При высоком сопротивлении время приходится увеличивать, иначе напряжения на входе и на конденсаторе не успеют уравняться. Это банальная RC цепь. Не все контроллеры позволяют регулировать это время, там где нельзя приходится иногда снижать такт АЦП.

Сообщение от SFHK Посмотреть сообщение
и в чем смысл приводить в даташите данные по времени выборки для 72 МГц?
Это проблемы с документацией у ST. Я сейчас тоже изучаю документацию на STM8L/STM32F100. Там много чего описано странно и много о чем не рассказано вовсе. К примеру о опоре DAC в STM32F100 в случае корпуса с отсутствующим выводом Vref. Можно догадываться что опорой будет аналоговое питание, но прямых указаний нет. Более того - вообще о опоре ЦАП-а ничего в документации не находится. И таких вопросов много остается.
kison вне форума  
Непрочитано 13.10.2010, 14:17  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Программирование АЦП

Скажите, а каким документом вы пользуетесь?
Я - RM0008. Reference manual.
Открываем тактирование (в зависимости от кристалла). Например стр.84. рис. 8. Сразу видим - ADCCLK 14MHz Max. То есть в зависимости от источника тактирования и от вашего кварца вы не можите выставить частоту более 14. Меньше можно. Поэтому она будет разной в зависимости от деления. Я как то не понимаю - вы же её выставлять должны изначально при инициализации кристалла. Так почему вы не знаете какая у вас частота? Как оно у вас вообще работает?

Далее идём на описание самого АЦП.
На стр. 215 читаем следующее:
● ADC conversion time:
– STM32F103xx performance line devices: 1 μs at 56 MHz (1.17 μs at 72 MHz)
– STM32F101xx access line devices: 1 μs at 28 MHz (1.55 μs at 36 MHz)
– STM32F102xx USB access line devices: 1.2 μs at 48 MHz
– STM32F105xx and STM32F107xx devices: 1 μs at 56 MHz (1.17 μs at 72 MHz)
Что мне собственно понятно. Это вытекает с верхнего абзаца моего ответа.

Далее детально разжёвано время преобразования. Включая графики в разных режимах.

Если опустится ещё ниже то увидим на стр.223
11.6 Channel-by-channel programmable sample time
ADC samples the input voltage for a number of ADC_CLK cycles which can be modified using
the SMP[2:0] bits in the ADC_SMPR1 and ADC_SMPR2 registers. Each channel can be
sampled with a different sample time.
The total conversion time is calculated as follows:
Tconv = Sampling time + 12.5 cycles
Example:
With an ADCCLK = 14 MHz and a sampling time of 1.5 cycles:
Tconv = 1.5 + 12.5 = 14 cycles = 1 μs

По-моему всё предельно ясно.
Вы чем пользуетесь?
SasaVitebsk вне форума  
Непрочитано 13.10.2010, 14:39  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Программирование АЦП

Сообщение от kison Посмотреть сообщение
Это проблемы с документацией у ST. Я сейчас тоже изучаю документацию на STM8L/STM32F100. Там много чего описано странно и много о чем не рассказано вовсе. К примеру о опоре DAC в STM32F100 в случае корпуса с отсутствующим выводом Vref. Можно догадываться что опорой будет аналоговое питание, но прямых указаний нет. Более того - вообще о опоре ЦАП-а ничего в документации не находится. И таких вопросов много остается.

Так кристалл ведь один. Вы можете использовать внешнюю опору. Правда её нет физически. Но процу то это по барабану.

Документация в общем-то неплохая, правда сама переферия сложная. Ацп - очень сложный. У меня есть претензии к цокалёвке. Вот зачем накладывать 2 АЦП друг на друга? Какой такой тайный смысл?

Но тут, давече смотрел xMega на предмет того же АЦП, тоже порадовался. 2 АЦП по 12 каналов = 24. Но если хотите диф режим включить - остаётся 8. 2 источника опоры, переключаемых. Очень удобно. Особенно мне было для своих целей. Да вот незадача - они на тех же пинах что и входы. Причём именно диференциальные.

Таким образом получить 8 диф каналов с внешней опорой - не получится.
SasaVitebsk вне форума  
Непрочитано 13.10.2010, 15:44  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Программирование АЦП

Сообщение от SasaVitebsk Посмотреть сообщение
Вы можете использовать внешнюю опору. Правда её нет физически. Но процу то это по барабану.
Вот с этого момента поподробнее. Я вообще не нашел выбора типа опоры. Она как бы всегда внешняя. Но входа опоры в малоногих кристаллах нет. Если считать LQFP64 таковым. В примечании указано что в этом случае берется аналоговое питание как опора. Хотя сейчас поискал и этого примечания не нашел, хотя помню - было. С ЦАП так вообще ничего не понятно, про опору ни слова. Партизаны в ST документацию пишут. Да, смотрю RM0041 - на STM32F100. Вообще кристалл очень неплох, жаль часы не сделали как в STM8L. Ну и с документацией плохо, библиотека ее не заменит. Но по соотношению цена/возможности этот мелкий STMF100 выглядит очень достойно. Причем он существенно дешевле xmega, даже А4.
kison вне форума  
Непрочитано 13.10.2010, 17:15  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Программирование АЦП

Сообщение от kison Посмотреть сообщение
Вот с этого момента поподробнее. Я вообще не нашел выбора типа опоры. Она как бы всегда внешняя.
Прошу прощения. Уже всё путается в голове. Посмотрел - действительно. И народ жаловался на электрониксе.

У меня внешняя опора. Честно говоря стабильность не высокая результирующая была. Но в этом проекте не влазил в дебри - написал - разбирайтесь сами. Плавало в пределах 2%. Может в хемотехнике что - я даже смотреть не стал. Там и сильноточного ничего не было. Стояли mbi и 4 линейки светодиодов со скважностью 6. Импульсные броски - 16*60. И то по 5V.
SasaVitebsk вне форума  
Непрочитано 15.10.2010, 09:22  
SFHK
Частый гость
 
Регистрация: 17.12.2009
Сообщений: 13
Сказал спасибо: 3
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
SFHK на пути к лучшему
По умолчанию Re: Программирование АЦП

Сообщение от SasaVitebsk Посмотреть сообщение
Сразу видим - ADCCLK 14MHz Max. То есть в зависимости от источника тактирования и от вашего кварца вы не можите выставить частоту более 14.
Сообщение от SasaVitebsk Посмотреть сообщение
– STM32F103xx performance line devices: 1 μs at 56 MHz (1.17 μs at 72 MHz)
– STM32F101xx access line devices: 1 μs at 28 MHz (1.55 μs at 36 MHz)
...
Что мне собственно понятно. Это вытекает с верхнего абзаца моего ответа.
Поясните пожалуйста поподробней (возможно опущены шаги в логической цепочке), как из того, что мах частота 14 МГц, вытекает, что на 56 МГц время преобразования 1 мкс?
Допустим, как одно из возможных предположений Вашего ответа, что 56 МГц и 72 МГц - это частоты шины AHB и напрямую не используются (опять же вопрос почему только эти две частоты взяты, а не полный набор возможных частот?). Тогда при возможных коэффициентах деления 2, 4, 6, 8 и с учетом ограничения 14 МГц получим частоты 14, 9.(3), 7 МГц и 12, 9 МГц соответственно. Им соответствуют общие времена преобразования 1, 1.5, 2 мкс и 1.1(6), 1.(5) мкс соответственно. Получается, что 56 МГц соотвтетствует три общих времени преобразования. Опять же можно предположить, что ST имело ввиду именно минимальное время, а именно 1 мкс, но не указала этого по причине "предельной ясности". Так предполагая и предполагая можно подогнать под соответствие написанному, но что имела ST ввиду, мы так никогда и не узнаем. Это всего лишь предположения с разной степенью вероятности, кому какой вариант нравится. Предмет веры разработчика, а не точного знания.

Сообщение от SasaVitebsk Посмотреть сообщение
ADC conversion time: ... 1 μs at 56 MHz
Сообщение от SasaVitebsk Посмотреть сообщение
Tconv =... 1 μs (With an ADCCLK = 14 MHz)
Эти два термина идентичны: ADC conversion time и Tconv? Если следовать даташит, то Tconv определено в таблице 45 характеристик АЦП в даташите и лежит в пределах от 1 до 18 мкс для 14 МГц. ADC conversion time задается как фиксированная величина для конкретной частоты.
SFHK вне форума  
Непрочитано 15.10.2010, 11:02  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Программирование АЦП

Сообщение от SFHK Посмотреть сообщение
Поясните пожалуйста поподробней (возможно опущены шаги в логической цепочке), как из того, что мах частота 14 МГц, вытекает, что на 56 МГц время преобразования 1 мкс?
Допустим, как одно из возможных предположений Вашего ответа, что 56 МГц и 72 МГц - это частоты шины AHB и напрямую не используются
Судя по некоторым ноткам Вашего ответа - давайте я ввиду некоторые ограничения для своего. В дальнейшем я буду избегать формулировок типа "совершенно понятно", "очевидно", "предельно ясно" и т.д. Похоже они Вас раздражают. Я это целью не ставил.
Теперь по существу.
1. Вы так и не ответили на вопрос - каким документом Вы руководствуетесь. Как бы от этого зависит наше взаимопонимание. Возможно, в разных документах есть разночтения, я за это ответственности не несу. Чем я пользуюсь - написал выше. В дальнейшем я буду ссылаться на данный документ.
2. Кроме ссылки на описание АЦП я (посмотрите внимательнее) указал ссылку на структуру тактирования однокристалки. Это в разделе программирования RCC. Для разных кристаллов она разная. Поскольку вы не привели полного наименования, я и не стал подробно на этом останавливаться. Почитайте пожалуйста сами. Вы увидите в чём там различия. В некоторых местах они существенные. Дальше я это опускаю. И перехожу к low кристаллам - соответственно рис.8 стр.84. Из него видно что вы можете получить на АЦП частоты APB2/2, 4, 6, 8. С учётом коэфф. деления шин AHB и APB2 вы всё равно ближайших меньших не получите. Таким образом для частоты 56 можно получить частоты ‹=14 56/4 = 14, 56/6 = 9.3 и ниже. Для 72 - 72/6=12 и ниже. Тут всё понятно?
Цитата:
(опять же вопрос почему только эти две частоты взяты, а не полный набор возможных частот?).
Я вообще не брал ничего - я просто вырезал несколько строчек из даташита. Там, кстати приведены не 2, а больше частот 28, 36, 48, 56, 72. Я не могу знать почему ST выбрала именно их. Могу предположить, что для примера. 72 - это максимальная частота контроллера 103. 36 - контроллера 101. И т.д. А как вы видите "полный набор частот", особенно учитывая возможность тактирования от любых кварцев с учётом PLL?
Цитата:
Тогда при возможных коэффициентах деления 2, 4, 6, 8 и с учетом ограничения 14 МГц получим частоты 14, 9.(3), 7 МГц и 12, 9 МГц соответственно. Им соответствуют общие времена преобразования 1, 1.5, 2 мкс и 1.1(6), 1.(5) мкс соответственно. Получается, что 56 МГц соотвтетствует три общих времени преобразования.
На самом деле - значительно больше. Есть 2 преддделителя шины. Один с произвольным коэффициентом и делитель тактовой АЦП с 4 коэф. деления.
Цитата:
Опять же можно предположить, что ST имело ввиду именно минимальное время, а именно 1 мкс, но не указала этого по причине "предельной ясности".
Думаю так.
Цитата:
Так предполагая и предполагая можно подогнать под соответствие написанному, но что имела ST ввиду, мы так никогда и не узнаем. Это всего лишь предположения с разной степенью вероятности, кому какой вариант нравится. Предмет веры разработчика, а не точного знания.
Вам что именно непонятно?
Цитата:
Эти два термина идентичны: ADC conversion time и Tconv? Если следовать даташит, то Tconv определено в таблице 45 характеристик АЦП в даташите и лежит в пределах от 1 до 18 мкс для 14 МГц. ADC conversion time задается как фиксированная величина для конкретной частоты.
Опять же - что непонятно? "Tconv = 1.5 + 12.5 = 14 cycles = 1 μs". 1.5 такта, как я понимаю - sample time - время защёлкивания. Хотя это и не принципиально что это. Вам, как пользователю данного изделия необходимо знать что есть эти 1.5 такта.
Bits 23:0 SMPx[2:0]: Channel x Sample time selection
These bits are written by software to select the sample time individually for each channel.
During sample cycles channel selection bits must remain unchanged.
000: 1.5 cycles
001: 7.5 cycles
010: 13.5 cycles
011: 28.5 cycles
100: 41.5 cycles
101: 55.5 cycles
110: 71.5 cycles
111: 239.5 cycles
12.5 - время преобразования.

12.5 + 1.5 = 14. 14/14 = 1. 1/1 = 1
12.5 + 239.5 = 252. 14/252 = 0.0(5). 1/0.0(5) = 18
SasaVitebsk вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видео уроки dosikus Микроконтроллеры, АЦП, память и т.д 61 23.01.2012 21:06
ИОН как опорное напряжение АЦП в PIC18F13K50 Easyrider83 Proteus 6 08.09.2010 14:36
Конфликт прерываний таймера и АЦП ask_e Микроконтроллеры, АЦП, память и т.д 11 08.08.2010 01:28
Проблема с АЦП на PIC16C77 и PIC16F777 SonGoku Микроконтроллеры, АЦП, память и т.д 0 18.01.2010 23:58
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03


Часовой пояс GMT +4, время: 08:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.