Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32: использование АЦП в качестве компаратора
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Ruslan1
Здравствуйте,

К сожалению, в STM32 компараторы заканчиваются на "RAM=80k"(STM32L151), а в более пузатых камнях- только АЦП.
А я собираюсь использовать STM32F411RCT6 (много ресурсов и недорого, но аналогового компаратора нет).

Одна из задач у меня - измерить период синусоидального сигнала методом подсчета пересечений нуля. Речь идет о коротком измерении (не более чем 250 ms), частота измеряемого сигнала - ниже 8 кГц.

В майкрочипе это делается легко (там аналоговые копараторы есть), а тут, получается, внешний компаратор ставить?

Насколько я понял, можно использовать "Analog watchdog" и получить точность срабатывания, близкую к частоте семплов АЦП, так ли это? В даташите написано про "ADC sampling time 0.1 us min", если можно с подобной точностью регистрировать - меня это устраивает.

В Майкрочипе использовал Capture Module - он сам защелкивал содержимое таймера по, например, каждому четвертому переключению компаратора из High в Low. Можно ли что-то подобное на STM32F организовать?

Другой подход- просто валить в RAM семплы через DMA и потом уже разбираться ручками. Но как-то много семплов получается, памяти не хватит. То есть нужно маленькое DMA-кольцо (точнее, два) и разбирать на лету с одним пока другое заполняется. Но мне больше бы понравилось использовать опцию "Analog watchdog".

Подозреваю, что не мне первому понадобилось период сигнала измерять, может уже где-то аппноты есть на эту тему? И какие подводные камни есть при использовании ADC & Analog watchdog ?

Upd: пересчитал: все-таки мало мне тут разрешения 100ns (да и это может быть даже недостижимый предел), да еще и огород городить. конкретно здесь и сейчас влеплю аппаратный компаратор на плату.
Но вопрос остается, хочу понять чего же можно с помощью АЦП достичь sm.gif
adnega
Цитата(Ruslan1 @ Jul 17 2015, 17:19) *
К сожалению, в STM32 компараторы заканчиваются на "RAM=80k"(STM32L151),

А серию STM32F3xx не пропустили?
jcxz
Цитата(Ruslan1 @ Jul 17 2015, 20:19) *
Другой подход- просто валить в RAM семплы через DMA и потом уже разбираться ручками. Но как-то много семплов получается, памяти не хватит. То есть нужно маленькое DMA-кольцо (точнее, два) и разбирать на лету с одним пока другое заполняется.

Именно так - валить. А потом фильтровать. И только после считать частоту (с гистерезисом) если хотите получать более-менее верные значения.
Почему не хватит? Вы собираетесь "валить" от включения устройства и до выключения? smile3009.gif Тогда точно - не хватит. Но если обрабатывать периодически накопленный DMA буфер - нормально.
Хотя гораздо лучше для такой задачи подходит DSP. Но даже для STM32 8кГц - не проблема. Даже непрерывным потоком, не говоря уже о кратковременном измерении. Фильтр только правда можно будет не сильно крутой сделать.
Ruslan1
Цитата(adnega @ Jul 17 2015, 17:28) *
А серию STM32F3xx не пропустили?

У кого из имеющих компаратор есть больше чем 80к RAM на борту?
Я проверил в Кубе- если выбираю чтоб был хоть 1 компаратор и сортирую оставшиеся по RAM, то сразу вижу максимум 80 килобайт ОЗУ.


Цитата(jcxz @ Jul 17 2015, 17:29) *
Хотя гораздо лучше для такой задачи подходит DSP. Но даже для STM32 8кГц - не проблема. Даже непрерывным потоком, не говоря уже о кратковременном измерении. Фильтр только правда можно будет не сильно крутой сделать.

угу. ясно. DSP потому что компаратор нужен . у кого там из DSP набортного RAM много стало и аналоговые компараторы есть? sm.gif
Я, правда, на BF533 остановился, дальше и не применял ничего, может действительно глянуть чтобы понять что пропустил....
Но не сейчас, пожалуйста. Не готов я еще и ВижуалДСП вспоминать.... sm.gif
adnega
Цитата(Ruslan1 @ Jul 17 2015, 18:01) *
У кого из имеющих компаратор есть больше чем 80к RAM на борту?

Действительно, нет.
jcxz
Цитата(Ruslan1 @ Jul 17 2015, 21:01) *
угу. ясно. DSP потому что компаратор нужен . у кого там из DSP набортного RAM много стало и аналоговые компараторы есть? sm.gif

Компаратор в DSP - Ваш код. Хоть компаратор хоть что другое - ресурса производительности гораздо больше чем у M3.
А зачем Вам много ОЗУ? Для описанной Вами задачи хватит 2-4 кБ.
Но врочем если нужно - в семействе C55 (имхо - достаточном для Вашей задачи) до 320кБ внутренней.
А можете даже что-нить типа TMS320C6747 впендюрить - почти полмегабайта внутренней ОЗУ. А уж на 450МГц на 1-тактной double плавучке как можно развернуться! biggrin.gif
Несколько десятка таких потоков по 8кГц можете параллельно обрабатывать wink.gif
Ruslan1
Цитата(jcxz @ Jul 17 2015, 19:46) *
Компаратор в DSP - Ваш код. Хоть компаратор хоть что другое - ресурса производительности гораздо больше чем у M3.
А зачем Вам много ОЗУ? Для описанной Вами задачи хватит 2-4 кБ.
Но врочем если нужно - в семействе C55 (имхо - достаточном для Вашей задачи) до 320кБ внутренней.
А можете даже что-нить типа TMS320C6747 впендюрить - почти полмегабайта внутренней ОЗУ. А уж на 450МГц на 1-тактной double плавучке как можно развернуться! biggrin.gif
Несколько десятка таких потоков по 8кГц можете параллельно обрабатывать wink.gif

Спасибо. Посмотрел. Применить BGA-256 вместо LQFP-48 и заплатить 26 долларов вместо 6 (хотя реально переплата будет сильно больше из-за появления BGA на плате), и все это ради компаратора- я пока что морально не готов. sm.gif

Посмотрел более доступные DSP с RAM 128к и больше- есть любопытные, но все начинаются с QFP-100/144 (терпимо) и 15 долларов (хм...)
Но, например, фраза из даташита TMS320VC5506 как-то не впечатлила.
Цитата
• Two 20-bit timers
• Seven (LQFP) or Eight (BGA) configurable general-purpose I/O pins

Я понимаю, что аж целых два таймера и аж семь (или даже 8) конфигурируемых GPIO в 144-ногом корпусе - это звучит гордо, но я лучше тут с STM32 в песочнице поковыряюсь. пока что не готов я к DSP sm.gif

неэффективна мне эта ракетная техника. Все воробьи разбегутся пока я прицелюсь.
jcxz
Цитата(Ruslan1 @ Jul 18 2015, 02:39) *
Я понимаю, что аж целых два таймера и аж семь (или даже 8) конфигурируемых GPIO в 144-ногом корпусе - это звучит гордо, но я лучше тут с STM32 в песочнице поковыряюсь. пока что не готов я к DSP sm.gif.

Как-то Вы странно смотрели... ни McBSP/McASP многоканальных не заметили к которым хоть гроздь АЦП хоть по SPI цепляй, ни прочей стандартной периферии не заметили.... wacko.gif
Как бы они (DSP) вообще бы могли обрабатывать какие-то данные, если бы связи с внешним миром не имели бы?? Не задумывались?
Ни C6745/47/48 в LQFP не заметили.
Ruslan1
Цитата(jcxz @ Jul 18 2015, 12:49) *
Как-то Вы странно смотрели... ни McBSP/McASP многоканальных не заметили к которым хоть гроздь АЦП хоть по SPI цепляй, ни прочей стандартной периферии не заметили.... wacko.gif
Как бы они (DSP) вообще бы могли обрабатывать какие-то данные, если бы связи с внешним миром не имели бы?? Не задумывались?
Ни C6745/47/48 в LQFP не заметили.

Связи с внешним миром у них навалом, это понятно. Но убило наличие столь малого количества GPIO, не привязанных к интерфейсам.

Я просто в Дижикее залез в раздел "Embedded - DSP (Digital Signal Processors)". В нем выбрал имеющиеся в наличии, имеющие 128к и более, не-BGA, и отсортировал по цене. Значит есть и достойные, просто они сильно дороже и более многоногие, я до них не досмотрел.

Спасибо, буду знать, они таки есть более хорошие чем я думал. Но это действительно для более других задачь.
jcxz
Семейство C674x для Вашей задачи действительно - из пушки по воробьям. Хотя... если не трёт бюджет.... Хоть спектр в реальном времени считай. :-)
Лучше всего было-бы С55х, но все новые чипы (C551x, C553x) там почему-то только в BGA. sad.gif
Только старые есть в LQFP.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.