Utilisation de GPIO sur PC

9

J'ai un projet simple sur le périphérique hôte qui devrait piloter 2 broches avec un niveau logique élevé (tension 3,3 V, 5 V ou 12 V - peu importe) et attendre que 2 autres broches soient entraînées à haut niveau par le périphérique.

Puis-je implémenter un tel périphérique hôte avec un PC standard et quel matériel (intégré ou supplémentaire) dois-je utiliser?

Andrey Pesoshin
la source
2
Cherchez-vous à acheter quelque chose comme mccdaq.com ?
kenny
1
Je suis intéressé, peut-être que le PC a déjà des fonctionnalités intégrées (contrôleur, broches) pour mes besoins? Et sinon - trouvez une solution à acheter (btw, merci pour le lien!)
Andrey Pesoshin
1
Une solution potentielle, à la fois simple et économique, serait d'utiliser quelque chose comme un Launchpad MSP430, connecté au PC via USB, programmé dans un environnement logiciel de type Arduino, appelé Energia, le tout pour 4,30 $, y compris S / H (Fedex 2 jours, dans le monde entier), ou même une carte de bricolage moins chère utilisant un AVR (comme attiny85 avec USB bitbanged) programmé côté PC en Arduino (si vous le souhaitez ou le préférez).
icarus74

Réponses:

7

Il n'est pas clair ce que vous voulez que le PC fasse et ce que le périphérique est censé faire ("périphérique hôte" n'a aucun sens), mais il semble que vous souhaitiez des E / S numériques de base à partir d'un PC.

Les PC ne sont pas vraiment conçus pour des E / S numériques directes vers des périphériques externes. Mais, vous pouvez acheter des modules d'E / S numériques qui se connectent au PC via USB, qui vous permettent ensuite de lire et d'écrire des signaux numériques individuels. Vous pouvez le faire vous-même plus facilement en faisant communiquer un microcontrôleur avec le PC via un port COM.

Cependant, si ce n'est vraiment qu'un simple problème de contrôle, pourquoi avez-vous besoin d'un PC? Demandez à un petit microcontrôleur d'effectuer lui-même toute la tâche. C'est exactement à cela que servent les micro-contrôleurs. Ce sont de petits ordinateurs avec des lignes d'E / S numériques et autres qui sont destinées à se connecter directement au matériel externe.

Olin Lathrop
la source
1
Nous n'avons pas une description complète de la fonctionnalité souhaitée, mais je suppose qu'il a besoin d'une double bascule SR. Que vous pouvez émuler avec un CPU à 1 milliard de transistors :-).
stevenvh
1
Merci pour votre réponse. Je comprends qu'il existe une énorme quantité de solutions à effectuer, mais je voulais certainement poser des questions sur la connexion directe d'un périphérique externe à un PC. Maintenant, je vois que je ne peux pas le faire directement mais avec un contrôleur supplémentaire ou une carte d'E / S.
Andrey Pesoshin
@stevenvh J'ai simplifié la description d'un projet pour une meilleure compréhension;) Je dois clarifier la partie d'interfaçage
Andrey Pesoshin
13

Si vous pouvez toujours en trouver un, il convient de mentionner qu'un véritable port parallèle est à peu près aussi proche d'un GPIO que vous le trouverez dans un PC standard. Les implémentations classiques manquent de flexibilité dans la mesure où de nombreuses broches ont une direction fixe, et certaines sont inversées, mais les gens y travaillent depuis des années.

La plus grande limitation est que ces ports sont en voie d'extinction. Les remplacements plus abstraits tels que les convertisseurs USB-parallèles ne sont généralement utilisables que pour contrôler les imprimantes réelles et manquent de registres que vous pouvez directement lire / écrire pour définir ou surveiller l'état des broches. Il y a eu des rumeurs selon lesquelles certains ont cette capacité, mais ils peuvent être difficiles à trouver et nécessitent une attention particulière aux pilotes.

À ce stade, il devient plus pratique d'utiliser un périphérique d'E / S connecté par USB. Il s'agit souvent d'un microcontrôleur exécutant un micrologiciel simple, du fabricant ou personnalisé.

Un avantage majeur d'une implémentation personnalisée est la possibilité de décharger le processeur le plus bas, le plus répétitif et / ou le moment le plus critique de la manipulation des E / S vers le processeur de l'appareil, au lieu d'essayer de le faire à partir du PC où la latence de La mise en paquets USB, la traversée de plusieurs bus et les systèmes d'exploitation multitâche ont tendance à ralentir douloureusement les opérations bit par bit.

Si vous n'avez pas encore compris exactement la forme que prendra votre solution, une possibilité consiste à saisir quelque chose comme un Arduino qui est empaqueté à la fois au niveau du matériel et de la chaîne d'outils pour une facilité d'utilisation, et pourrait fonctionner soit comme une solution autonome, soit en tant qu'assistant d'E / S pour effectuer des tâches de bas niveau sous la commande d'un PC connecté.

Chris Stratton
la source
2
Si OP choisit la route du port parallèle, il convient de noter que le système d'exploitation basé sur NT (c'est-à-dire tout système d'exploitation Windows publié au cours de la dernière décennie) nécessitera un pilote spécial en mode noyau pour accéder au port parallèle. Si vous utilisez une version de Windows avec une politique de signature de code en mode noyau (par exemple Vista / W7 x64, peut-être même W7 x86), ce pilote devra également être signé numériquement.
ajs410
1
excellente réponse, je voterais si je pouvais :-)
Andrey Pesoshin
1
@ ajs410 - ces exigences de signature de code s'appliquent probablement aux pilotes de toute autre interface, telle que USB, également. La seule fin possible peut être d'utiliser quelque chose pour lequel le système d'exploitation fournit déjà le code du pilote, et tout ce qui est nécessaire est un fichier de configuration / informations, par exemple un port de communication virtuel. Ce n'est pas GPIO, mais il peut être utilisé comme canal de commande / état pour parler à un micro auxiliaire doté de GPIO.
Chris Stratton
8

Je recommanderais d'utiliser un FTDI FT232RL en utilisant un pilote spécial qui active son mode bitbang . Cette méthode fonctionnera sur pratiquement tous les PC et permet un accès de latence décent à un simple GPIO.
Il existe de nombreuses cartes breakout FTDI, mais j'utilise personnellement celle-ci .

David Perek
la source
merci pour les conseils, ça ressemble plus à un hack mais ça devrait marcher. J'ai trouvé une solution similaire MODULE GPIO USB 8 CANAUX
Andrey Pesoshin