реклама на сайте
подробности

 
 
> Счётчик десятинаносекундных импульсов на STM32F4
uu5jkb
сообщение Jun 1 2014, 05:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 4-02-09
Пользователь №: 44 400



Приветствую всех.
Стоит задача вести счёт импульсов, приходящих по пяти каналам. Импульсы уже прямоугольные, сформированные, длительность 10 нс, интервал между импульсами скачет случайным образом, в худшем случае два импульса "слипаются в один". Измерять надо в течение 20 мс, за это время может набежать до 500 тыс. импульсов. По прикидкам, STM32F4 может таткировать свои таймеры 168 МГц и регистрировать импульсы такой длительности. Два 32-разрядных таймеров запустить напрямую, ещё три 16-битных - по прерываниям увеличивать програмный счётчик, чтобы вместилось 500 тыс. импульсов.
Собственно, вопрос: может кто возился с подобным и есть ли какие противопоказания для такого использования СТМ?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Jun 1 2014, 05:38
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(uu5jkb @ Jun 1 2014, 13:33) *
Импульсы уже прямоугольные, сформированные, длительность 10 нс,... По прикидкам, STM32F4 может таткировать свои таймеры 168 МГц и регистрировать импульсы такой длительности.
Собственно, вопрос: может кто возился с подобным и есть ли какие противопоказания для такого использования СТМ?


На STM32F не считала, но обычно во всех случаях когда счетный вход таймера тактируется, максимальная измеряемая частота достигает лишь половины тактовой частоты. Т.е. для того, чтобы считать меандр, тактирование должно произойти в двух местах - последовательно на разных уровнях (высоком и низком). Иначе таймер не поймет, что это пошел второй импульс, а не продолжается первый.

Если STM32F позволяет считать асинхронно с частотой, превышающей половину тактируемой, то прошу отозваться тех, кому это удалось практически осуществить. Меня такая возможность тоже сильно интересует.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 1 2014, 06:01
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Xenia @ Jun 1 2014, 13:48) *
позволяет считать асинхронно с частотой

А есть ли вообще асинхронные таймеры хоть в каком-то МК. Мне кажется в таком случае невозможно побороть метастабильность.
Взять тот же модуль RTC - танцы еще те.
Кста, это, пожалуй, единственный пример асинронного таймера, но ограничения по частотам наложены суровые.
Вроде в AVR есть асинхронный таймер (для часовых целей?).
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jun 3 2014, 16:05
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(adnega @ Jun 1 2014, 14:11) *
Кста, это, пожалуй, единственный пример асинронного таймера, но ограничения по частотам наложены суровые.
Вроде в AVR есть асинхронный таймер (для часовых целей?).


Воспользуюсь случаем упомянутого всуе AVR поговорить про Х-Мегу. sm.gif Понимаю, что это не совсем правильно в разделе, посвященном ARM, тем более что достичь заданной планки в 10 нс она не может. Тем не менее, здесь содержится идея, которая до сих пор не была упомянута, но могла бы оказаться в нашем деле полезной. Поэтому я сейчас изложу идею в приложении к Х-Меге (мне хорошо знакомой), а специалистов по STM32F попрошу прокомментировать мой пост на предмет возможности переноса этой идеи на STM32F.

Суть идеи в том, что ограничения по рабочей частоте обычно связаны с недостаточностью скорости выборки из флеш-памяти команд, тогда как периферия (и в том числе таймеры!) способна работать на частотах, превышающих номинальную в разы.

Такая возможность зачастую имеется у МК, имеющих встроенный PLL-генератор частоты, синхронизируемый обычным осциллятором (внутренним или внешним). Для этих целей у Х-Меги существует программный множитель (до х31), позволяющий умножать частоту осциллятора. У STM32F, по-видимому, тоже есть такая же возможность, если он работает на частотах 168-180 МГц на кварце, у которого всего 8 МГц.

Помимо PLL-множителя, у Х-Меги есть еще три делителя (A, B и C), через которые частота PLL поступает в CPU и память. Абсолютное большинство пользователей этими делителями не пользуются, т.е. они остаются в положении 1:1 по умолчанию. Т.е. люди сразу умножают частоту кварца или внутреннего RC-осциллятора до рабочей частоты и на этой частоте работают. Однако частоту PLL можно задрать кверху гораздо выше, погасив избыток делителями, чтобы CPU и память по-прежнему получали привычную частоту. Причем это будет не интерлив, когда пропускаются такты, а самый обычный для ядра режим, поскольку ядро не знает, что по дороге частота была повышена в разы, а потом возвращена назад делителями.

А вот таймеры, порты и кое-что еще из периферии можно тактировать той самой высокой промежуточной частотой. При этом "разрешающая частота" таймера может быть увеличена в разы (2-4 раза) против частоты CPU. Ускоряет ли эта идея счет внешних импульсов, я доподлинно не знаю, но то что генерация ШИМ от этого возрастает, ясно написано в руководстве и сопровождается примером программы.

Осталось только выяснить у знающих людей, способен ли STM32F проделывать подобные вещи, т.е. заставить таймеры тактироваться частотой, превышающей номинальную. И если да, то возможно ли этим способом превзойти 180 МГц на таймерах, не занимаясь разгоном ядра?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- uu5jkb   Счётчик десятинаносекундных импульсов на STM32F4   Jun 1 2014, 05:23
- - jcxz   Цитата(uu5jkb @ Jun 1 2014, 15:33) Стоит ...   Jun 1 2014, 07:18
|- - A. Fig Lee   Цитата(jcxz @ Jun 1 2014, 07:28) Другой в...   Jun 1 2014, 07:42
|- - jcxz   Цитата(A. Fig Lee @ Jun 1 2014, 17:40) Ум...   Jun 1 2014, 07:46
|- - HHIMERA   Цитата(A. Fig Lee @ Jun 1 2014, 14:52) ST...   Jun 1 2014, 11:41
|- - A. Fig Lee   Цитата(HHIMERA @ Jun 1 2014, 11:51) И STM...   Jun 2 2014, 07:14
|- - HHIMERA   Цитата(A. Fig Lee @ Jun 2 2014, 14:24) Да...   Jun 2 2014, 14:23
|- - Xenia   Цитата(HHIMERA @ Jun 2 2014, 22:33) ...   Jun 2 2014, 15:08
- - uu5jkb   Цитата(Xenia @ Jun 1 2014, 13:48) ...макс...   Jun 1 2014, 09:33
|- - jcxz   Цитата(uu5jkb @ Jun 1 2014, 19:43) Это но...   Jun 1 2014, 09:51
|- - Tanya   Цитата(uu5jkb @ Jun 1 2014, 17:43) Это но...   Jun 3 2014, 00:31
- - A. Fig Lee   Я бы поначалу глянул, хватит ли таймеров у СТМ32. ...   Jun 1 2014, 10:28
- - Golikov A.   CPLD лучше ставить. Всяко лучше чем на рассыпухе с...   Jun 1 2014, 11:45
- - SasaVitebsk   Непосредственно по вопросу, если это спасёт, то де...   Jun 2 2014, 02:10
|- - demiurg_spb   Как альтернативный вариант: Запустить ДМА по перво...   Jun 2 2014, 02:43
|- - jcxz   Цитата(SasaVitebsk @ Jun 2 2014, 12:20) Н...   Jun 2 2014, 03:52
|- - demiurg_spb   Цитата(jcxz @ Jun 2 2014, 12:02) Не хвати...   Jun 2 2014, 04:26
|- - jcxz   Как это не важно? А как вы их потом разбирать на о...   Jun 2 2014, 04:40
|- - demiurg_spb   Цитата(jcxz @ Jun 2 2014, 12:50) Как это ...   Jun 2 2014, 04:53
|- - adnega   Цитата(demiurg_spb @ Jun 2 2014, 13:03) П...   Jun 2 2014, 05:12
||- - demiurg_spb   Цитата(adnega @ Jun 2 2014, 13:22) Не сов...   Jun 2 2014, 05:27
|- - jcxz   Цитата(demiurg_spb @ Jun 2 2014, 15:03) П...   Jun 2 2014, 09:25
|- - demiurg_spb   Цитата(jcxz @ Jun 2 2014, 17:35) Вы счита...   Jun 3 2014, 03:44
|- - adnega   Цитата(demiurg_spb @ Jun 3 2014, 11:54) Я...   Jun 3 2014, 04:04
|- - demiurg_spb   Цитата(adnega @ Jun 3 2014, 12:14) Кажетс...   Jun 3 2014, 04:17
||- - adnega   Цитата(demiurg_spb @ Jun 3 2014, 12:27) Л...   Jun 3 2014, 04:53
|- - jcxz   Цитата(adnega @ Jun 3 2014, 14:14) Тот ва...   Jun 3 2014, 05:09
|- - adnega   Цитата(jcxz @ Jun 3 2014, 13:19) У меня в...   Jun 3 2014, 06:35
|- - jcxz   Цитата(adnega @ Jun 3 2014, 16:45) Теперь...   Jun 3 2014, 11:44
|- - adnega   Цитата(jcxz @ Jun 3 2014, 19:54) По-моему...   Jun 3 2014, 12:48
- - _pv   DCMI на вход вроде до FCLK/2 разгоняется. но всё р...   Jun 2 2014, 06:25
- - A. Fig Lee   А почему проблемы? Потому что не железо подбираетс...   Jun 2 2014, 09:46
|- - adnega   Цитата(A. Fig Lee @ Jun 2 2014, 17:56) А ...   Jun 2 2014, 10:33
|- - jcxz   Цитата(adnega @ Jun 2 2014, 20:43) 4. Точ...   Jun 2 2014, 14:44
- - HHIMERA   Потому что проблема надуманная... Делов то... макс...   Jun 2 2014, 15:18
- - Golikov A.   а как расшифровывается ETR?   Jun 2 2014, 15:33
|- - A. Fig Lee   Цитата(Golikov A. @ Jun 2 2014, 15:43) а ...   Jun 2 2014, 22:15
- - Golikov A.   ЦитатаExternal TRigger спасибо Цитатасчет фотонов...   Jun 3 2014, 00:37
|- - Tanya   Цитата(Golikov A. @ Jun 3 2014, 08:47) ко...   Jun 3 2014, 02:25
- - Леонид Иванович   10 лет назад решал подобную задачу - делал двухкан...   Jun 3 2014, 04:27
- - alexen   Цитата(Xenia @ Jun 4 2014, 00:15) огранич...   Jun 3 2014, 17:34
|- - Леонид Иванович   Цитата(alexen @ Jun 4 2014, 00:44) Таймер...   Jun 3 2014, 17:43
- - alexen   Цитата(Леонид Иванович @ Jun 4 2014, 01:5...   Jun 3 2014, 18:17
|- - jcxz   В LPC17xx - частота периферии получается делением ...   Jun 3 2014, 22:14
- - uu5jkb   Убедили. Потратил некторое время на знакомство с П...   Jul 13 2014, 17:13
- - Golikov A.   Ну... код ничего для начальной курсовой. 1. Капит...   Jul 13 2014, 21:44


Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 05:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01558 секунд с 7
ELECTRONIX ©2004-2016