在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

基于RK3576開發板的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系統節點路徑】。

1.3 gpiod 簡介

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

Chip對象名:在調用gpiod_chip_open_by_name獲取chip對象時,作為傳入參數使用。

Line偏移量:在調用gpiod_chip_get_line獲取line對象時,作為傳入參數使用。

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

wKgZPGga9ImAFyBgAAAzwboV-BY830.png

1.4 sysfs訪問方式簡介

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

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

GPIO系統節點路徑:具體的GPIO引腳所對應的節點路徑。

【引腳名稱】【GPIO系統節點路徑】兩者之間的關系如下方公式所示。

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為輸出方向

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

cat /sys/class/gpio/gpio52/value                        ## gpio_get_value       獲取gpio當前狀態值
## 或者
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 例程源碼下載

到【百度網盤】上下載相關的單例程序:

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

提取碼: 1234

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

wKgZO2ga9ImAbEq8AACzhGSyauo430.png

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

wKgZPGga9ImAdVJ8AAED0fvb_WI081.png

2.2 例程編譯&運行

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

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

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

執行下方命令以運行demo,如下所示。

sudo ./Release/test-gpio

執行效果如下所示。

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的易用化封裝。具體實現于09_GPIO/commonApi/gpio.c

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

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

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

審核編輯 黃宇

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

    關注

    25

    文章

    5415

    瀏覽量

    101098
  • GPIO
    +關注

    關注

    16

    文章

    1243

    瀏覽量

    53352
  • rk3576
    +關注

    關注

    1

    文章

    117

    瀏覽量

    494
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于RK3576開發板的WDT看門狗使用說明

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

    基于RK3576開發板的PCIE固態硬盤使用說明

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

    基于RK3576開發板的TF卡槽使用說明

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

    基于RK3576開發板的PWN使用說明

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

    基于RK3576開發板的RTC使用說明

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

    基于RK3576開發板的人臉識別算法

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

    新品體驗 | RK3576開發板

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

    米爾RK3576開發板特惠活動!

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

    敬請期待 | 迅為RK3576開發板即將發布

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

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

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

    迅為RK3576開發板Android?多屏顯示

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

    基于RK3576開發板的MIPI-DSI使用

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

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

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

    基于RK3576開發板的HDMI-OUT使用說明

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

    基于RK3576開發板的人員檢測算法

    展示了RK3576開發板的人員檢測算法例程及API說明
    的頭像 發表于 05-07 17:33 ?67次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發板</b>的人員檢測算法
    主站蜘蛛池模板: 成人国产一区二区三区 | 婷婷五月天.com | 午夜大片在线观看 | 五月天精品在线 | 亚洲系列中文字幕一区二区 | 色婷婷亚洲精品综合影院 | 中文字幕一二三四区2021 | 超级碰碰青草免费视频92 | 老司机精品免费视频 | 天天伊人 | 欧美人与物另类 | 人人澡人人澡人人看青草 | 国模吧2021新入口 | 成年女人色费视频免费 | 七月婷婷精品视频在线观看 | 欧美日韩亚洲国内综合网俺 | a资源在线 | 一级一级毛片免费播放 | 男人的天堂一区二区视频在线观看 | 毛片大全高清免费 | 久久人人做人人玩人精品 | 天天做天天爱夜夜想毛片 | 992tv国产精品福利在线 | 酒色激情网 | 亚欧免费视频一区二区三区 | 五月天激情综合网 | 亚洲加勒比在线 | 亚洲午夜在线观看 | 女人成午夜大片7777在线 | 四虎影院新网址 | 成人高清毛片a | 午夜看一级特黄a大片黑 | 色y情视频免费看 | 欧美香蕉视频 | 他也色在线视频 | 免费福利片2022潦草影视午夜 | 色成年激情久久综合 | 黄色成人在线网站 | 网站在线你懂的 | 日本午夜三级 | 国产大片91精品免费观看不卡 |