Здравствуйте,
К сожалению, в 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 (да и это может быть даже недостижимый предел), да еще и огород городить. конкретно здесь и сейчас влеплю аппаратный компаратор на плату.
Но вопрос остается, хочу понять чего же можно с помощью АЦП достичь