Easyelectronics.ru

Электроника для всех
Текущее время: 18 сен 2019, 23:06

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 18:20 
Заглядывает иногда

Зарегистрирован: 16 дек 2013, 16:38
Сообщения: 114
Добрый день!
ковыряюсь в свободное время в камне STM32F407VET6
вот заинтересовался вопросом, какая максимальная частота доступна при обычном ногодрыге
Частота проца 168МГц, допустим нога A1, подаю 2млн импульсов на ногу, и смотрю анализатором (100МГц)

Цитата:
RCC->AHB1ENR |=RCC_AHB1ENR_GPIOAEN;
GPIOA->MODER &= ~GPIO_MODER_MODER1 ;
GPIOA->MODER |= GPIO_MODER_MODER1_0 ;
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR1; //100МГц

int main (void)

for (i = 0; i < 2000000; i++)
{
GPIOA->BSRR=GPIO_BSRR_BR_1;
__ASM("NOP");
GPIOA->BSRR=GPIO_BSRR_BS_1;
__ASM("NOP");
}


так вот. Максимальная частота при такой процедуре всего-то 10МГц но проходят все 2млн импульсов. Если убрать нопы, то посылка идет быстрее, но больше половины импульсов теряются
Что я забыл учесть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 18:36 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1009
engineer83 писал(а):
Что я забыл учесть?

Запись в порт занимает 4 такта, без цикла и NOP должен быть 21 MHz.
А вообще нет, правда на F407 сейчас проверить не могу, но на F429 по времени получается 2.5 такта на период. Сами порты, если верить документации, могут переключаться каждые 2 такта, так что пропуски вполне могут быть. Попробовал отключить write buffer - эффект минимальный...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 19:03 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5654
engineer83 писал(а):
Что я забыл учесть?

Ногодрыг не прерогатива ARM ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 19:48 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3621
Самый быстрый ногодрыг - на ассемблере, причем без цикла, а напрямую двумя инструкциями str. Одна str записывает 1 в порт, вторая str следом записывает 0, ну и так далее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 20:19 
Заглядывает иногда

Зарегистрирован: 16 дек 2013, 16:38
Сообщения: 114
dosikus_2 писал(а):
Ногодрыг не прерогатива ARM ...

да, это давно понятно. Хотел в своей теме спросить, но там тишина.
А дело вот в чем. Я запускаю экран на максимальной скорости SPI 42МГц. Но экран хитрый, там ещё нужно управлять линиями CS и DC.
Если ставлю прескаллер=4, т.е. 21МГц, то экран выводит изображение нормально.
Если ставлю=2, т.е. 42МГц, то в некоторых местах цвета искажаются. Понятно что дисплей может не успевать, но хочу быть точно уверен, что хотя бы проц выдает нормально


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 20:22 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3621
Если речь о ILI9341, то у него документированный максимум 10 МГц. Все, что выше - без гарантий. Хотя я сам пробовал, насколько помню, до 36 МГц норм идет, а выше уже косячит.
Выходы МК запросто тянут 42 МГц.
Хотите большой скорости обновления дисплея - используйте параллельный интерфейс. Это идеологически более правильно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 20:25 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 941
BusMaster писал(а):
Самый быстрый ногодрыг - на ассемблере, причем без цикла, а напрямую двумя инструкциями str. Одна str записывает 1 в порт, вторая str следом записывает 0, ну и так далее.
Это вполне и без ассемблера легко делается с включенной оптимизацией. Только вот GPIO от такой скорости всё равно подавится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 20:28 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 415
Откуда: Киев
У F407 предельно максимальный ногодрыг 84 МГц. (проверено)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 20:31 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3621
Цитата:
Это вполне и без ассемблера легко делается с включенной оптимизацией.

Не, нифига. Оптимизатор полюбасу запихнет это в цикл, а это уже снижение скорости. Да и не факт, что оптимизатор сообразит использовать два РОН для переключения ноги. Там нужны именно два значения в РОН - одно включает, другое выключает ногу, а инструкция str поочередно берет то из первого, то из второго РОН.
И на такой скорости порты не подавятся - они запитаны от AHB


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 20:35 
Заглядывает иногда

Зарегистрирован: 16 дек 2013, 16:38
Сообщения: 114
BusMaster писал(а):
Если речь о ILI9341, то у него документированный максимум 10 МГц. Все, что выше - без гарантий. Хотя я сам пробовал, насколько помню, до 36 МГц норм идет, а выше уже косячит.
Выходы МК запросто тянут 42 МГц..

Это дисплей ILI9486, такие идут к платам Raspberry, там на плате стоят сдвиговые регистры, они преобразуют SPI в параллельный код. На плате Raspberry частота клока примерно 20 МГц.
Я к чему веду. Сдвиговые регистры очень быстрые, логика, даже при 42МГц частота параллельной шины всего будет 2,6МГц, что совсем не много.
Дисплей очень нравится, хотелось бы разобраться со скоростью.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 20:44 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3621
Так всё равно вы превышаете частоту клока сдвиговых регистров (74HCT4094).
Вообще, эти ардуинщики взяли и испортили дисплей своими сдвиговыми регистрами. Подобные дисплеи должны работать от параллельного интерфейса, если хотите достичь высокой скорости обновления картинки. Через СПИ вы все равно получите не больше 10-15 фпс (на полный экран), как бы не старались. Впрочем, для текстового режима и статичной графики хватает и 10 фпс. А за счет "оконной" перерисовки будет вполне норм смотреться. Тем более, что размер ОЗУ у МК просто не оставляет другого варианта, кроме как работа внутри небольшого окна. Напирмер, вывод текста - задаем окно размером равным размеру выводимого символа и выводим в него символ. Наклонные линии и окружности рисуются поточечно - окно размером в одну точку. Горизонтальные и вертикальные линии, а так же заливки рисуются оконным способом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 22:50 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 941
BusMaster писал(а):
Цитата:
Это вполне и без ассемблера легко делается с включенной оптимизацией.

Не, нифига. Оптимизатор полюбасу запихнет это в цикл, а это уже снижение скорости. Да и не факт, что оптимизатор сообразит использовать два РОН для переключения ноги. Там нужны именно два значения в РОН - одно включает, другое выключает ногу, а инструкция str поочередно берет то из первого, то из второго РОН.
Слава богу, это проверить 10 секунд. :)

Show Делай раз.

Show Делай два.

Show Ну и моё любимое. Делай три.

BusMaster писал(а):
И на такой скорости порты не подавятся - они запитаны от AHB
Не буду спорить, чипов разных дофига, какие-то и вытянут.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 23:47 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3621
Подобные штуки я завсегда делал на ассемблерной вставке и не гадал по поводу "а что же сделает оптимизатор при конкретно вот таком уровне оптимизации?". Когда ты это написал вручную, ты железобетонно уверен, что это будет именно так независимо от компилятора и от погоды в Одессе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 23:56 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 941
Свой компилятор надо знать и верить ему. Ну и проверять, конечно же. Зачем сразу кидаться в asm, если можно на С++ написать и просто посмотреть критические места в листинге?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 11 авг 2019, 23:59 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3621
Извини, я больше верю себе, чем какой-то софтине. Версия изменится, чето не сработает - потом сиди и разгребай листинги на сто тыщщ строчек.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 00:11 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 941
А я как раз наоборот, больше компилятору. Вот кусок из одного проекта. Жуткий ногодрыг, но это вызвано схемотехникой.

Где больше шанс ошибиться?
Show Тут на С++

Show Или если я это же на asm напишу?
И не факт, что на asm я бы тут что-то смог ужать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 02:20 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3621
Шанс ошибиться ровно одинаковый. А если уметь ЭФФЕКТИВНО работать, то любую писанину можно очень эффективно делать, зато бонусом идет однозначное поведение и минимум отладки. Знаешь, чем отличается эффективный программист от толпы остальных? Тем, что его продукт работает эффективнее и надежнее, чем у остальных.На то голова и дана программисту, чтоб он ею думал, а не тупо жал батоны, полагаясь на авось.
Вообще, тут не о том спор! Изначально было сказано, как именно происходит наиболее быстрое переключение порта с точки зрения процесса. А уж как оно сделано - руками или волшебной кнопкой "сделать всё красиво" - это не было предметом обсуждения. Ты как всегда начал чето спорить на ровном месте.
Да и проблема то вовсе не в быстродействии ног МК. Проблема в ограниченной скорости сдвиговых регистров на плате дисплея. Эффективный программист не только умеет жать батоны на плюсах, но и разбирается в железе, в том числе и за пределами МК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 09:46 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 941
BusMaster писал(а):
А если уметь ЭФФЕКТИВНО работать, то любую писанину можно очень эффективно делать, зато бонусом идет однозначное поведение и минимум отладки.
Ну я как раз и показал как эффективно написать.

BusMaster писал(а):
Знаешь, чем отличается эффективный программист от толпы остальных?
Это который друг эффективного манагера?

BusMaster писал(а):
Тем, что его продукт работает эффективнее и надежнее, чем у остальных.На то голова и дана программисту, чтоб он ею думал, а не тупо жал батоны, полагаясь на авось.
Знал бы ты сколько кода и тестов стоит за тем, чтобы не полагаться на авось, а гарантировано получать эффективный и надёжный код. Знания, опыт и время вложены в написание классов, которые легко применять и иметь на выходе результат практически без отладки.

BusMaster писал(а):
Ты как всегда начал чето спорить на ровном месте.
Отнюдь. Ты сыпешь ложными утверждениями:
- "Самый быстрый ногодрыг - на ассемблере, причем без цикла, а напрямую двумя инструкциями str."
- "Оптимизатор полюбасу запихнет это в цикл, а это уже снижение скорости. Да и не факт, что оптимизатор сообразит использовать два РОН для переключения ноги."
И неокрепшие души так и будут на асм молиться, вместо того чтобы осваивать современные методы.

BusMaster писал(а):
Эффективный программист не только умеет жать батоны на плюсах, но и разбирается в железе, в том числе и за пределами МК.
Эффективным должен быть код, написанный опытным программистом. И сейчас именно на С++ можно наиболее быстро получить эффективный и надёжный код. Ну да, надо для этого подучиться, но это быстро оправдает себя в работе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 12:13 
Заглядывает иногда

Зарегистрирован: 16 дек 2013, 16:38
Сообщения: 114
И всё же по скорости. Я тут экспериментирую с настройками порта, в качестве изучения периферии
В F407 есть вот такие настройки порта
00 = 2MHz (Low Speed)
01 = 25MHz (Med. Speed)
10 = 50MHz (Fast Speed)
11 = 100MHz/80MHz (High Speed)(100MHz(30pf) - 80MHz(15pf))
Почему когда я устанавливаю 00, т.е. 2МГц, нога всё равно выдает 10МГц, как и в остальных режимах?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 12:25 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3621
Это - скорость нарастания фронтов. Подключите осциллограф и посмотрите при разных настройках крутизну фронтов. Пониженная крутизна фронтов нужна для экономичных режимов и уменьшения выбросов эл.магн. помех, когда не нужна высокая скорость переключения портов. Значения 2/25/50/100 - это условные ориентировочные величины.

VladislavS, и тут Остапа понесло. Опять ты за свое - спор ради спора. Тема вообще не о том! Если ты решил выебнуться жатием батонов на плюсах, то в этой теме тебя всё равно не оценят, ибо тут совершено другой вопрос. И я давно уже объяснил с точки зрения железа, как именно работает быстрое переключение портов. Остальное - суета. Да и суть проблемы совсем не в софте и даже не в МК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 13:03 
Заглядывает иногда

Зарегистрирован: 16 дек 2013, 16:38
Сообщения: 114
BusMaster, т.е. условно... при выборе 2МГц и подаче 10, мы просто получим более пологие фронты, но частота имеет шанс сохраниться?
Пора наверное вытаскивать осла, с анализатором много каши не сваришь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 13:28 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3621
Не "имеет шанс", а стопудово сохранится, при прочих равных. Просто чем выше частота сигнала, тем сильнее будет он похож на синусоиду.
На самом деле, на этой "скорости порта" в своё время многие спотыкались - половина народа как раз и думала так же как вы. Вторая половина читала мануал и тыкала осциллом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 13:40 
Заглядывает иногда

Зарегистрирован: 16 дек 2013, 16:38
Сообщения: 114
я просто как и большинство воспринял "частоту тактирования порта" как частоту обновления ног порта, более того даже встречал в сети какие-то типа уроки что так оно и есть) ну я молчу что то были уроки от калокубов. Просто идею вынес оттуда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 14:22 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5654
BusMaster писал(а):
Вторая половина читала мануал и тыкала осциллом.



F4 дискаверина , выхлоп MCO2 при разных значениях OSPEEDR .
см. RISE в измерениях...

Изображение Изображение Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите по максимальной скорости GPIO STM32F4
СообщениеДобавлено: 12 авг 2019, 14:24 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6138
"при выборе 2МГц и подаче 10, мы просто получим более пологие фронты"
Неа. Фронты будут теми-же.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB