Usando GPIO en PC


9

Tengo un proyecto simple en el dispositivo host que debe manejar 2 pines con un alto nivel lógico (voltaje de 3.3V, 5V o 12V, no importa) y esperar a que otros 2 pines pasen a un nivel alto por el dispositivo periférico.

¿Puedo implementar dicho dispositivo host con una PC estándar y qué hardware (incorporado o extra) debo usar?


2
¿Estás buscando comprar algo como mccdaq.com ?
kenny

1
Estoy interesado, ¿tal vez la PC ya tiene alguna funcionalidad incorporada (controlador, pines) para mis propósitos? Y si no, encuentre alguna solución para comprar (por cierto, ¡gracias por el enlace!)
Andrey Pesoshin

1
Una solución potencial, que es simple y económica, sería usar algo como un MSP430 Launchpad, conectado a la PC a través de USB, programado en un entorno de software similar a Arduino, llamado Energia, todo por $ 4.30 incluyendo S / H (Fedex 2 day, en todo el mundo), o incluso una placa de bricolaje más barata que usa un AVR (como attiny85 con bitbanged USB) programado en el lado de la PC en Arduino (si lo desea o lo prefiere).
icarus74

Respuestas:


7

No está claro qué desea que haga la PC y qué se supone que debe hacer el dispositivo ("dispositivo host" no tiene sentido), pero parece que desea E / S digital básica de una PC.

Las PC no están realmente diseñadas para E / S digital directa a dispositivos externos. Pero puede comprar módulos de E / S digitales que se conectan a la PC a través de USB, que luego le permiten leer y escribir señales digitales individuales. Puede hacerlo usted mismo más fácilmente haciendo que un microcontrolador se comunique con la PC a través de un puerto COM.

Sin embargo, si esto es realmente un simple problema de control, ¿por qué necesita una PC? Haga que un pequeño microcontrolador haga toda la tarea por sí mismo. Para eso son exactamente los micronctrollers. Son pequeñas computadoras con líneas digitales y otras líneas de E / S que están destinadas a conectarse directamente a hardware externo.


1
No tenemos una descripción completa de la funcionalidad deseada, pero supongo que necesita un doble flip-flop SR. Que puede emular con una CPU de 1 mil millones de transistores :-).
stevenvh

1
gracias por tu respuesta. Entiendo que hay una gran cantidad de soluciones para realizar, pero quería preguntar con certeza sobre la conexión directa de un dispositivo externo a la PC. Ahora veo que no puedo hacerlo directamente pero con un controlador adicional o placa de E / S.
Andrey Pesoshin

@stevenvh He simplificado la descripción de un proyecto para una mejor comprensión;) Necesito aclarar solo la parte de interfaz
Andrey Pesoshin

13

Si aún puede encontrar uno, vale la pena mencionar que un verdadero puerto paralelo está tan cerca de un GPIO como lo encontrará en una PC lista para usar. Las implementaciones clásicas carecen de cierta flexibilidad, ya que muchos de los pines tienen una dirección fija, y algunos están invertidos, pero la gente ha estado trabajando en eso durante años.

La mayor limitación es que tales puertos se están extinguiendo. Los reemplazos más abstractos, como los convertidores paralelos USB, generalmente se pueden usar solo para controlar las impresoras reales y carecen de registros que pueda leer / escribir directamente para configurar o monitorear el estado del pin. Se rumorea que hay algunos que tienen esta capacidad, pero pueden ser difíciles de encontrar y requieren atención detallada a los conductores.

En ese punto, tiende a ser más práctico usar un dispositivo de E / S conectado por USB. A menudo, este es un microcontrolador que ejecuta un firmware simple, ya sea del fabricante o personalizado.

Una ventaja importante de una implementación personalizada es la posibilidad de descargar las partes críticas de nivel más bajo, más repetitivas y / o cronometradas de la manipulación de E / S en el procesador en el dispositivo, en lugar de intentar hacerlo desde la PC donde la latencia de La paquetización USB, el recorrido de múltiples buses y los sistemas operativos multitarea tienden a hacer que las operaciones bit a bit sean extremadamente lentas.

Si aún no ha descubierto exactamente qué forma tomará su solución, una posibilidad es tomar algo como un Arduino que está empaquetado tanto en el sentido del hardware como de la cadena de herramientas para facilitar su uso, y podría funcionar como una solución independiente o como ayudante de E / S para realizar tareas de bajo nivel bajo comando desde una PC conectada.


2
Si OP elige la ruta del puerto paralelo, vale la pena señalar que el sistema operativo basado en NT (es decir, cualquier sistema operativo Windows lanzado en la última década) requerirá un controlador especial en modo kernel para acceder al puerto paralelo. Si está utilizando una versión de Windows con la Política de firma de código del modo Kernel (por ejemplo, Vista / W7 x64, tal vez incluso W7 x86), entonces este controlador también deberá estar firmado digitalmente.
ajs410

1
gran respuesta, votaría si pudiera :-)
Andrey Pesoshin

1
@ ajs410: dichos requisitos de firma de código probablemente se apliquen a los controladores para cualquier otra interfaz, como USB, también. La única ejecución final posible puede ser usar algo para lo cual el sistema operativo ya proporciona el código del controlador, y todo lo que se necesita es un archivo de configuración / información, por ejemplo, un puerto virtual de comunicaciones. Eso no es GPIO, pero se puede usar como un canal de comando / estado para hablar con un micro auxiliar que tiene GPIO.
Chris Stratton

8

Recomiendo usar un FTDI FT232RL con un controlador especial que permite modo bitbang . Este método funcionará en prácticamente todas las PC y permite un acceso de latencia decente a un GPIO simple.
Hay muchas placas de arranque de chips FTDI, pero yo personalmente uso esta .


gracias por el consejo, suena más como un truco pero debería funcionar. Encontré una solución similar MÓDULO GPIO USB DE 8 CANALES
Andrey Pesoshin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.