какую частоту выдаст STMF407

Кто любит RISC в жизни, заходим, не стесняемся.
shalfey
Встал на лапы
Сообщения: 123
Зарегистрирован: Ср май 16, 2012 20:44:38
Откуда: Харків-Україна.

какую частоту выдаст STMF407

Сообщение shalfey »

Уважаемые "коты". Начал изучать STM. Мигать диодами надоело. Решил сделать генератор -частотомер. Пока вожусь с генератором. Задача- меандр. Выходных частот от 200 герц до 10 Mгц. Какую максимальную частоту может выдать F407 Discovery, через канал таймера. У меня по осцилогр. показывает всего 3мгц. Все шины на максимум, никаких прескалеров.
#include <stm32f4xx.h>
#include <stm32f4xx_rcc.h>
#include <stm32f4xx_gpio.h>
#include <stm32f4xx_tim.h>
int main(){
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
GPIO_InitTypeDef gpio;// структура
GPIO_StructInit(&gpio); // заполняем стандартными значениями
gpio.GPIO_OType = GPIO_PuPd_NOPULL ; // подтяжка резисторами
gpio.GPIO_Mode = GPIO_Mode_AF ; // работаем как выход
gpio.GPIO_Pin = GPIO_Pin_9;
GPIO_Init(GPIOE, &gpio);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
TIM_TimeBaseInitTypeDef base_timer;
TIM_TimeBaseStructInit (&base_timer);
base_timer.TIM_Prescaler = 1; //
base_timer.TIM_Period = 2; //
TIM_TimeBaseInit(TIM1, &base_timer);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_TIM1);

TIM_OCInitTypeDef timer_oc;
TIM_OCStructInit(&timer_oc);
timer_oc.TIM_Pulse =1;
timer_oc.TIM_OCMode = TIM_OCMode_Toggle;
/* Включаем основной и комплементарный выводы */
timer_oc.TIM_OutputState = TIM_OutputState_Enable;
timer_oc.TIM_OutputNState = TIM_OutputNState_Enable;
/* Активируем каналы */
TIM_OC1Init(TIM1, &timer_oc);


TIM_BDTRInitTypeDef timer_bdtr;
TIM_BDTRStructInit(&timer_bdtr);
timer_bdtr.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
TIM_BDTRConfig(TIM1, &timer_bdtr);


// RCC_PCLK2Config(RCC_HCLK_Div2);/*поигрался здесь с разным Div, всё на максимуме*/

TIM_Cmd(TIM1, ENABLE);


{
while(1);
}
}
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: какую частоту выдаст STMF407

Сообщение Reflector »

F/2 в режиме шима должно быть, но для начала хотя бы скорость портов нужно настроить.
Реклама
shalfey
Встал на лапы
Сообщения: 123
Зарегистрирован: Ср май 16, 2012 20:44:38
Откуда: Харків-Україна.

Re: какую частоту выдаст STMF407

Сообщение shalfey »

Спасибо. Читал про порты, что это так параметр(только на фронт) на частоту не влияет. Пойду Шим изучать. Была мысль ,что всё таки Шим, но решил спросить.

Добавлено after 28 minutes 24 seconds:
Поставил частоту gpio.GPIO_Speed = GPIO_Speed_50MHz; Всё равно на выходе 3 MHz
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: какую частоту выдаст STMF407

Сообщение Reflector »

[uquote="shalfey",url="/forum/viewtopic.php?p=3517312#p3517312"]Поставил частоту gpio.GPIO_Speed = GPIO_Speed_50MHz; Всё равно 3 MHz[/uquote]
Естественно, для 3MHz ничего и не должно поменяться, а для 84MHz разница в форме сигнала может быть ощутимая.

Код: Выделить всё

base_timer.TIM_Prescaler = 1; //
base_timer.TIM_Period = 2; //
Тут нужно единички отнимать, т.е. написано Prescaler = 1, а на самом деле это означает деление на 2. И период 3, итого 6 тактов на период, плюс нужно два раза сгенерить toggle, получится F/12 при условии, что делитель APB2 равен 1.
Реклама
Эиком - электронные компоненты и радиодетали
shalfey
Встал на лапы
Сообщения: 123
Зарегистрирован: Ср май 16, 2012 20:44:38
Откуда: Харків-Україна.

Re: какую частоту выдаст STMF407

Сообщение shalfey »

Спасибо сейчас поотнимаю, гляну. Мне 10 мгц и хватит. Потом надо думать ,как разные частоты задавать. Если АЦП (резистором) крутить на входе. А код использовать как коэффициенты деления таймера?

Добавлено after 29 minutes 58 seconds:
При установке 1-1и в делителе и в периоде выдал 20 MHz. До F/2 никак не доходит ,ну да ладно. Теперь её(частоту) надо плавно изменять. Завтра буду думать над кодом. :roll:
Реклама
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

Re: какую частоту выдаст STMF407

Сообщение AlanDrakes »

f/2 работает только на MCO выходах. Впрочем, на него можно вывести и внутреннюю тактовую частоту.

Плавно делить эту частоту уже не получится.
Если разогнать кристалл до максимальных 168МГц, то можно получить частоты:
168М / 84М / 59М / 42М / 33.3М и другие, зависящие от частоты ядра.
На частотах ниже 1МГц можно использовать уже генерацию частоты таймерами. Естественно, потребуется расчитывать делители.
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: какую частоту выдаст STMF407

Сообщение Reflector »

[uquote="AlanDrakes",url="/forum/viewtopic.php?p=3517698#p3517698"]f/2 работает только на MCO выходах.[/uquote]
F/2 работает на любом таймере в режиме шима, ARR и CCR должны быть равны 1. И измеряет частоту, кстати, тоже до F/2.
Sergi
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Re: какую частоту выдаст STMF407

Сообщение Sergi »

На F4 возможно наверное и DDS сделать до 10МГц. Если в основном цикле крутиться, а настройку вынести в прерывания. Надо посчитать.
shalfey
Встал на лапы
Сообщения: 123
Зарегистрирован: Ср май 16, 2012 20:44:38
Откуда: Харків-Україна.

Re: какую частоту выдаст STMF407

Сообщение shalfey »

Я так понял,что если контроллер сам будет выдавать частоты и сам будет их мерить, то точность измерения будет зависеть только от точности кварца. Даже при прямом счёте измерения будут точные. Только как проверить сам кварц.

Добавлено after 22 minutes 43 seconds:
Ещё вопрос. Какая по умолчанию частота тактирования TM1 у STM32F407?
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

Re: какую частоту выдаст STMF407

Сообщение AlanDrakes »

Точность кварца обычно указана фирмой производителем. Те самые, например, 50ppm - 50 единиц на миллион. Получаем 50 / 1000000 = 0.00005 = 0,005%. Но с другой стороны это погрешность 4.3 секунды в сутки.

Смотрим.
TIM1 находится на нише APB2. Тактирование таймеров этих шин получается
SYSCLOCK / AHB_PRESC / APBx_PRESC * (1 или 2)
После сброса (до кода начальной инициализации из system_stm32f407xxx.c) все делители равны единице, то есть, частота не делится.

Самое смешное, что при подключении делителя APB2, таймер будет тактироваться с в двое БОЛЬШЕЙ частотой, чем остальной домен (пункт 5.2 Clocks), последние абзацы про таймеры.

Пример.
Внешний кварц на 8МГц (рекомендуемый). Включен PLL с домножением частоты до... например, 48МГц. AHB не делит частоту, APB2 делит частоту на 8
На таймер будет подано тактирование (48 / 8 * 2) = 12МГц.
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: какую частоту выдаст STMF407

Сообщение afz »

Кварц проверить, в принципе, элементарно. Запрограммируйте на МК часы и посмотрите, как они убегут или отстанут за сутки.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Аватара пользователя
AndTer
Поставщик валерьянки для Кота
Сообщения: 2406
Зарегистрирован: Ср фев 23, 2011 12:12:31

Re: какую частоту выдаст STMF407

Сообщение AndTer »

[uquote="afz",url="/forum/viewtopic.php?p=3534525#p3534525"]посмотрите, как они убегут или отстанут за сутки.[/uquote]
Ага... при этом при разной температуре они могут убегать и отставать по разному...
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
SIM31
Это не хвост, это антенна
Сообщения: 1363
Зарегистрирован: Чт апр 04, 2013 22:22:57
Откуда: Белгород, РФ

Re: какую частоту выдаст STMF407

Сообщение SIM31 »

[uquote="AndTer",url="/forum/viewtopic.php?p=3534537#p3534537"]Ага... при этом при разной температуре они могут убегать и отставать по разному...[/uquote]

Корректируйте по GPS, будет точность хоть 0.001 ppm
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: какую частоту выдаст STMF407

Сообщение afz »

AndTer писал(а):Ага... при этом при разной температуре они могут убегать и отставать по разному...
И это тоже можно (и нужно) оценить. Сразу станет видно, годится это дело для планируемого частотомера, или нет, т.е. устроит такая точность, или надо будет думать на тему термостатированного генератора. А, самое главное, сразу станет видна грубая ошибка, по типу забытой единицы, которую следовало отнять от требуемого коэффициента деления перед записью его в регистр автоперезагрузки.

К тому же в жилых помещениях температура, обычно, сильно не меняется...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Аватара пользователя
SIM31
Это не хвост, это антенна
Сообщения: 1363
Зарегистрирован: Чт апр 04, 2013 22:22:57
Откуда: Белгород, РФ

Re: какую частоту выдаст STMF407

Сообщение SIM31 »

[uquote="afz",url="/forum/viewtopic.php?p=3535062#p3535062"]К тому же в жилых помещениях температура, обычно, сильно не меняется...[/uquote]

Зимой очень сильно меняется, может с 18 до 26 прыгать не предсказуемо, то сквозняк дунул, то тепло от батареи отопления пошло. Градиент между полом и потолком очень большой.
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: какую частоту выдаст STMF407

Сообщение afz »

Так, по-любому, это не -40/+40. Ну, и, опять же, можно оценить: устроит такая точность частотомера, или надо применять специальные меры?
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
shalfey
Встал на лапы
Сообщения: 123
Зарегистрирован: Ср май 16, 2012 20:44:38
Откуда: Харків-Україна.

Re: какую частоту выдаст STMF407

Сообщение shalfey »

Всех с Новым годом!

Добавлено after 31 minute 19 seconds:
Вопрос: при Debug в СооСox-e ресурс флеш расходуется или нет?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: какую частоту выдаст STMF407

Сообщение Мурик »

Если отладка во флеше - расходуется, а если в ОЗУ - нет. Об отладке в ОЗУ. http://purebasic.mybb.ru/viewtopic.php?id=564#p7664
shalfey
Встал на лапы
Сообщения: 123
Зарегистрирован: Ср май 16, 2012 20:44:38
Откуда: Харків-Україна.

Re: какую частоту выдаст STMF407

Сообщение shalfey »

Запутался. Где в Кокосе выставить частоту кварца 8 мГц для дискавери, чтобы от внешнего тактировалось(в каком файле)? Выставляю все делители по Кубу. Не сходится частота. Мне надо 264 герца на выходе при 8 мгц кварце. Частотомера жаль нет.
Мяу ,мяу. Кто поможет?В выходной хочется "покодить", завтра на работу однако.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: какую частоту выдаст STMF407

Сообщение Мурик »

shalfey писал(а):Где в Кокосе выставить частоту кварца 8 мГц для дискавери
В файле stm32f4xx.h в строке.

Код: Выделить всё

#define HSE_VALUE    ((uint32_t)8000000)     /*!< Value of the External oscillator in Hz */
Вместо 8000000 может быть другое значение.
shalfey писал(а):Выставляю все делители по Кубу. Не сходится частота.
Какие делители выставили?
В архиве тестовый проект для STM32F407 с частотой ядра 168 МГц при кварце 8 МГц.
Вложения
STM32F407_8MHz_168MHz_Blink_PE0.7z
(358.12 КБ) 297 скачиваний
Ответить

Вернуться в «ARM»