全稱是 "General Purpose I/O"。General Purpose ,就是用途不限。 Input / Output 指的是拉電位高低,Hardware 上的電位高低是以電壓值的範圍來規範,下面 DataSheet 中提供的電位表:
依循這個規則,我們可以指揮 SoC 的暫存器作工在 PIN 腳上,讓這些 PIN 腳電位 [輸出|輸入] + [拉高|拉低] 來達成我們的要求。
既然是要 SoC 的暫存器工作,就可以看 SoC 的範本怎麼工作,我們依樣畫葫蘆就可以。
例如:
我們可以在 ./arch/mips/ar7240/gpio.c 裡面找到 ar7240 的 wpa, wps led, factory reset button 的 gpio ,就照抄這些 function call 去工作。
ar7240_gpio_out_val (WPS_LED_GPIO, WPS_LED_ON);
ar7240_gpio_out_val (WPS_LED_GPIO, WPS_LED_OFF);
呼叫時代入的參數,因為 gpio 是代入 PIN 腳的號碼,所以一次動作只有一個 bit(0|1) ,要特別小心注意自已代入的值是什麼。
--
參考資料:
* 維基百科上的說明 http://zh.wikipedia.org/wiki/GPIO
* 我所知道的 GPIO http://kezeodsnx.pixnet.net/blog/post/30257192
* http://www.microchipc.com/sourcecode/#PIC18LF4550_LCD_temp_sensor
* I2C 介紹 http://www.youtube.com/watch?list=PLB1BE22BA36431CFD&feature=player_embedded&v=BcWixZcZ6JY