General Purpose Input/Output

Els ports GPIO (General Purpose Input/Output, en anglès Entrada/Sortida per a un Ús General) són un tipus de ports d'entrada/sortida molt utilitzats en el món dels microcontroladors, en particular en l'entorn de l'electronica de sistemes incrustats, des de llur aparició cap al començament dels anys 1980.[1]

Placa GPIO del HP 82940HA Series 80

Ús modifica

Un connector GPIO ofereix a una placa electrònica la possibilitat de comunicar-se amb altres circuits.

 
El connector GPIO se situa al costat esquerre de la sortida de vídeo RCA (groga) en el Raspberry Pi Model A

El GPIO és un element molt present en la informàtica. Certes plaques mare com la Intel® NUC DE3815TYBE, o bé plaques de prova com la DSP, integren connectors o instruccions específiques del GPIO.[2][3] La Raspberry Pi disposa d'un connector GPIO des de la seva primera versió, això fa que a més del seu ús com a ordinador personal, també es pugui utilitzar com a controlador d'aplicacions purament electròniques, seguint el model de Stellaris Launchpad o d'Arduino.[4][5][6] Altres models de plaques, com ara la BeagleBoard, també integren ports GPIO.

Programació modifica

Diferents biblioteques faciliten la programació dels connectors GPIO. La RaspberryPi, per exemple, disposa de wiringPi[7] per al llenguatge C, RPi.GPIO[8] per al llenguatge Python o Pi4J[9] per al llenguatge Java. En algunes arquitectures també s'hi pot accedir directament des del processador. Per exemple, es pot tenir accés al GPIO del RaspberryPi incloent simplement el fitxer bcm2835.h,[10] mòdul específic del processador Broadcom BCM 2835 (es troba ja instal·lat a cada RaspberryPi, en un codi font en llenguatge C, això estalvia la necessitat d'utilitzar altres biblioteques).[11][12]

Linux reconeix de forma nativa els ports GPIO. La documentació completa es troba en el lloc oficial del kernel,[13] on s'explica com programar els controladors de dispositius.

Microsoft Windows integra també una API de desenvolupament específica per a la creació de controladors GPIO.[14][15]

Capacitats modifica

Un connector GPIO pot estar configurat per actuar com a entrada (recepció d'un senyal) o com a sortida (emissió d'un senyal). Quan es configura com a sortida, el senyal que es vol emetre s'ha d'escriure en un registre intern. Quan es configura com a entrada, es pot conèixer el seu estat actuant també amb un registre intern, en aquest cas llegint-lo.

Un connector GPIO només pot tractar senyals binaris del tipus 1 o 0. En altre cas, caldrà una connexió de suport analògica del tipus CAN/CNA com passa amb el MCP3008.[16]

Els perifèrics GPIO poden generar interrupcions,[17] amb les quals s'informa d'un canvi d'estat en una entrada.

Un connector GPIO té una alimentació generalment de 3.3Vcc i només pot emetre corrents d'intensitat dèbil, de 3mA a 50mA, per la qual cosa no actuen normalment de forma directa sobre els perifèrics sinó que envien senyals que cal amplificar.[18]

Vegeu també modifica

Referències modifica

  1. [enllaç sense format] http://www.series80.org/PDFs/HP82940A-GPIO.pdf
  2. [enllaç sense format] http://www.intel.fr/content/www/fr/fr/nuc/nuc-board-de3815tybe.html
  3. [enllaç sense format] http://www.ti.com/product/tms320c6474
  4. [enllaç sense format] http://tronixstuff.com/2014/01/29/tutorial-pcduino-gpio-arduino-ide/ Arxivat 2014-11-09 a Wayback Machine.
  5. [enllaç sense format] http://mchobby.be/wiki/index.php?title=Rasp-Hack-GPIO_Connecteur[Enllaç no actiu]
  6. [enllaç sense format] http://www.ti.com/tool/ek-lm4f120xl
  7. [enllaç sense format] https://www.stlo.unicaen.fr/sc12-g2b/index.php/fr/la-librairie-wiring-pi Arxivat 2014-12-19 a Wayback Machine.
  8. https://pypi.python.org/pypi/RPi.
  9. [enllaç sense format] http://pi4j.com/
  10. [enllaç sense format] http://www.airspayce.com/mikem/bcm2835/
  11. [enllaç sense format] http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
  12. [enllaç sense format] http://oversimple.fr/tag/bcm2835/
  13. [enllaç sense format] https://www.kernel.org/doc/Documentation/gpio
  14. [enllaç sense format] http://www.ctcom.com.tw/doc/324257.pdf Arxivat 2016-03-03 a Wayback Machine.
  15. [enllaç sense format] http://msdn.microsoft.com/en-us/library/windows/hardware/hh439512%28v=vs.85%29.aspx
  16. [enllaç sense format] https://learn.adafruit.com/downloads/pdf/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi.pdf
  17. [enllaç sense format] http://eduscol.education.fr/sti/sites/eduscol.education.fr.sti/files/ressources/pedagogiques/4346/4346-4-rpi-gpio.pdf
  18. [enllaç sense format] https://mespotesgeek.fr/controle-dun-dispositif-basse-tension-via-raspberry-pi/ Arxivat 2014-11-11 a Wayback Machine.