Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32 Измерение длительности импульсов используя HRTIM?

Ср авг 18, 2021 07:08:29

Как-то не обращал внимания на данную периферию, почитал en.STM32G4-WDG_TIMERS-High_Resolution_Timer_HRTIM.pdf. Во многих микроконтроллерах STM32 присутствует high resolution timer (HRTIM). Разрешение таймера указывается порядка 200 пикосекунд (!), что соответствует частоте 5ГГц. Это особенно интересно для реализации частотомера по измерению периода. Но смущает данная оговорка:
The high‐resolution is available for any kind of waveform
adjustment (period, duty‐cycle, or PWM to PWM phase
adjustment), but not for input capture, performed with the
regular input clock (from 100 to 170 MHz)


Правильно ли я понимаю, что если делать Input capture, то внешний импульс сможет быть зафиксирован только в моменты, кратные периоду
T = 1/f = 1/100 [MHz] = 10 [ns]

Например, измеряем длительность между импульсами 5МГц (5*10^6)
T = 1/f = 1/5 [MHz] = 200 [ns]
добавим к этому ошибку 10 наносекунд из-за работы Input capture с периодом 10наносекунд.
T = 210 [ns]

Период одного такта HRTIM 200 пикосекунд
Thrtim = 200 [ps]

И он насчитает в Input Capture
N = T / Thrtim = 210 [ns] / 200 [ps] = 1050 импульсов,

из которых мы определим длительность и частоту импульса:
f2 = 1/(1050*Thrtim) = 4.761905 [MHz]

Точность небольшая из-за добавки 10 наносекунд, зато измерение производится очень быстро.

Что если складывать значения счётчика HRTIM Input Capture по DMA, например 100 значений,
T = 200 [ns] * 100 = 20000 [ns]
Я предполагаю, что смещение в 10 наносекунд влияет только "по краям" интервала из 100 значений, поэтому
T = 20000 [ns] + 10 [ns]
N = T / Thrtim = 20010 [ns] / 200 [ps] = 100050 импульсов за 100 периодов измеряемого импульса 5МГц

f3 = 1/(100050*Thrtim*100) = 4.997501 [MHz]
Насколько реалистична данная оценка, возможно ли измерить импульсы с частотой повторения 5МГц за 20 микросекунд с такой точностью?



Пока что не уверен реализуемо ли это, тут я не учитывал другие возможные задержки gpio -> external event -> hrtim и hrtim input capture -> dma. Если это всё-таки реализуемо, то можно было бы реализовать что-то похожее на микросхему подсчёта времени TDC7200 для дальномеров. Или для самодельных частотомеров, которые быстрее определяют частоту сигнала.

Re: STM32 Измерение длительности импульсов используя HRTIM?

Ср авг 18, 2021 17:16:43

HRTIM может сформировать импульс с мелким шагом по длительности ( для ШИМа), у него есть блок мелких добавок к основному пульсу.
Но не длительностью в 200пс

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт авг 24, 2021 10:46:29

Если это всё-таки реализуемо, то можно было бы реализовать что-то похожее на микросхему подсчёта времени TDC7200 для дальномеров. Или для самодельных частотомеров, которые быстрее определяют частоту сигнала.

Это реализуемо только в H7, где нет умножения тактовой частоты модуля HRTIM. Но дает повышение разрешающей способности по сравнению с обычными таймерами TIMx всего в 2 раза. А в сериях G4 и F3 в регистрах захвата и счётчике нет доступа к битам, которые получаются от умножения частоты. Они читаются как "0". И в них вообще в плане разрешающей способности захвата модули HRTIM и TIMx не отличаются.

Быстро измерять период (ну или частоту) периодического сигнала с большим разрешением можно неплохо и имеющимися средствами STM32. Хуже с измерением одиночных импульсов и с измерением длительности. Была идея использовать входной конденсатор АЦП в качестве емкости интерполятора для повышения разрешающей способности, но реалистичной схемы управления входного мультиплексора АЦП не нашлось. Не получается выделить сигнал ошибки между фронтом входного (асинхронного) сигнала и фронтом захвата (синхронного с тактовой частотой таймера).

Re: STM32 Измерение длительности импульсов используя HRTIM?

Чт сен 09, 2021 08:10:59

Работал с этим таймером сначала в F334 сейчас в G474.
Режима захвата у него нет вроде, но очень гибко настраивается сброс и пр. + у DMA теперь есть произвольные запросы.
Можно попробовать по внешнему прерыванию скидывать значение счетного регистра в память и обнулять .
Будет непросто, но может выйдет :-) Если импульсы периодические, что можно попробовать инверсно, как измерение напряжения с помощью ЦАП. Формировать ШИМ, сравнивать через И с опорным и анализировать результат.

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт сен 28, 2021 12:20:17

HRTIM чрезвычайно неточен. Это аналоговая примочка к таймеру. Сильно чувствительна к температуре кристалла. Никакой точности Вы не получите....

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт сен 28, 2021 18:33:55

Сильно чувствительна к температуре кристалла.

Смахивает на выдумки, конкретика будет ?

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт сен 28, 2021 18:53:15

Да будет. Цифровые счетчики процессора не могут тактироваться с частотой 6 Гигагерц. Все это придумала фирма Ti 20 лет назад. А STM подхватила спустя 20 лет. У Ti написано, что расширение импульса ШИМ достигается RC цепью с компаратором, причем С переключаемые 8 шт. по количеству разрядов доп. регистра. И про чувствительность к температуре у Ti сказано.

Добавлено after 6 minutes 8 seconds:
P.S. Отсюда такая мелкая дискретность 150 пс у Ti 20 летней давности и 240 рs у STM спустя 20 лет. Но не имеет ничего общего с цифрой (опорой на кварц) и, соответственно, с точностью (уплывает от температуры). Поэтому Ti предлагает эту приблуду калибровать непрерывно используя свободный HRTIM полагая, что он будет вести себя похоже. Так как работающие HRTIM калибровать нельзя если это ИИП.

Добавлено after 4 minutes 7 seconds:
А Ви думали, что в цифровом процессоре нет аналоговых приблуд, тогда Мы идем к Вам это разъяснить.

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт сен 28, 2021 18:55:38

astrahard, в HRTIM ничего не тактируется с частотой 6ГГц, речь идет об эквивалентной несущей частоте ШИМ. Под конкретикой я понимал не диванные измышлизмы, а например даташит, где указано сколько разрядов ШИМ теряется на 1 градус Цельсия, апноты, эрраты, где этот эффект хоть упоминается. На крайняк ссылки на форумы, где люди ходят по этим граблям.

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт сен 28, 2021 19:31:04

У Ti все есть, читайте.

Добавлено after 3 minutes 23 seconds:
P.S. Я не размышлял, а цитировал апноут от Ti.

Добавлено after 3 minutes 16 seconds:
Европа (STM) отстала от Ti на 20 лет. Представьте на сколько отстало Отечество.

Добавлено after 3 minutes 25 seconds:
Кстати говоря, у Ti как уже 12 лет есть шаг 75 и 50 пикосекунд. Так что STM похоже отстала навсегда в качестве полупроводников.

Добавлено after 24 minutes 25 seconds:
Вот так и Intel c AMD у последней качество ПП паршивое. А все о тонкости техпроцесса рассуждают и незаслуженно гнобят INTEL. Последняя не пересядет на мелкий техпроцесс пока не убедиться в его надежности. А AMD на надежность наплевать она не поставщик ВПК.

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт сен 28, 2021 19:32:31

astrahard, понятно, одно теоретизирование.

В мурзилке от Компэл сказано:
"Внутри HRTIM тактовый сигнал дополнительно умножается с помощью встроенной схемы автоподстройки задержек (Delay‐Locked Loop, DLL). При максимальном коэффициенте умножения (32) частота тактирования ведущего и ведомых таймеров может достигать 5,44 ГГц, а разрешение выходных сигналов – 184 пс. Стоит отметить, что перед началом работы схема DLL требует самокалибровки. Повторная самокалибровка может потребоваться при изменении внешних условий: температуры, напряжения питания и так далее."

И делее: "в серии STM32H7 в модуле HRTIM DLL отсутствует". Там модуль HRTIM тактируется от ядра 480/550МГц, и калибровка ему не нужна.

Значит Ваше:
astrahard писал(а):HRTIM чрезвычайно неточен. Это аналоговая примочка к таймеру. Сильно чувствительна к температуре кристалла. Никакой точности Вы не получите....

выдумки и есть, так как собственным опытом работы с HRTIM Вы не обладаете, опираетесь только на поверхностную, рекламную информацию. Любой периферийный модуль любого МК надо использовать с умом, понимая, что от него можно получить, а что нет. Это касается и HRTIM.

astrahard писал(а):Но не имеет ничего общего с цифрой (опорой на кварц) и, соответственно, с точностью (уплывает от температуры).

Вы в курсе, что PLL в любом МК, где происходит умножение частоты кварцевого генератора тоже содержит не цифровой, а самый что ни на есть аналоговый RC-генератор ? И управляет им не менее аналоговый фазовый детектор. Думаете они от "температуры не уплывают" ? Ещё как уплывают, просто приняты меры, что-бы это работало как положено, так почему Вы думаете, что аналогичные меры не могут быть приняты в случае DLL модуля HRTIM ? Только потому, что Вы не знаете как это сделать ?

ЗЫ: Вот вам кстати цифровой счётчик на 6ГГц, просвещайтесь.

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт сен 28, 2021 19:51:09

Это я Вас просвещаю. А Компел и есть "Мурзилка". Это они отсебятину гонят а не я.
Что касается счетчика на 6 Гигагерц. Вы его где найти хотите у STM?

Ви опять путаете поставщика ВПК Analog Devices и шир-б STM.

Добавлено after 6 minutes 52 seconds:
Analog Devices делает 6 новых разработок в сутки. А позвольте Вас спросить, сколько делает STM, кроме перекупки топологии готовых блоков кремния. И ответ очевиден, она простой интегратор. Разработками кремния она не увлекается от слова совсем.

Добавлено after 3 minutes 15 seconds:
А отечественные производители ARM в свою очередь покупают "отбросы" топологии у STM. Вот такая пищевая цепочка 8) ...

Добавлено after 4 minutes 12 seconds:
Кстати говоря в основе топологии ФАПЧ тоже лежат преключаемые конденсаторы и регистры ими управляющие (как и АЦП). И, результат зависит от технологии ПП. А не от топологии.

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт сен 28, 2021 20:00:32

Европа (STM) отстала от Ti на 20 лет. Представьте на сколько отстало Отечество.
...
Вот так и Intel c AMD
...
поставщика ВПК Analog Devices и шир-б STM.

У Вас пунктик на счёт холиваров ? Мне всё равно, у кого там толще, есть задача, и есть способы её решения.

astrahard писал(а):Это я Вас просвещаю. А Компел и есть "Мурзилка". Это они отсебятину гонят а не я.

Это просто переведённые куски Application note - HRTIM cookbook от ST.
Что касается просветительства, даже если вашей отсебятине про неточную примочку к таймеру поверить, сам таймер станет от этого менее точным ? И что, эта примочка не только не улучшит его параметры хоть немного, а наоборот только ухудшит ? ST в наглую всех обманывает, ни кто этого не замечает, один только зоркий astrahard срывает покровы !

Re: STM32 Измерение длительности импульсов используя HRTIM?

Вт сен 28, 2021 20:24:48

Потому что, идею с ФАПЧ в ШИМ именно я озвучил 5 лет назад. И на это первой среагировала Microchip, правда ФАПЧ я не дождался но цифровой фильтр на компараторе они усовершенствовали. До реализации моей идеи "Датчик отказа датчика" технологически не доросли в Microchip. А Ви хотите чтобы STM это приняла? Это Компел ворует.

Добавлено after 2 minutes 51 second:
Эту тему ("Датчик отказа датчика") можно найти на (не буду говорить каком ресурсе) и проследить хронологически как отреагировала Microchip.

Добавлено after 9 minutes 38 seconds:
А вспомнил, Microchip, как я и предложил, вместо ФАПЧ тогда поставили упрощенную версию медианного фильтра на компаратор ОС по току.

Re: STM32 Измерение длительности импульсов используя HRTIM?

Ср сен 29, 2021 14:05:14

Во многих микроконтроллерах STM32 присутствует high resolution timer (HRTIM). Разрешение таймера указывается порядка 200 пикосекунд (!), что соответствует частоте 5ГГц. Это особенно интересно для реализации частотомера по измерению периода.
Какое бы ни было разрешение таймера, но с медленными драйверами входных пинов - оно никак не поможет. Думаете пины работают на 5ГГц??? :shock: Это за гранью реального. Хорошо если они хотя-бы на тактовой ядра будут работать...

Re: STM32 Измерение длительности импульсов используя HRTIM?

Ср сен 29, 2021 17:32:41

jcxz, если бы вы прочитали и осмыслили сообщение топикстартера дальше трёх строк, то поняли бы, что ни кто не думает, что пины работают на 5ГГц.
Ответить