Почему используются GPIO? - PullRequest
       3

Почему используются GPIO?

10 голосов
/ 14 февраля 2011

Я искал [напрасно] несколько хороших ссылок / источников, чтобы помочь понять GPIO и почему они используются во встроенных системах. Может ли кто-нибудь, пожалуйста, указать мне на некоторые?

Ответы [ 4 ]

21 голосов
/ 14 февраля 2011

В любой полезной системе ЦПУ должен иметь какой-либо способ взаимодействия с внешним миром - будь то свет или звуки, представленные пользователю, или электрические сигналы, используемые для связи с другими частями системы. Вывод GPIO (универсальный ввод / вывод) позволяет либо получать ввод для вашей программы извне ЦП, либо предоставлять вывод пользователю.

Некоторые используются для GPIO в качестве входных данных:

  • обнаружение нажатий кнопок
  • получать запросы на прерывание от внешних устройств

Некоторые варианты использования GPIO в качестве выходных данных:

  • мигает светодиод
  • звучит зуммер
  • управление питанием для внешних устройств

Хорошим примером для двунаправленного GPIO или набора GPIO может быть «битовый взрыв» протокола, который ваш SoC не предоставляет изначально. Например, вы можете использовать собственный интерфейс SPI или I 2 C.

7 голосов
/ 15 февраля 2011

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

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

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

3 голосов
/ 16 февраля 2011

В большинстве встроенных систем процессор будет в конечном итоге отвечать за определение состояния различных устройств, которые преобразуют внешние раздражители в логические напряжения цифрового уровня (например, при нажатии кнопки штырь становится низким; в противном случае он будет находиться на высоком уровне). ), и управляющие устройства, которые преобразуют напряжения логического уровня непосредственно в действие (например, когда на выводе высокий уровень, загорается индикатор; когда на низком уровне он гаснет). Раньше у процессоров не было общего ввода-вывода, а вместо этого приходилось использовать общую шину для связи с устройствами, которые могли обрабатывать запросы ввода-вывода и устанавливать или сообщать о состоянии внешних цепей. Хотя этот подход не был полностью лишен преимуществ (один процессор мог контролировать или контролировать тысячи каналов на общей шине), он был неудобен во многих реальных приложениях.

Хотя процессор может управлять любым количеством входов и выходов, используя четырехпроводную шину SPI или даже двухпроводную шину I2C, во многих случаях число сигналов, которые процессор должен будет контролировать или контролировать, составляет достаточно мал, чтобы проще было включить схему для контроля или управления некоторыми сигналами непосредственно на самой микросхеме. Хотя специализированное аппаратное обеспечение для взаимодействия часто будет иметь выводы только для вывода или только для ввода (человек, выбирающий микросхемы аппаратного интерфейса, будет знать, сколько сигналов необходимо контролировать и сколько нужно контролировать), можно использовать конкретное семейство процессоров в некоторых приложениях, которые требуют, например, 4 входа и 28 выходов, а также другие приложения, требующие 28 входов и 4 выходов. Вместо того, чтобы требовать использования разных частей в приложениях с разным балансом между входами и выходами, проще просто иметь одну деталь с входами, которые могут быть сконфигурированы как входы или выходы по мере необходимости.

2 голосов
/ 23 марта 2012

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

С точки зрения производителей микросхем, вы часто не знаете точно, что нужно пользователю, поэтомуВы не можете сделать точную периферию на своем чипе.Вы делаете общие вместо этого.Многие приложения настолько редки, что на рынке нет конкретного чипа.Единственное, что вы можете сделать, это использовать GPIO или сделать конкретное оборудование самостоятельно.Кроме того, все (неиспользуемые или потенциально неиспользуемые) выводы заслуживают превращения в GPIO, поскольку это делает деталь еще более универсальной и пригодной для повторного использования.Универсальное и многоразовое использование - это почти весь смысл программируемых микросхем, в противном случае вы просто сделаете ASIC.

Некоторые особенно подходящие приложения:

  • Сброс частей (микросхем) в системе
  • Интерфейс для переключателей, клавиатур, подсветки (все, что у них есть, это один контакт / сигнал!)
  • Управление нагрузками с помощью реле или полупроводниковых переключателей (вкл-выкл)
    • Соленоид, двигатель,нагреватель, клапан ...
  • Получение прерываний от единичных сигналов
    • Термостаты, концевые выключатели, датчики уровня, устройства сигнализации ...

Кстати, у пропеллера Parallax практически нет ничего, кроме выводов GPIO.Периферийные устройства выполнены в программном обеспечении.Он очень хорошо работает для многих целей.

...