Когда я открываю проект в STM32CubeMX и настраиваю UART, есть конфигурация максимальной скорости вывода (в разделе «Настройки GPIO» ), которая по умолчанию имеет значение « Очень высокая» . Варианты:
В руководстве пользователя STM32CubeMX о максимальной выходной скорости говорится следующее :
Максимальная выходная скорость GPIO (только для коммуникационных периферийных устройств)
По умолчанию для нее установлено значение «Низкая» для оптимизации энергопотребления, и ее можно изменить на более высокую частоту в соответствии с требованиями приложения.
Но на самом деле он установлен на «Низкий» только для обычных выходных GPIO. Для контактов UART TX/RX фактически установлено значение Very High.
У меня есть несколько вопросов по этому поводу:
Параметр скорости GPIO просто настраивает мощность привода или способность того, сколько вывод может генерировать и потреблять ток. Больший ток означает более быстрый переход сигнала к более тяжелым емкостным нагрузкам.
1) Например, управляя затвором FET, который обладает высокой емкостной емкостью, и ему нужно потратить минимальное время на полпути.
2) Кто-то часто выбирал эти значения по умолчанию только потому, что вам нужно иметь некоторые базовые настройки по умолчанию, которые в основном работают. Использование, скажем, 3 мегабод с длинными проводами для отладки UART может быть безопаснее, чтобы иметь высокую пропускную способность, но мигание светодиода на GPIO один раз в секунду не имеет значения, какая настройка используется.
3) Конечно, они могут обмениваться данными, если используемая скорость передачи достаточно низкая, чтобы скорость нарастания сигнала не сильно влияла на ошибку. Самая слабая мощность привода может работать примерно до 2 МГц, зависит от того, какой микроконтроллер используется.
Это соответствует конфигурации мощности привода вывода GPIO, настроенной битами регистра OSPEEDR. Для каждого вывода есть 4 возможных настройки. Выбор более сильного выходного привода позволяет повысить максимальную рабочую частоту (поскольку переходы выполняются быстрее), но приводит к более высокому энергопотреблению при переключении контактов и более высоким уровням электромагнитных помех. Более низкая прочность означает более низкий уровень электромагнитных помех, более низкое энергопотребление и более низкую максимальную скорость.
Взгляните на таблицу данных конкретного MCU, который вы используете, чтобы проверить, что именно это означает. Например, для STM32F405/407 вот это (глава 5.3.16: Характеристики портов ввода/вывода , параграф Характеристики входов/выходов переменного тока ):
Итак, вы видите, что даже при минимальной настройке, в худшем случае, вы можете ожидать 2 МГц. Это, вероятно, намного выше, чем то, на что уже настроен ваш UART, поэтому на самом деле нет необходимости устанавливать его на «очень высокий». Вероятно, они делают это по умолчанию, чтобы быть в безопасности, но ваша скорость передачи данных не настроена на 100 Мбит/с, не так ли?
В качестве общего совета устанавливайте этот параметр на «низкий», если в этом нет особой необходимости.
Теперь, конечно, два UART, настроенных с разными настройками, могут общаться друг с другом (при условии, что скорость передачи данных ниже максимальной скорости, которую может поддерживать GPIO в соответствии с приведенной выше таблицей и выбранной вами настройкой). UART, сконфигурированный с более сильным параметром, будет иметь более резкий выходной сигнал, чем другой, и будет излучать больше электромагнитных помех, но они смогут общаться друг с другом.
Алаа М.
Только я