Почему используются GPIO?
Я искал [напрасно] несколько хороших ссылок / источников, чтобы помочь понять GPIO и почему они используются во встроенных системах. Может кто-нибудь, пожалуйста, укажите мне на некоторые?
4 ответа
В любой полезной системе ЦП должен иметь какой-либо способ взаимодействия с внешним миром - будь то свет или звуки, представленные пользователю, или электрические сигналы, используемые для связи с другими частями системы. Вывод GPIO (универсальный ввод / вывод) позволяет либо получать ввод для вашей программы извне процессора, либо предоставлять вывод пользователю.
Некоторые из них используются для GPIO в качестве входных данных:
- обнаружение нажатий кнопок
- получать запросы на прерывание от внешних устройств
Некоторые из них используются для GPIO в качестве выходных данных:
- мигать светодиодом
- звучать зуммер
- управление питанием для внешних устройств
Хорошим примером для двунаправленного GPIO или набора GPIO может быть "битовый взрыв" протокола, который ваш SoC не предоставляет изначально. Например, вы можете использовать свой собственный интерфейс SPI или I2 C.
Причина, по которой вы не можете найти ответ, вероятно, заключается в том, что если вы знаете, что такое встроенная система и что она делает, или вообще что-то о цифровых электронных системах, то ответ слишком очевиден, чтобы его записать! Это означает, что если вы дошли до реального внедрения работающей встроенной системы, вы уже должны знать, что это такое.
Контакты GPIO - это как минимум два состояния цифрового логического ввода / вывода. В большинстве случаев некоторые или все они также могут быть источниками прерывания. Эти прерывания могут иметь варианты для повышения, падения, двойного фронта или срабатывания уровня.
На некоторых мишенях выводы GPIO могут иметь настраиваемую выходную схему, позволяющую, например, исключать внешние подтягивания или позволяющие подключаться к устройствам, требующим выходов с открытым коллектором, а в некоторых случаях даже обеспечивать фильтрацию высокочастотного шума и глюки.
В большинстве встроенных систем процессор будет в конечном счете отвечать за определение состояния различных устройств, которые преобразуют внешние раздражители в логические напряжения цифрового уровня (например, когда кнопка нажата, штырь станет низким, в противном случае он будет сидеть высоко), и управляющие устройства, которые преобразуют напряжения логического уровня непосредственно в действие (например, когда на выводе высокий уровень, загорается индикатор; когда на низком уровне он гаснет). Раньше у процессоров не было общего ввода-вывода, а вместо этого приходилось использовать общую шину для связи с устройствами, которые могли обрабатывать запросы ввода-вывода и устанавливать или сообщать о состоянии внешних цепей. Хотя этот подход не был полностью лишен преимуществ (один процессор мог контролировать или контролировать тысячи каналов на общей шине), он был неудобен во многих реальных приложениях.
Хотя процессор может управлять любым количеством входов и выходов, используя четырехпроводную шину SPI или даже двухпроводную шину I2C, во многих случаях количество сигналов, которые процессор должен будет отслеживать или контролировать, достаточно мало, чтобы проще просто включить схему для контроля или управления некоторыми сигналами непосредственно на самом чипе. Несмотря на то, что специализированное оборудование сопряжения часто будет иметь выводы только для вывода или только для ввода (человек, выбирающий микросхемы аппаратного интерфейса, будет знать, сколько сигналов необходимо контролировать и сколько нужно контролировать), можно использовать конкретное семейство процессоров. в некоторых приложениях, которые требуют, например, 4 входа и 28 выходов, и другие приложения, которые требуют 28 входов и 4 выхода. Вместо того, чтобы требовать использования разных частей в приложениях с разным балансом между входами и выходами, проще просто иметь одну деталь с входами, которые могут быть сконфигурированы как входы или выходы, если это необходимо.
Я думаю, что у вас есть это задом наперед. GPIO по умолчанию в электронике. Это пин, сигнал, который можно запрограммировать. Все состоит из них. Для процессора выделенные периферийные устройства являются особым случаем, они являются дополнительными, когда вы знаете, что хотите более ограниченную функцию.
С точки зрения производителей микросхем, вы часто не знаете точно, что нужно пользователю, поэтому вы не можете сделать точную периферию на вашем чипе. Вы делаете общие вместо этого. Многие приложения настолько редки, что на рынке нет конкретного чипа. Единственное, что вы можете сделать, это использовать GPIO или сделать конкретное оборудование самостоятельно. Кроме того, все (неиспользуемые или потенциально неиспользуемые) выводы заслуживают превращения в GPIO, потому что это делает деталь еще более универсальной и пригодной для повторного использования. Универсальный и многоразовый - это почти весь смысл программируемых микросхем, в противном случае вы просто сделаете ASIC.
Некоторые особенно подходящие приложения:
- Сбросить части (чипы) в системе
- Интерфейс для переключателей, клавиатур, подсветки (все, что у них есть, это один контакт / сигнал!)
- Управление нагрузками с помощью реле или полупроводниковых выключателей (вкл / выкл)
- Соленоид, двигатель, нагреватель, клапан...
- Получайте прерывания от одиночных сигналов
- Термостаты, концевые выключатели, датчики уровня, сигнальные устройства...
Кстати, у Parallax Propeller практически нет ничего, кроме выводов GPIO. Периферийные устройства выполнены в программном обеспечении. Это работает очень хорошо для многих применений.