一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于RK3576開發(fā)板的GPIO使用說明

ljx2016 ? 來源:ljx2016 ? 作者:ljx2016 ? 2025-05-07 13:46 ? 次閱讀

1. GPIO簡介

1.1 硬件接線原理圖

wKgZO2ga9IiAWWc3AADdNgPRzl4094.png

注意:雖然GPIO可以熱插拔,但在沒給底板加裝外殼保護的情況下,很容易觸碰到底板上的器件,甚至板卡附近有金屬零件很容易造成板卡短路。因此也建議在插拔外設時,最好確保電源已經完全切斷。

GPIO的輸入/輸出電壓為3.3V,注意電平匹配,否則會損壞芯片引腳或接入設備。

1.2 GPIO硬件資源分布介紹

wKgZPGga9IiAYLC-ABes7h5O4aM000.jpg

gpiod庫:需要使用上表的【Chip對象名】和【Line偏移量】。

sysfs訪問方式:需要使用上表的【GPIO系統(tǒng)節(jié)點路徑】。

1.3 gpiod 簡介

Linux 4.8開始,加入了libgpiod的支持,而原有基于sysfs的訪問方式,將被逐步放棄。因此本文對應的demo主要采用了gpiod方式控制GPIO。gpiod庫通過操作chip對象以及l(fā)ine對象,來達到控制GPIO引腳輸出電平,或者讀取GPIO引腳電平的目的。

Chip對象名:在調用gpiod_chip_open_by_name獲取chip對象時,作為傳入?yún)?shù)使用。

Line偏移量:在調用gpiod_chip_get_line獲取line對象時,作為傳入?yún)?shù)使用。

以GPIO1_C4為例,【引腳名稱】【Chip對象名】【Line偏移量】三者之間的關系如下方公式所示。

wKgZPGga9ImAFyBgAAAzwboV-BY830.png

1.4 sysfs訪問方式簡介

sysfs控制gpio的方式主要基于內核提供的gpio控制接口文件。也就是通過讀寫/sys/class/gpio目錄下的文件來控制對應的gpio接口。

pin腳編號:sysfs訪問方式均以pin腳編號作為操作依據(jù)。

GPIO系統(tǒng)節(jié)點路徑:具體的GPIO引腳所對應的節(jié)點路徑。

【引腳名稱】【GPIO系統(tǒng)節(jié)點路徑】兩者之間的關系如下方公式所示。

wKgZO2ga9ImAcNhaAAA9yajXEw8820.png

引腳的導出申請:某一引腳在使用前,需要手動向gpio管理器申請導出該引腳資源。

echo 52 > /sys/class/gpio/export       ## gpio_request         申請導出相應的gpio

設置該引腳的工作模式:輸入或者輸出。

echo in > /sys/class/gpio/gpio52/direction        ## gpio_direction_output 設置相應gpio為輸入方向
## 或者
echo out > /sys/class/gpio/gpio52/direction      ## gpio_direction_output 設置相應gpio為輸出方向

根據(jù)引腳的工作模式,做相應的控制:寫入電平或讀取電平。

cat /sys/class/gpio/gpio52/value                        ## gpio_get_value       獲取gpio當前狀態(tài)值
## 或者
echo 0 > /sys/class/gpio/gpio52/value               ## gpio_set_value       設置輸出低電平
echo 1 > /sys/class/gpio/gpio52/value               ## gpio_set_value       設置輸出高電平

引腳的釋放申請:引腳使用完畢后,需要手動向gpio管理器申請釋放該引腳資源。

echo 52 > /sys/class/gpio/unexport   ## gpio_free              釋放申請的gpio

2. 快速上手

2.1 例程源碼下載

到【百度網(wǎng)盤】上下載相關的單例程序:

鏈接:https://pan.baidu.com/s/1RXHMGpmGSEfFy0rb1VkXSg?pwd=1234

提取碼: 1234

比如在windows環(huán)境中,就把單例程序下載到:此電腦D:BaiduNetdisk (無規(guī)定,用戶可自主選擇),如下圖所示。

wKgZO2ga9ImAbEq8AACzhGSyauo430.png

然后把例程【復制粘貼】到nfs掛載目錄中。(不清楚目錄如何構建的,可以參考《入門指南/開發(fā)環(huán)境準備/nfs服務搭建與掛載》)

wKgZPGga9ImAdVJ8AAED0fvb_WI081.png

2.2 例程編譯&運行

通過adb shell進入開發(fā)板環(huán)境(不清楚如何通過adb進行調試,可以參考《入門指南/開發(fā)板調試方式介紹/adb調試》),執(zhí)行下方命令定位到demo目錄,并且執(zhí)行編譯操作。

cd /home/orin-nano/Desktop/nfs/09_GPIO/
./build.sh
wKgZO2ga9IqAdAnBAAF6fvxggp0269.png

編譯成功后,相關的demo會生成在Release目錄下。

執(zhí)行下方命令以運行demo,如下所示。

sudo ./Release/test-gpio

執(zhí)行效果如下所示。

wKgZPGga9IqAZ2khAADGm97Tnq4134.png

3. C語言使用案例

GPIO的C語言使用案例,代碼地址為09_GPIO/test-gpio/main.c,供用戶編碼參考。以下代碼展示了對GPIO操作流程:

#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
static const GPIOCfg_t gpioCfg_tab[] = {
	{
		.pinName   = "GPIO0_A0",
		.direction = DIR_OUTPUT,
		.val       = 0,
	}, {
		.pinName   = "GPIO0_A5",
		.direction = DIR_INPUT,
		.val       = 0,
	}, {
		.pinName   = "GPIO1_C4",
		.direction = DIR_OUTPUT,
		.val       = 0,
	}, {
		.pinName   = "GPIO1_C5",
		.direction = DIR_INPUT,
		.val       = 0,
	}
};

int main(int argc, char **argv)
{
    gpio_init(gpioCfg_tab, ARRAY_SIZE(gpioCfg_tab));
    
    pin_out_val("GPIO0_A0", 0);
    pin_out_val("GPIO1_C4", 0);
    
    int val = read_pin_val("GPIO0_A5");
    printf("GPIO0_A5 val : %dn", val);
    val = read_pin_val("GPIO1_C5");
    printf("GPIO1_C5 val : %dn", val);
    
	return 0;
}

其中gpio_init(),pin_out_val(),read_pin_val()是基于libgpiod的易用化封裝。具體實現(xiàn)于09_GPIO/commonApi/gpio.c

若用戶需要如demo一樣地引用libgpiod,需要注意以下兩點。

* 需要包含頭文件:#include 。

* 編譯時,需要加上-lgpiod作為編譯參數(shù)。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5415

    瀏覽量

    101095
  • GPIO
    +關注

    關注

    16

    文章

    1243

    瀏覽量

    53349
  • rk3576
    +關注

    關注

    1

    文章

    117

    瀏覽量

    494
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于RK3576開發(fā)板的WDT看門狗使用說明

    RK3576開發(fā)板的WDT使用說明
    的頭像 發(fā)表于 05-06 17:15 ?328次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的WDT看門狗<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的PCIE固態(tài)硬盤使用說明

    RK3576開發(fā)板的PICE固態(tài)硬盤使用方法
    的頭像 發(fā)表于 05-06 17:33 ?922次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的PCIE固態(tài)硬盤<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的TF卡槽使用說明

    RK3576開發(fā)板使用TF卡槽
    的頭像 發(fā)表于 05-07 09:24 ?236次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的TF卡槽<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的PWN使用說明

    RK3576開發(fā)板使用PWN教程及Demo
    的頭像 發(fā)表于 05-07 14:07 ?169次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的PWN<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的RTC使用說明

    文章主要展示RK3576開發(fā)板的RTC信息和快速上手例程
    的頭像 發(fā)表于 05-07 15:04 ?214次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的RTC<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的人臉識別算法

    RK3576開發(fā)板展示人臉識別算法例程和API說明
    的頭像 發(fā)表于 05-07 16:48 ?259次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的人臉識別算法

    新品體驗 | RK3576開發(fā)板

    RK3399、RK3566、RK3568、RK3588、RK3576等型號的核心與評估
    的頭像 發(fā)表于 11-01 08:08 ?1602次閱讀
    新品體驗 | <b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>

    米爾RK3576開發(fā)板特惠活動!

    近日,米爾電子發(fā)布基于瑞芯微RK3576核心開發(fā)板,RK3576作為國產熱門處理器,其高性能數(shù)據(jù)處理能力、領先的AI智能分析、強大的擴展性與兼容性受到廣大
    的頭像 發(fā)表于 11-12 01:00 ?631次閱讀
    米爾<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>特惠活動!

    敬請期待 | 迅為RK3576開發(fā)板即將發(fā)布

    敬請期待 | 迅為RK3576開發(fā)板即將發(fā)布
    的頭像 發(fā)表于 11-22 15:13 ?465次閱讀
    敬請期待 | 迅為<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>即將發(fā)布

    迅為RK3576開發(fā)板核心與底板接口硬件介紹

    迅為RK3576開發(fā)板核心與底板接口硬件介紹
    的頭像 發(fā)表于 01-14 15:15 ?1111次閱讀
    迅為<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>核心<b class='flag-5'>板</b>與底板接口硬件介紹

    迅為RK3576開發(fā)板Android?多屏顯示

    迅為RK3576開發(fā)板Android?多屏顯示
    的頭像 發(fā)表于 01-16 16:58 ?694次閱讀
    迅為<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>Android?多屏顯示

    基于RK3576開發(fā)板的MIPI-DSI使用

    MIPI DSI接口是由MIPI聯(lián)盟下的Display工作組指定的DSI(Display Serial Interface)的接口標準。rk3576開發(fā)板使用mipi-dsi教程
    的頭像 發(fā)表于 05-06 16:11 ?144次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的MIPI-DSI使用

    基于RK3576開發(fā)板的揚聲器和耳機使用說明

    RK3576開發(fā)板的揚聲器和耳機使用說明
    的頭像 發(fā)表于 05-06 16:36 ?94次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的揚聲器和耳機<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的HDMI-OUT使用說明

    RK3576開發(fā)板的HDMI-OUT使用說明
    的頭像 發(fā)表于 05-06 16:48 ?84次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的HDMI-OUT<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的人員檢測算法

    展示了RK3576開發(fā)板的人員檢測算法例程及API說明
    的頭像 發(fā)表于 05-07 17:33 ?63次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的人員檢測算法