STM32 GPIO. Скорость работы портов ввода-вывода.
ฝัง
- เผยแพร่เมื่อ 5 ก.ย. 2024
- STM32 GPIO. Скорость работы портов ввода-вывода.
------------------------------------------
Поддержать автора канала можно перейдя по ссылке:
yoomoney.ru/to...
Или просто отправив перевод на Yandex.кошелек:
4100116547550395
А также переводом по номеру карты Сбер:
4279-3000-1033-0561
------------------------------------------
- смотрю и другие ваши видео, много нового узнал, за что спасибо, но тут вынужден не согласиться с вами.
- Проверял я тоже STM-ки разные..... Например, у STM32F429, на платке Дискавери, очень хорошо наглядно всё видно. Если выставлять в параметрах - InitD.GPIO_Speed = GPIO_Speed ставить 2MHz или 100MHz, то есть там существенная разница. При 2 МГц фронты десятки ns, при 100МГц уже несколько ns, при условии если смотреть на ВЧ щупе, при соблюдении всех правил ВЧ измерений (GND насажен прямо на кольцо щупа). Проверял на гигагерцовом Тектрониксе..... Так что, всё там хорошо, и можно вытянуть скорости, просто нужно согласовывать нагрузки, не делать больших индуктивностей. У микрух, которые подключаются на выходы МК, тоже есть своя емкость входная. По этой причине, в даташыте указывают емкости нагрузок. Если использовать высокочастотный осцилл, и "правильный" щуп, есть там и прямоугольность, и есть там наносекунды..... Осцилл возьмите пошустрее и всё будет хорошо.
Да, вы правы.
Скажи, музыку затащит?
Музыка высокого качества - это 8 линий ШИМ частотой 2.82 МГц, а максимальная частота возможной позиции центральной палки от крайних - 45.16 МГц, т.е. длительность фронта-спада требуется:
22.14427ns период / 2 фронта / еще на 3 для качества = 3.68 ns
Это не в STM32 проблема, а в вашем осциллографе, пропускной способности не хватает, чтоб увидеть. Он не отображает реальную картину. Разница между режимами есть и весьма значительная. Изменяется скорость нарастания и соответственно выбросы на выводах при отсутствии необходимой терминации. Не раз сталкивался со случаями когда при установке High устройство вообще не работает, как раз из-за выбросов. Или наоборот, в режиме Low не хватает скорости. Когда-то тоже эту штуку смотрел осциллографом, в режиме High на за 4ns выстреливает, а в режиме low аж 16ns. Какой-то stm32f103 был.
Где вы были пару лет назад когда этот ролик снимался. Сейчас это уже архив можно сказать.
@@VladimirMedintsev Учится никогда не поздно)) Надеюсь мой комментарий кому-то поможет.
@@AxGxP так какя в итоге разница? Тоже смотрел осцилограффом на 200мгц , разницы между режимами не видна.
@@gennadyz7699 я могу гигагерцовым поглядеть.. если интересно
@@VladimirMedintsev Снимите 2 видео по этой теме. Попросите быстрый ослик у кого и снимите. Так скажем работа над ошибками.
Спасибо большое за Ваши старания
Что значит "подписывайтесь, пожалуйста"?
Подписался обязательно!
Аллилуя!!!!
Все пальцы вверх!
Пытаюсь освоить данные контроллеры и тоже мучал данный вопрос. Теперь всё понято.
А какова емкость щупа осциллографа? И что это за осциллогрф? Он может искажать действительность до полной неузнаваемости.
Терзают меня смутные сомнения: не забыли ли вы переключить щуп на х10?
Очень интересный ролик! Спасибо!
Смотрю в книгу вижу .... много букв. Увидеть разницу можно только если организовать передачу данных через порт на максимальной возможной скорость при разных значениях параметра SPEED на коротких линиях 10-20см. Попробуйте передавать данные по I2C на скорости 400кгц и удлиняйте провода до 0,5-1,0 метра. Много интересного узнаете. Но всё равно спасибо.
Не, музыку не затащит. Музыка высокого качества - это 8 линий ШИМ частотой 2.82 МГц, а максимальная частота возможной позиции центральной палки от крайних - 45.16 МГц, т.е. длительность фронта-спада требуется:
22.14427ns период / 2 фронта / еще на 3 для качества = 3.68 ns
Спасибо. У меня вопрос, по близкой теме. Хочу использовать внешнюю АЦП на 80 МГц и stm32h750. Обращаюсь напрямую к регистру IDR ( среда Cube IDE) и по таймеру DWT смотрю сколько тактов занимает считывание порта. И получается унылые 123 такта ( чуть более 3МГц). Тоже самое делал на stm32f103, получил 12 МГц ( все по даташиту). Тактовая частота МК stm32h7 максимальна 480МГц ( проверил в кубеи в программе считал данные). В чем может быть дело???
Интересно через буфер подключить, как он будет без ёмкостной нагрузки работать.. так же желательно на самих щупах попробывать подстройку покрутить...
Похоже у автора с осциллографом какая-то проблема... Может он банально щупы забыл в режим 1:10 переключить, вот мы и видим ограничение на 6MHz))). На самом деле на 10MHz там очень хороший и красивый меандр.
Как я понял это скорость частоты установки или сброса непосредственно регистра ODR. Регистром SRP(точно не помню название, регистр сброса и/или установки). Нужно делать тест именно установкой и сбросом этих регистров программно....
Не совсем так, точнее совсем не так.
Видео вообще не имеет никакого отношения к регистрам.
Если внимательно поглядеть то речь идет о способности процессора формировать нормальные фронты это раз и влиянии скорости работы установленной для порта на эти самые фронты это два.
@@VladimirMedintsev так в том то и дело при аппаратной генерации разницы практически и не будет...
А при какой будет?
Это проверялось только на F303? минимальная ширина импульса 255нс (PWM 50%) На F103, F030 cитуация такая же?
А почему появляется эта ступенька?
Из-за индуктивности в щупе и дорожке.
А якщо напругу знизити в десять разів то й фронт/спад зменшиться в десять разів?
VCC 0.33V? :) Шо це за контролер? Дайте 2!
Я правильно понял менять скорость работы GPIO не имеет смысла?
На скорости до 2 МГц ничего не меняется. Вы же сами это видели. Функция и суть этого изменения скорости почти не описана. Возможно что-то меняется в энергопотреблении чипа, но я описания тоже не нашел.
Как пишет ST в AN4899 и AN3430, скорость порта влияет на его энергопотребление и его шумы (EMI, SSO).
Сергей, спасибо Вам огромное! Щас почитаю.
Автор переключал выход с разной частотой, и назвал это скоростью работы портов. В реальности было показана разная частота шима, настройка GPIOx->OSPEEDR не менялась. Хотя именно OSPEEDR влияет на скорость нарастания напряжения - те самые фронт/спад.
Дополнительно:
Выход пина имеет несколько параллельных полевых транзисторов, которые включаются с разной задержкой (зависимость от OSPEEDR). Задержка рассчитана на стандартную ёмкость кмоп входов простых микросхем, 2000 пикофарад - это явный перебор.
Выбор скорости влияет на дребезг и переотражение сигнала в длинной неоднородной линии. В какой-то мере OSPEEDR - это замена терминального резистора.
Например sdram память откажется работать при низком параметре OSPEEDR, а sd флешка будет уверенно ловить двойные стробы при завышенном параметре OSPEEDR.
Неужели GPIOx->OSPEEDR не менялась? Мне кажется кто-то был не сильно внимательным.
Кстати а 2000 пикофарад упоминаемых вами это вы откуда такое прифантазировали?
Бесполезное видео, из которого можно сделать поверхностный вывод, что настройки тактирования ничего не дают, хотя, на самом деле это не так.
ЗЫ: Оговорочка, настройки скорости (OSPEEDR), а не тактироватния, конечно же.
Очень прикольный комментарий.
@@VladimirMedintsev Хотя нет, в комментариях есть дельные замечания о влиянии настройки на режим работы выходного буффера, увеличении бросков тока и помех на переключениях в скоростных режимах, необходимости правильно нагружать вывод и согласовывать измерительный вход осциллографа. Так что видео не совсем бесполезное.