[Решен] генератор на таймере с интервалом 25 наносекунд ?

Акронис
Пт 15 декабря 2017 г. 12:39
Расскажите мне простой пример кода для генератора Squarewave на таймере с интервалом 25 наносекунд (25 МГц)
Доска STM32F407 Black.

Сделал это, но по крайней мере 1 микросекунда. Это должно быть быстрее !
rcc.c systick.c usart.c

Стивестронг
Пт 15 декабря 2017 г. 16:32
Вы должны использовать непосредственно выходной сигнал SWM таймера вместо цифрового порта.
Добавьте эту линию в настройку (), чтобы генерировать сигнал PWM на контакте канала таймера: __deprecated void rcc_clk_init(rcc_sysclk_src sysclk_src, rcc_pllsrc pll_src, rcc_pll_multiplier pll_mul);

Rogerclark
Пт 15 декабря 2017 г., 19:07
25 секунд нано’S 40 МГц

Вам, вероятно, нужно установить PLL Clock, чтобы доска работала на скорости 160 МГц, чтобы таймер мог иметь разделитель 4.

Акронис
Солнце 17 декабря 2017 г. 4:20 утра
Привет, Стивестронг !
Я включил линию Pinmode (PA1, PWM) в SETUP ().

Какой код необходим для входа в
void timer_interrrupts ()
{
???
}

Для этого ?

Акронис
Солнце 17 декабря 2017 г., 4:26
Привет, Рогеркларк !

Правильно ли я вас понял, что необходимо это сделать ?
таймер.SetPrescaleFactor (4);

Если нет, скажите мне, как это сделать. Мне действительно нужно частота ШИМ намного быстрее, чем 1 МГц!

Rogerclark
Солнце 17 декабря 2017 г. 11:29
Зависит от того, какое разрешение вам нужно

Эн.глин. На F103, с 8 -битным разрешением, максимальная скорость ШИМ будет составлять 72/256 = около 280 кГц - максимальная скорость

На F4 с тактовой частотой 160 МГц и 8 -битным разрешением ШИМ, который дает вам только PWM FREQ 625 кГц

Ни одна из этих досок не даст вам PWM периода 1 МГц. За исключением случаев, если вы чрезвычайно разгоняете процессор до 256 МГц, и я не уверен, что кто -то успешно сделал это.

Я думаю, что вам нужно использовать что -то вроде FPGA для достижения той производительности, которую вы ищете

Акронис
Солнце 17 декабря 2017 г. 14:27
Я правильно вас понимаю, что более частота 625 кГц на таймере без разгрузки каких -либо способов ?
Мне нужен простой генератор прямоугольных импульсов

И без использования ШИМ можно получить высокую скорость генерации ?

victor_pv
Солнце 17 декабря 2017 г. 15:30
Да, вы можете получить выход MHZ в PIN -коде, установив значение перезагрузки на 1, Prescaler до 0, а таймер сравнится с 0 и 1.

Стивестронг
Солнце 17 декабря 2017 г. 9:05 вечера
Проблема кажется на стороне F4 в репо Роджере (и мое).
Я исследую эту проблему, но кажется, что серьезная переделка необходима.

Rogerclark
Солнце 17 декабря 2017 г. 9:11 вечера
@Acronis

Вы написали противоречивые требования.

Вы сказали 25NS -интервал. Что возможно с помощью процессора HE F4.

Вы также сказали 1 МГц ШИМ, что невозможно (при условии 8 -битного разрешения ШИМ)

Я думаю, вам нужно объяснить, что вы пытаетесь сделать и почему....

Акронис
Солнце 17 декабря 2017 г. 11:13
Добрый день всем.

Мне нужно генерировать квадратный сигнал 1 бит (вывод 0 или 1) с высокой частотой, используя таймер.
Частота генерации нуждается в самом высоком, более 1 МГц

Изображение https: // yadi.SK/I/O_BCSSLH3QHEBA
(Расскажите мне, на каком сайте загружать изображения, чтобы они появились на форуме в теме)

Стивестронг
Пн, 18 декабря 2017 г. 1:25 утра
Попробуйте это: .. set_clock(128000, 460800); // do math, send/receive big data.. set_clock(38, 300); // scan sensors, buttons, write slow data to SPI flash // or onto Sdcard, send/receive slow telemetry set_clock(128000, 460800); // do math, send/receive big data.. ..

Rogerclark
Пн, 18 декабря 2017 г., 4:55 утра
ХОРОШО

Итак, что нужно квадратной волной 20 МГц.

Акронис
Пн, 18 декабря 2017 г. 13:02
Привет, Стивестронг !

Я очень благодарен за вашу бесценную помощь в изучении этого прекрасного микроконтроллера STM32F407 !
Это не прямоугольный генератор, но я думаю, что это то, что мне нужно, и будет хорошо работать от меня !

Код мне понравился, но у меня есть несколько вопросов:
1. Я не нашел информацию на форуме о строке gpio_set_af_mode (timer5_ch1_pin, 2);
Что он делает и что делает цифра 2 ?

2. Можно ли назначить другой пин ? Например PA2 ? Я пытался, но я не работаю. Как я могу изменить ?

3. Возможно ли получить еще больший частотный генератор, например, 84 или 100 или 168 МГц ?

Я был бы очень благодарен, если бы вы могли помочь мне с этими новичками .

Ахулл
Пн, 18 декабря 2017 г. 13:21
[Акронис - Пн, 18 декабря 2017 г. 13:02] - ...
3. Возможно ли получить еще больший частотный генератор, например, 84 или 100 или 168 МГц ?
...
Вероятно, не напрямую, но есть несколько способов удвоить частоты, которые вы * можете * генерировать, если вы не против добавить немного дополнительного оборудования, например, с парой шлепанцев.

Изображение

.. Хотя я не уверен, будет ли скромный CD4528 достаточно быстрым для вашего применения, поэтому вам, возможно, придется сделать немного Google, чтобы найти что -то подходящее.

Вы также можете посмотреть на AD9851 DDS -генератор сигналов, контролируется STM32F103, конечно : D

https: // www.eBay.com/sch/i.HTML?_SACAT = ... DDS&_frs = 1

Какова цель этой квадратной волны?

Акронис
Пн, 18 декабря 2017 г. 13:28
Привет, ахалл.

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

Мы разрабатываем интересный проект для измерения процента алкоголя.
Чтобы изменить желаемое поколение.
Сначала сгенерированный сигнал, а затем проанализируйте отклик ADC микроконтроллера.
Кстати, ADC очень помог Sevestrong

Эдогальдо
Пн, 18 декабря 2017 г., 13:32
[Акронис - Пн, 18 декабря 2017 г. 13:02] - 3. Возможно ли получить еще больший частотный генератор, например, 84 или 100 или 168 МГц ?
Если вам просто нужна квадратная волна, должно быть возможно вывести системные часы (до 168 МГц) через булавки MCO, но я не могу предоставить вам технические данные..

Ура, e.

Акронис
Пн, 18 декабря 2017 г. 13:35
Если вам просто нужна квадратная волна, должно быть возможно вывести системные часы (до 168 МГц) через булавки MCO, но я не могу предоставить вам технические данные.. И где я могу увидеть информацию ?

Акронис
Пн, 18 декабря 2017 г. 13:47
Если кто -то заинтересован, результаты измерения выглядят так
https: // yadi.SK/I/C05IOVNY3QIJUN

Стивестронг
Пн, 18 декабря 2017 г. 13:56
[Акронис - Пн, 18 декабря 2017 г. 13:02] - Это не прямоугольный генератор, но я думаю, что это то, что мне нужно, и будет хорошо работать от меня !
Ну, это должен быть сигнал квадратной волны, потому что это цифровой выходной сигнал ШИМ из таймера 5 Сравните канал 1.
[Акронис - Пн, 18 декабря 2017 г. 13:02] - pinMode(D18, OUTPUT); digitalWrite(D18, 0); delay(10); int read1 = digitalRead(D18); digitalWrite(D18, 1); delay(10); int read2 = digitalRead(D18);

Акронис
Пн, 18 декабря 2017 г. 14:04
Ну, это должен быть сигнал квадратной волны, потому что это цифровой выходной сигнал ШИМ из таймера 5 Сравните канал 1. хм . Но это не .Почему ...

С осциллографом

https: // yadi.sk/i/ly1g8rbe3qiqfn

Акронис
Пн, 18 декабря 2017 г. 14:10
digitalWrite(ledPin,!digitalRead(ledPin));

Акронис
Солнце 18 февраля 2018 г. 10:22
Привет, Стив

Я обновил библиотеку сегодня до вашего последнего на F4.
В предыдущей версии этот код работал нормально, но теперь дает ошибку
void setup () { Serial.begin(115200); Serial.println("[hello]"); } void loop () { Serial.println(millis()); delay(1000); }

Стивестронг
Солнце 18 февраля 2018 г., 11:07
Используйте gpio_afmode_tim3_5 вместо значения 2 [hello] 0 117 234 351 468 585

Акронис
Солнце 18 февраля 2018 г. 11:43
Стив. Эти параметры скомпилируются обычно, но код
int count =0; void setup () { } void loop () { if ( count==0) { Serial.begin(115200); Serial.println("[hello]"); count=1; } Serial.println(millis()); delay(10000); }

Стивестронг
Солнце 18 февраля 2018 12:12
Ой, извините.
Мой предыдущий коммит ошибочно удалил предопределенные экземпляры таймера.
Я снова добавил их.
Пожалуйста, снова посмотрите мой репо.
(В будущем обратите внимание на предупреждения, напечатанные Arduino IDE в окне сообщения!)

Акронис
Солнце 18 февраля 2018 12:32
Стив великолепен !

Все работает, как раньше !
Спасибо!