Базовые знания GPIO
Базовые знания GPIO

GPIO — это аббревиатура порта ввода-вывода общего назначения, это вывод, управляемый STM32. Контакты GPIO подключены к внешним аппаратным устройствам, которые могут реализовывать функции связи с внешними устройствами, управления внешним оборудованием или сбора данных внешнего оборудования. Как классифицируются контакты STM32? Каково внутреннее устройство GPIO Давайте посмотрим вместе с редактором Hailing Optoelectronics!

1. Что такое GPIO?

GPIO (английский: ввод/вывод общего назначения)

Аббревиатура входного и выходного порта общего назначения.Его выходом можно управлять с помощью программного обеспечения.ивходить。stm32чипизGPIOконтакты для подключения к внешним устройствам,Поскольку вывод GPIO можно использовать для ввода, вывода и других специальных функций.,Тогда должны быть регистры для этих функций. для ввода,Вы можете точно определить уровень потенциала вывода, прочитав определенный индивидуальный регистр на выходе;,Вы можете сделать этот вывод высоким или низким, записав в определенный регистр для других специальных функций;,Для управления ими существуют дополнительные регистры.

2. Классификация контактов STM32.

1. Контакт питания:на схеме контактов VDD、VSS、VREF+、VREF-、VSSA、VDDA и т. д. — все это контакты питания.

2. Выводы кварцевого генератора:на схеме контактов PC14、PC15 и OSC_IN、OSC_OUT Все они представляют собой выводы кварцевого генератора, но их также можно использовать как обычные выводы.

3. PIN-код сброса: на схеме контактов NRST Это контакт сброса, который не используется для других функций.

4. Загрузите булавки:на схеме контактов PA13、PA14、PA15、PB3 и PB4 принадлежать JTAG или ПО Скачать пин-код. Однако их также можно использовать в качестве обычных контактов или для специальных функций. Для конкретных функций вы можете проверить руководство по данным чипа, в котором есть дополнительные описания функций. Конечно, STM32. Функциональные контакты последовательного порта также можно использовать в качестве контактов загрузки.

5.T ЗАГРУЗОЧНЫЙ штифт:на схеме контактов BOOT0 и PB2(BOOT1)принадлежать BOOT Штифт, PB2 Его также можно использовать как обычную булавку. существовать STM32 Во время запуска будет выбор режима, который зависит от BOOT0и BOOT1 определяется уровнем.

6. Контакты GPIO:на схеме контактов PA、PB、PC、PD Одинаковопринадлежать GPIO приколоть. Как видно из схемы контактов, GPIO оккупированный STM32 Большая часть выводов микросхемы. И каждый порт имеет 16 булавки, такие как PA порт, у него есть ПА0-ПА15. Другие PB、PC Остальные порты такие же.

3. Внутренняя структура GPIO.

Самый правый порт ввода-вывода на рисунке — это контакт микросхемы STM32, а остальные части находятся внутри микросхемы STM32.

(1) Защитный диод

  • Внутри булавки добавьте эти дваиндивидуальный Защитный диод можетНе допускайте слишком высокого или слишком низкого входного напряжения на выводе.
  • Когда напряжение на выводе выше, чем VDD_FT или VDD, верхний диод проводит поглощение этого отдельного высокого напряжения.
  • когда напряжение на выводе ниже, чем VSS Когда нижний диод проводит ток, предотвращает попадание аномального напряжения в чип и его возгорание.

(2) Подтягивающие и понижающие резисторы

  • На подтягивающих и понижающих резисторах имеется отдельный переключатель.,Путем настройки переключателя понижающего резистора,Уровень состояния вывода по умолчанию можно контролировать.
  • Когда подтягивание включено, напряжение на выводе по умолчанию имеет высокий уровень.
  • Когда выпадающее меню включено,По умолчанию напряжение на выводе низкое.,Таким образом, можно устранить влияние неопределенного состояния штифта.
  • Выключите подтягивающие и опускающие переключатели.,Это состояние называется плавающим режимом.,После настройки в этом индивидуальном режиме,Вывод напряжения не определен,Если вы с помощью мультиметра измерите напряжение на выводе в этом режиме, вы обнаружите, что оно составляет всего 1,0 вольт.,И время от времени оно меняется,Поэтому обычно мы устанавливаем контакты в режим подтягивания или понижения.,Установите для него состояние по умолчанию «Индивидуальный».
  • STM32 Конфигурация раскрывающегося и плавающего режимапереданоGPIOx_CRL и GPIOx_CRH Регистрационный контроль из.
  • STM32 внутреннийиз Подтягивания на самом деле – этоиндивидуальныйслабое подтягивание,Другими словами, выходной ток через этот подтягивающий резистор очень мал.,Если вы хотите вывести большой ток,Затем Требуется внешний подтягивающий резистор Понятно。

(3)、P-MOS и и S N-MOS 

  • Вывод GPIO разделяется на два канала после прохождения через два защитных диода.,
  • Верхний путь — «режим ввода», а нижний — «режим вывода».
  • Режим вывода, линия проходит через индивидуальный проход P-MOS и N-МОП трубки образуют единичную схему, что позволяет GPIO Булавка имеет Понятнодвухтактныйи Два типа открытого дренажа Режим вывода
  • двухтактный режим результат, основан на P-MOS и N-MOS ТрубкаизИменование методов работыиз。
  • В этом структурном подразделенииПри вводе индивидуального высокого уровня,P-MOS Проводимость трубки, Отсечение трубки N-MOS,Внешний высокий уровень выхода(3.3V)。
  • существовать Единицавходитьодининдивидуальныйнизкий уровеньчас,P-MOS Отрезок трубки, N-MOS Лампа включена и выдает низкий уровень (0 В).
  • есликогдавыключательвходитьвысокийнизкий уровеньчас,Две МОП-трубки по очереди будут проводить,Человек отвечает за ток потребления (выход тока на нагрузку),Один человек отвечает за ток потребления (ток нагрузки поступает на чип),к его грузоподъемностии Скорость переключения быстрее, чем обычноиз Есть много способовизулучшать。Изображение нижедвухтактный режим выводаизэквивалентная схема。
  • существовать Режим выхода с открытым стоком, независимо от того, является ли вход высоким или низким уровнем, P-MOS Трубка всегда закрыта.
  • когдадай этоиндивидуальныйединичная схемавходитьнизкий уровеньчас,N-MOS Лампа включена, и выходной сигнал имеет низкий уровень.
  • Когда на входе высокий уровень, N-MOS Трубка отключена. В это время состояние контакта не является ни высоким, ни низким. Мы называем это состоянием. высокого сопротивления。
  • Если вы хотите, чтобы вывод выдавал высокий уровень,Затем вывод необходимо подключить к внешнему подтягивающему резистору.,Высокий уровень обеспечивается подтягивающим резистором。Режим выхода с открытым Эквивалентная принципиальная схема показана ниже.
  •  существовать Режим выхода с открытым Также есть функция стокоминдивидуальный,Контакты имеют отношение «проводное И».。Сокутаиндивидуальный Режим выхода с открытым стокомизприколотьловитьсуществоватьодин起,Пока один из индивидуальных контактов находится на низком уровне,Все остальные контакты низкие,То есть соединить все контакты вместе и опустить эту шину.
  • толькокогда Все контактные выходыСостояние высокого сопротивлениячасэтот автобусизпричина уровняПодтягивающий резистор из VDD Решать.если VDD Соединение из есть 3,3 В, тогда выходной сигнал 3,3 В, если VDD Соединение из есть 5 В, тогда выходной сигнал 5В. Так что если вы хотите STM32 Контактный выход 5V,МожетвыбиратьРежим выхода с открытым стоком,Затемсуществоватьснаружиловитьподтягивающий резисторизисточник питания VDD выбирать 5V Вот и все, посылка такая индивидуальная STM32 булавка терпима 5V из。Режим выхода с открытым стоком обычно используется в I2C、SMBUS Для связи и т. д. требуется функция «проводное И» в цепи шины. Его также можно использовать в ситуациях, когда уровень не соответствует, как уже говорилось выше, выходному сигналу. 5V Такой же.
  • двухтактный режим выводаодин般应用существоватьВыходной уровень 0-3,3 В. И необходимо переключать состояние переключателя на высокой скорости. Помимо необходимости использовать Режим выхода с открытым стокомизслучай,Мы обычновыбиратьдвухтактный режим продукт. Чтобы настроить, является ли вывод выходом с открытым стоком или двухтактным режим вывод может использовать GPIOx_CRL и GPIOx_CRH зарегистрироваться.

(4), регистр выходных данных

пара MOS Входной сигнал схемы ламповой структуры состоит из GPIO“Регистр выходных данных «GPIOx_ODR» обеспечивает из,Поэтому мы модифицируем регистр выходных данных,из Стоило того Может Исправлять GPIO Выходной уровень вывода. И регистр установки/сброса GPIOx_BSRR» может влиять на выход схемы, изменяя значение регистра выходных данных.

(5) Выход функции мультиплексирования

потому что STM32 из GPIO Штифт имеет второстепенную функцию,поэтомукогда Используйте функции повторного использованияизчасждать,То естьпередано其他снаружи设复用Функциявыходсигнал и GPIO Регистры данных соединены между собой к пара MOS ламповая схема на входе, где лестничная структура используется для использования функций мультиплексирования или обычных IO функция рта. Например, мы используем USART Для последовательной связи необходимо использовать определенный GPIO В настоящее время этот контакт используется в качестве контакта для отправки сообщений. GPIO Выводы настроены как USART Функция мультиплексирования последовательного порта: периферийное устройство последовательного порта управляет этим выводом и отправляет данные.

(6), регистр входных данных

Регистр входных данных состоит из IO Порт вводится через подтягивающие и понижающие резисторы и триггер Шмитта. Когда сигнал проходит через триггер, аналоговый сигнал становится цифровым. 0 или 1, затем сохраняется в регистре входных данных путем чтения регистра входных данных. GPIOx_IDR Просто знай IO ротиз Статус уровня。

(7) Вход функции мультиплексирования

Этот режим аналогичен выводу мультиплексной функции. В режиме альтернативного ввода функций GPIO сигнал из контакта передается на STM32 Другие встроенные периферийные устройства, состояние контакта считывается этим периферийным устройством. Аналогично, если мы используем USART Для последовательной связи необходимо использовать определенный GPIO В настоящее время этот контакт используется в качестве контакта приема связи. GPIO Выводы настроены как USART Функция мультиплексирования последовательного порта позволяет USART Удаленные данные могут быть получены через этот контакт связи.

(8), аналоговый вход и выход

когда GPIO булавки для Когда АЦП собирает напряжение и входной канал,используется как“Аналоговый вход”Функция,В это время сигнал не проходит через триггер Шмитта из,Потому что после прохождения триггера Шмитта сигнал имеет только два состояния: 0 и 1.ADC Периферию нужно собирать оригинальнуюизаналоговый сигнал,источник сигналавходитьдолженсуществоватьДо триггера Шмитта。Сходным образом,когда GPIO булавки для DAC При использовании в качестве канала вывода аналогового напряжения он в это время выполняет функцию «аналогового выхода». DAC аналоговый выходной сигнал не проходит MOS трубчатая структура, аналоговый сигнал выводится непосредственно через контакт.

4. GPIO имеет 8 режимов: четыре режима ввода и четыре режима вывода.

Режим ввода:

Входной плавающий GPIO_Mode_IN_FLOATING

Входной подтягивающий GPIO_Mode_IPU

Введите раскрывающийся список GPIO_Mode_IPD.

Аналоговый вход GPIO_Mode_AIN

Режим вывода:

Выход с открытым стоком (поднятие вверх или вниз) GPIO_Mode_Out_OD

Функция мультиплексирования с открытым стоком (повышение или понижение) GPIO_Mode_AF_OD

Двухтактный выход (повышение или понижение) GPIO_Mode_Out_PP

Функция двухтактного мультиплексирования (повышение или понижение) GPIO_Mode_AF_PP

Четыре максимальные скорости вывода:

2MHZ

25MHZ

50MHZ

1000MHZ

5. Значение режимов GPIO 8

Введите число с плавающей запятой:Плавающий означает, что логическое устройство и вывод не подключены к высокому уровню.,Не отвечай тоженизкий уровень。потому Что Внутренняя структура логического устройства: когда его входной вывод остается плавающим, соответствующий вывод подключается к высокому уровню. При обычном использовании не рекомендуется оставлять штифт плавающим, поскольку он подвержен помехам. На непрофессиональном языке это означает витание в воздухе. Соответственно, этот порт по умолчанию ничего не получает, что означает Состояние. высокого Конечно, этот параметр чаще используется при передаче данных. Самая большая характеристика плавающего напряжения — это неопределенность напряжения. Оно может быть 0 В, может быть VCC или каким-то промежуточным значением (наиболее вероятно). Плавающий режим обычно используется для входа АЦП, что может уменьшить влияние подтягивающих и понижающих резисторов на результаты.

Войдите в режим подтягивания:Подтягивание означает подтягивание точки выше,Например, подтянуть его к Vcc. Подтягивание предназначено для фиксации неопределенного сигнала на высоком уровне через индивидуальный резистор. Резистор также играет роль ограничения тока. Разница между слабым и сильным заключается лишь в том, что сопротивление подтягивающего резистора разное.,Строгого различия нет.

Введите раскрывающийся список:Просто снизьте напряжение,Подтяните к GND. Аналогично принципу подтягивания.

Аналоговый вход:Аналоговый входотносится к традиционному способуизвходить,Цифровой вход предназначен для ввода цифрового сигнала PCM.,То есть 0,1из двоичного цифрового сигнала,посредством цифро-аналогового преобразования,Преобразование в аналоговый сигнал,Поступает в усилитель мощности через предварительное усиление,Усилитель мощности по-прежнему аналоговый.

Выход с открытым стоком:Выходная фазакогда Ю Санджи Трубкаизколлекционер,Чтобы получить состояние высокого уровня, необходим подтягивающий резистор.,Подходит для текущего типа привода,Его способность поглощать ток относительно велика (обычно в пределах 20 м А).

Схема с открытым стоком имеет следующие характеристики:

1. Используйте возможности управления внешней цепи, чтобы уменьшить внутреннее управление ИС. Когда внутренний МОП-транзистор микросхемы включен, ток возбуждения течет от внешнего VCC через резистор R. pull-up , MOSFET к GND. Внутри ИС требуется только очень низкий ток управления затвором.

2. Вообще говоря, открытый сток используется для подключения устройств с разными уровнями, а соответствующий уровень используется, потому что вывод с открытым стоком может выводить только низкий уровень, когда он не подключен к внешнему подтягивающему резистору, если необходимо выводить высокий уровень. Одновременное напряжение. Для функции выравнивания напряжения необходимо подключить подтягивающий резистор. Преимущество индивидуального резистора заключается в том, что, изменяя напряжение подтягивающего напряжения, можно изменить уровень передачи. Например, добавление подтягивающего резистора может обеспечить выходной уровень TTL/CMOS и т. д. (Подтягивающий резистор и резистор Определяет фронтальную скорость преобразования логического уровня . блокировать Чем больше,Чем ниже скорость, тем ниже энергопотребление,Поэтому при выборе сопротивления нагрузки необходимо учитывать потребляемую мощность и скорость. )

3. OPEN-DRAIN обеспечивает гибкие методы вывода.,Но у него есть и свои слабости,Это просто приводит к задержке нарастающего фронта. Потому что нарастающий фронт заряжает нагрузку через внешний подтягивающий пассивный резистор.,Поэтому, когда сопротивление выбора невелико, задержка будет небольшой.,Но энергопотребление велико, напротив, задержка велика, а энергопотребление мало. Поэтому, если есть требования к задержке,Рекомендуется использовать выходной сигнал спадающего фронта.

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

  На узле (линии) Подключите подтягивающий резистор к источнику питания. VCC или VDD и n индивидуальный NPN или NMOS коллектор транзистора C или Слив D, Эти транзисторы изэмиттерные E или Источник S все подключены к заземляющему проводу, Пока один отдельный транзистор насыщается, Этот индивидуальный узел (линия) вытягивается на уровень земли. Поскольку база этих транзисторов подает ток (NPN), а затвор добавляет высокий уровень (NMOS), транзистор будет насыщаться. Таким образом, связь между этими базами и воротами к индивидуальному узлу (линии) из-за NOR логика. Если за этим узлом добавляется отдельный инвертор, Вот и все OR логика.

На самом деле это можно понимать просто так: когда все выводы соединены вместе,Подключите внешний подтягивающий резистор,При наличии отдельного контакта выход имеет логический 0.,Соответствует заземлению,Параллельная цепь «похожа на короткое замыкание проводом».,Следовательно, логический уровень внешней схемы равен 0.,Только когда оба высокие,И результат логичный 1.

Функция мультиплексирования с открытым стоком:Можетпонимается какGPIOрот被используется каквторой Функциячасиз Конфигурация(то есть не как универсальныйIOпероральное использование)。端ротдолжен配置成复用Функция Режим вывода(двухтактныйили Открытый слив)

Двухтактный выход:Можетвыходвысокий,низкий уровень,Подключайте цифровые устройства; двухтактная структура обычно относится к двум третичным трубкам, управляемым взаимодополняющими сигналами.,общийдасуществоватьодининдивидуальный Три полюса Трубкапроводимостьизчасждать另одининдивидуальный Крайний срок。высокийнизкий уровень Зависит отICизисточник питания Низкая настройка。

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

Функция двухтактного мультиплексирования:Можетпонимается какGPIOрот被используется каквторой Функциячасиз Конфигурация(не как универсальныйIOпероральное использование)

GPIO из главного регистра

Каждый бит порта ввода-вывода может быть свободно запрограммирован.,Однако доступ к регистрам портов ввода-вывода должен осуществляться как 32-битные слова (доступ к полусловам или байтам не допускается).,**Некоторые регистры и функции можно проверить, выполнив поиск в паспорте соответствующего микроконтроллера в торговом центре Lichuang.,Затем настройте соответствующие порты,достичьIOинициализация портаиз Эффект。**также Можетпо следующей ссылкеловить Приходите и посмотрите Регистры, связанные с Подробности конфигурации GPIO.

Регистры, связанные с GPIO

6. Выберите режим ввода-вывода в stm32.

(1) Плавающий вход_IN_FLOATING — плавающий вход, может использоваться для идентификации КЛЮЧА, RX1.

(2) Pull-up input_IPU — вход внутреннего подтягивающего резистора ввода-вывода.

(3) С понижающим входом_IPD — вход внутреннего понижающего резистора ввода-вывода.

(4) Аналоговый вход_AIN —— Аналоговый АЦП вход, или экономия энергии при низком энергопотреблении

(5) Открытый сток выход_OUT_OD ——IOвыход0ловитьGND,Выход ввода-вывода 1. Для достижения высокого уровня выходного сигнала требуется внешний подтягивающий резистор. Когда выходной сигнал равен 1, состояние порта ввода-вывода поднимается на высокий уровень с помощью подтягивающего резистора, но потому что чтода Режим выхода с открытым стоком, так что порт ввода-вывода может быть переведен на низкий уровень внешней схемой и останется неизменным. . Может считывать изменения входного уровня ввода-вывода для реализации направленной функции C51изIOпара.

(6) Двухтактный выход_OUT_PP —— Выход ввода-вывода 0-подключен к GND, Выход ввода-вывода 1 -ловитьVCC,читатьвходитьценитьданеизвестныйиз

(7) Функция мультиплексирования двухтактного вывода_AF_PP — встроенная периферийная функция (I2C изSCL, SDA)

(8)Многофункциональный выход_AF_OD ——Встроенные периферийные функции (TX1, MOSI, MISO.SCK.SS)

Подведите итог:Раньше все регистры конфигурации былипереданопроцедура настройкииз,Когда все еще немного сложно настроить его самостоятельно.,После многих упражнений,После освоения некоторых сценариев применения регистрации,,Скорость порта конфигурации также была улучшена.,У меня также появилось новое понимание вещей, которых я раньше не понимал.,В общем,Не существует короткого пути к успеху,Все равно нужно больше практиковаться,Взгляните на некоторые базовые функции в stm32.,Только так можно добиться лучшего улучшения. хорошо,Вот и все, чем поделился сегодня редактор Hailing Optoelectronics.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода