Easyelectronics.ru

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

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



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

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

Зарегистрирован: 16 дек 2013, 16:38
Сообщения: 118
Добрый день!
ковыряюсь в свободное время в камне 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
Сообщения: 1028
engineer83 писал(а):
Что я забыл учесть?

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


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

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

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


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

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


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

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

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


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

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


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

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


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

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


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

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

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


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

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

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


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

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


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

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

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

Show Делай раз.

Show Делай два.

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

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


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

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


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

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


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

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


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

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

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

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


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

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


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

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

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

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

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

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


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

Зарегистрирован: 16 дек 2013, 16:38
Сообщения: 118
И всё же по скорости. Я тут экспериментирую с настройками порта, в качестве изучения периферии
В 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
Сообщения: 3751
Это - скорость нарастания фронтов. Подключите осциллограф и посмотрите при разных настройках крутизну фронтов. Пониженная крутизна фронтов нужна для экономичных режимов и уменьшения выбросов эл.магн. помех, когда не нужна высокая скорость переключения портов. Значения 2/25/50/100 - это условные ориентировочные величины.

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


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

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


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

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


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

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


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

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



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

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


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

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


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

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


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

Сейчас этот форум просматривают: kos


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

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

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