Использование GPIO в ПК

9

У меня есть простой проект на хост-устройстве, который должен управлять двумя контактами с высоким логическим уровнем (напряжение 3,3 В, 5 В или 12 В - не имеет значения) и ждать, пока 2 других контакта перестанут работать на высоком уровне от периферийного устройства.

Могу ли я реализовать такое хост-устройство со стандартным ПК и какое оборудование (встроенное или дополнительное) мне следует использовать?

Андрей Песошин
источник
2
Вы хотите купить что-то вроде mccdaq.com ?
Кенни
1
Мне интересно, может быть, ПК уже имеет некоторые встроенные функции (контроллер, контакты) для моих целей? А если нет - найдите решение купить (кстати, спасибо за ссылку!)
Андрей Песошин
1
В качестве простого и экономичного решения можно было бы использовать что-то вроде панели запуска MSP430, подключенной к ПК через USB и запрограммированной в программной среде, похожей на Arduino, под названием Energia, всего за 4,30 долл. США, включая S / H (FedEx 2 дня, по всему миру) или даже более дешевой плате DIY, использующей AVR (например, attiny85 с USB-портом), запрограммированной на стороне ПК в Arduino (если вам это нравится или вы предпочитаете).
icarus74

Ответы:

7

Непонятно, что вы хотите, чтобы ПК делал и что должно делать устройство («хост-устройство» не имеет смысла), но, похоже, вам нужен базовый цифровой ввод-вывод с ПК.

ПК на самом деле не предназначены для прямого цифрового ввода-вывода на внешние устройства. Но вы можете купить модули цифрового ввода-вывода, которые подключаются к ПК через USB, что позволяет вам читать и записывать отдельные цифровые сигналы. Вы можете сделать это самостоятельно проще всего, подключив микроконтроллер к ПК через COM-порт.

Однако, если это действительно простая проблема управления, зачем вам вообще нужен ПК? Пусть маленький микроконтроллер сделает всю задачу сам. Это именно то, для чего предназначены микроконтроллеры. Это небольшие компьютеры с цифровыми и другими линиями ввода / вывода, которые предназначены для прямого подключения к внешнему оборудованию.

Олин Латроп
источник
1
У нас нет полного описания желаемой функциональности, но я предполагаю, что ему нужен двойной SR-триггер. Который вы можете эмулировать с 1 млрд. Транзисторов CPU :-).
Стивенвх
1
спасибо за Ваш ответ. Я понимаю, что существует огромное количество решений для выполнения, но я хотел, конечно, спросить о прямом подключении внешнего устройства к ПК. Теперь я вижу, что не могу сделать это напрямую, но с дополнительным контроллером или платой ввода / вывода.
Андрей Песошин
@stevenvh Я упростил описание проекта для лучшего понимания;) Мне нужно уточнить только интерфейсную часть
Андрей Песошин
13

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

Большим ограничением является то, что такие порты вымирают. Более абстрактные замены, такие как USB-параллельные преобразователи, обычно используются только для управления реальными принтерами, и в них отсутствуют регистры, которые вы можете напрямую считывать / записывать для установки или контроля состояния выводов. Ходили слухи, что есть несколько людей, которые имеют такую ​​возможность, но их может быть сложно найти, и они требуют подробного внимания водителей.

В этот момент становится более практичным использование устройства ввода-вывода, подключенного через USB. Часто это микроконтроллер под управлением простой прошивки, либо от производителя, либо на заказ.

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

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

Крис Страттон
источник
2
Если OP выберет маршрут параллельного порта, стоит отметить, что ОС на базе NT (т.е. любая ОС Windows, выпущенная в последнее десятилетие) потребует специального драйвера режима ядра для доступа к параллельному порту. Если вы используете версию Windows с политикой подписи кода в режиме ядра (например, Vista / W7 x64, возможно, даже W7 x86), то этот драйвер также должен иметь цифровую подпись.
ajs410
1
отличный ответ, я бы проголосовал, если бы мог :-)
Андрей Песошин
1
@ ajs410 - такие требования к подписи кода, вероятно, применяются и к драйверам для любого другого интерфейса, например USB. Один возможный конечный запуск может состоять в том, чтобы использовать что-то, для чего операционная система уже предоставляет код драйвера, и все, что требуется, это файл конфигурации / информации, например виртуальный com-порт. Это не GPIO, но его можно использовать в качестве канала команды / статуса для общения с микро-помощником, у которого есть GPIO.
Крис Страттон
8

Я бы порекомендовал использовать FTDI FT232RL, используя специальный драйвер, который включает режим бит-бенга . Этот метод будет работать практически на всех ПК и обеспечивает приличный доступ к простой GPIO с задержкой.
Существует много плат для обмена чипами FTDI, но я лично использую эту .

Дэвид Перек
источник
спасибо за совет, это больше похоже на взлом, но должно работать. Я нашел подобное решение 8-
КАНАЛЬНЫЙ