實現 GPIO 擴展,先弄清楚“復用”的概念,將調用這些 GPIO 的驅動去掉配置,重新編
譯,加到自己的驅動中,就可以實現擴展的 GPIO 的輸入和輸出。
另外必須要先看文檔“迅為iTOP-4418開發板和6818開發板-驅動-GPIO 輸入輸出和例程_V1.X”。
1 GPIO 擴展的內核配置
在底板上,引出的擴展口有 J6(camera 口),J38(GPIO/CAN/485),另外如果自己做
底板,假如不使用 WIFI 等模塊,還可以將 WIFI 等模塊的 IO 口擴展成 GPIO。
這里只介紹 J6 和 J38 上的方便擴展的 IO 口。
如下圖所示,是攝像頭接口。這里帶有“SDA”,“SCL”字樣的兩個引腳為總線引腳,
不建議更改為 GPIO 接口。其中的紅色字樣比如“MCU_TSI1_D5”為關鍵詞。
01.jpg (14.8 KB, 下載次數: 46)
下載附件
2018-9-21 15:57 上傳
若想確定該引腳是否可復用為 GPIO 接口,則在核心板原理圖
“topeet_s5p4418_coreborad_v1_2.pdf”搜索該關鍵詞,可以得到兩個結果。一個是在板
對板連接器,另一個便是在 MCU 上的引腳。如下圖所示
02.jpg (19.14 KB, 下載次數: 56)
下載附件
2018-9-21 15:57 上傳
在 MCU 上用戶可以看到該引腳對應的其他功能,對應紅框中的位置可以發現,該引腳可
復用為 GPIO,編號為 GPIOE1,那么宏定義為(PAD_GPIO_C+13)。其他的引腳所對應編
號用戶可根據此方法來依次查詢。
如果這個 GPIO,被其它驅動調用,需要將驅動去掉配置,如下圖所示,要將攝像頭的驅
動去掉,這樣就可以在這些接口當做 GPIO。
Device Drivers --->
Multimedia support --->
Video capture adapters (去掉)
需要將 OV5640 和 TVP5150 同時去掉,這兩個攝像頭的驅動都在 Video capture
adapters 下。
03.jpg (33.52 KB, 下載次數: 45)
下載附件
2018-9-21 15:57 上傳
如下圖所示,將 RS485、Relay 驅動去掉,也可以擴展一些 GPIO 口。
Device Drivers --->
Character devices --->
04.jpg (29.82 KB, 下載次數: 48)
下載附件
2018-9-21 15:57 上傳
2 GPIO 復用統計
作者為了方便大家擴展,將網絡標號,管腳號等統計出來,方便大家擴展。
05.jpg (69.77 KB, 下載次數: 42)
下載附件
2018-9-21 15:57 上傳
有了接口對應的 GPIO 編號,便可以寫程序調用這些 GPIO 了。
3 驅動
用戶可以根據自己實際需求,在“iTOP-4418 和 6818-驅動-GPIO 輸出輸出驅動和
GPIO 擴展_V1.X”其中驅動例程基礎上修改。
其中的代碼
#define GPIOIN (PAD_GPIO_B + 18)
如果要替換為操作多個 GPIO,可以定義為數組,例如:
static int gpiostest[]={
PAD_GPIO_C+13,PAD_GPIO_C+5,PAD_GPIO_C+4,PAD_GPIO_E+1,PAD_GPIO_E+3,
PAD_GPIO_E+2,PAD_GPIO_E+0,PAD_GPIO_D+31,PAD_GPIO_D+30,PAD_GPIO_D+29,PAD_GPIO_E+4,PA
D_GPIO_D+28,PAD_GPIO_E+6,PAD_GPIO_E+5,PAD_GPIO_B+16,
PAD_GPIO_C+10,PAD_GPIO_C+11,PAD_GPIO_C+12,PAD_GPIO_C+9,
};
在使用 gpio_request/free 函數申請和釋放 GPIO;使用
gpio_direction_input/gpio_direction_output 函數設置為輸入和輸出模式;
gpio_get_value/gpio_set_value 函數獲取 GPIO 值和設置 GPIO 輸出等等,只需要做一個循
環即可,例如 gpio_request 函數申請 GPIO 代碼如下:
for(i=0 ; i<NUMBER ; i++){
ret = gpio_request(gpiostest[ i], "gpiotest");
if (ret) {
printk("request GPIO %d for gpio failed\n", gpiostest[ i]);
return ret;
}
}
其它操作也是類似。
至此,4418 和 6818開發板的 GPIO 擴展以及 GPIO 輸入輸出全部介紹完畢。 |