user

Авторизация

Добро пожаловать!

Регистрация

Graf

stm32

Учебное пособие по STM32 GPIO

 В этом уроке мы обсудим оборудование STM32 GPIO. Как он работает и какие функции он имеет, чтобы вы могли настроить его наилучшим образом в соответствии с потребностями ваших приложений. Мы рассмотрим скорость GPIO, альтернативные функции, механизм блокировки и различные возможные конфигурации. Итак, давайте начнем!

STM32 GPIO-порты   

 Каждый из портов ввода-вывода общего назначения имеет два 32-битных регистра конфигурации, два 32-битных регистра данных, 32-битный регистр установки/сброса, 16-битный регистр сброса и 32-битный регистр блокировки. Каждый бит порта ввода-вывода свободно программируется, однако доступ к регистрам порта ввода-вывода должен осуществляться как 32-битные слова (доступ к полусловам или байтам не допускается). Назначение регистров установки/сброса — разрешить атомарный доступ для чтения/изменения к любому из регистров GPIO. Таким образом, отсутствует риск возникновения IRQ между доступом для чтения и изменения.

 Вот цифровая схема внутренней структуры типичного вывода GPIO. На нем показаны диодная защита, включение/выключение внутреннего подтягивания или понижения, а также двухтактный выходной драйвер, включение/выключение выхода для переключения между режимами входных/выходных контактов, цифровой вход с триггером Шмитта, аналоговый вход.

Внутренняя схема STM32 GPIO — Учебные пособия по ARM

 Вы должны предполагать, что все контакты GPIO по умолчанию не устойчивы к 5 В, пока вы не обнаружите в таблице данных, что конкретный контакт устойчив к 5 В, только тогда вы можете использовать его как контакт 5 В. Контакты в основном имеют напряжение 3,3 В и могут быть повреждены при подключении к линиям цифрового входа до 5 В. Во многих случаях сдвиг уровня может быть обязательным.

Максимальное напряжение STM32 GPIO

 Поэтому нужно быть осторожным с уровнем напряжения на входных контактах. А также вы должны обратить внимание на выходной ток при настройке выходных контактов GPIO. Максимальный ток, который может быть подан или подан на любой вывод GPIO, составляет 25 мА согласно таблице данных. И вам необходимо проверить его для конкретного целевого микроконтроллера, с которым вы имеете дело.

Максимальный выходной ток STM32 GPIO

Скорость STM32 GPIO   

Для режима ввода

 Когда вывод GPIO установлен в режим ввода, данные, присутствующие на выводе ввода-вывода, собираются в регистр входных данных каждый такт APB2. Это означает, что скорость шины APB2 определяет скорость входной выборки для контактов GPIO.

Для режима вывода

 Когда вывод GPIO установлен в режим вывода, у вас будет возможность настроить режим скорости вывода, запрограммировав соответствующие биты в регистрах конфигурации. Ниже приведена таблица различных режимов, доступных в таблице данных микроконтроллера STM32F103C8.

Таблица режимов скорости выводов STM32 GPIO

 Однако другие микроконтроллеры будут иметь другие параметры скорости вывода вывода. Например, другой микроконтроллер, который мы будем использовать в этом курсе, STM32L432KC. Он имеет специальный регистр управления скоростью для контактов GPIO, которые имеют 4 различных варианта скорости: низкая скорость, средняя скорость, высокая скорость, очень высокая скорость.

Регистр управления выходной скоростью STM32 GPIO

 Вы найдете, что означают эти уровни скорости, в характеристиках контактов ввода-вывода устройства. Вот таблица этого параметра из таблицы данных STM32L432KC.

 Примечание. Типичные значения зависят от различных параметров, таких как линейное напряжение V DDio и общая емкость вывода.

  • Низкая скорость -> до 10 МГц
  • Средняя скорость -> до 50 МГц
  • Высокая скорость -> до 100 МГц
  • Очень высокая скорость -> до 180 МГц
Параметры выходной скорости STM32 GPIO

 В этой таблице только для справки показан только низкоскоростной режим. Остальные режимы приведены в полной таблице в таблице данных.

Битовые атомарные операции GPIO   

 Программному обеспечению нет необходимости отключать прерывания при программировании GPIOx_ODR на битовом уровне: можно изменить только один или несколько битов за один атомарный доступ для записи APB2. Это достигается путем программирования на «1» регистра установки/сброса битов (GPIOx_BSRR или только для сброса GPIOx_BRR), чтобы выбрать биты для изменения. Невыбранные биты не будут изменены.

 Внешние прерывания STM32 GPIO   

 Все порты имеют возможность внешнего прерывания. Чтобы использовать внешние линии прерываний, порт должен быть настроен в режиме ввода. Мы обсудим это более подробно, когда перейдем к теме EXTI (внешний контроллер прерываний/событий).

Выбор периферийного контакта (PPS)   

 Чтобы оптимизировать количество периферийных функций ввода-вывода для разных пакетов устройств, можно переназначить некоторые альтернативные функции на некоторые другие контакты. Это достигается программным путем, путем программирования соответствующих регистров.

 Эта опция может помочь вам переназначить контакты ввода-вывода периферийных устройств, поэтому вам не придется слишком сильно менять разводку печатной платы при смене целевого микроконтроллера на плате. Это может быть чрезвычайно выгодно и облегчить процесс маршрутизации. И поможет вам убрать высокоскоростные сигналы, чтобы снизить уровень шума в определенных частях.

Механизм блокировки STM32 GPIO   

 Механизм блокировки позволяет заморозить конфигурацию ввода-вывода. Когда к биту порта применена последовательность LOCK, изменить значение бита порта уже невозможно до следующего сброса.

Конфигурации STM32 GPIO   

 В зависимости от конкретных аппаратных характеристик каждого порта ввода-вывода, перечисленных в таблице данных , каждый бит порта ввода-вывода общего назначения (GPIO) может быть индивидуально настроен с помощью программного обеспечения в нескольких режимах:

 Конфигурация выхода

  • Выход с открытым стоком
  • Выход двухтактный

 Конфигурация входа

  • Входной плавающий (Hi-Z)
  • Входное подтягивание
  • Входное понижение

 Альтернативная конфигурация функции

  • Альтернативная функция
  • Альтернативная функция с открытым дренажем

Заключительные замечания STM32 GPIO   

 Не все контакты GPIO устойчивы к напряжению 5 В. В основном они 3,3в.

 Вам необходимо включить часы для GPIO, который вы хотите использовать, независимо от режима работы.

 При настройке выходного контакта GPIO вы можете выбрать скорость, подходящую для вашего приложения. Нужна ли вам высокочастотная коммутация на линии ввода-вывода или нет.

 Скорость шины APB2 определяет частоту дискретизации для всех сконфигурированных входов GPIO контактов.

 Вы можете отключить любой вывод GPIO (сделать его высоким импедансом), переведя его в режим ввода с помощью Hi-Z.

 Вы можете заморозить или заблокировать конфигурацию контактов GPIO после инициализации системы, если никаких изменений не предполагается, с помощью механизма блокировки.

 Альтернативные функциональные контакты могут быть заменены (переназначены) внутри, что дает вам больше свободы в маршрутизации этих сигналов.

 Все контакты GPIO поддерживают прерывания, но их необходимо настроить в EXTI, как мы увидим позже в этом курсе.

 Вот и все, что касается этого урока. В следующем уроке мы начнем нашу первую практическую ЛАБОРАТОРНУЮ работу!