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

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)GPIO基礎(chǔ)知識(shí)

北京迅為電子 ? 2025-03-06 11:23 ? 次閱讀

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE圖形處理器。RK3568支持4K解碼和1080P編碼,支持SATA/PCIE/USB3.0外圍接口。RK3568內(nèi)置獨(dú)立NPU,可用于輕量級(jí)人工智能應(yīng)用。RK3568支持安卓11和linux系統(tǒng),主要面向物聯(lián)網(wǎng)網(wǎng)關(guān)、NVR存儲(chǔ)、工控平板、工業(yè)檢測(cè)、工控盒、卡拉OK、云終端、車(chē)載中控等行業(yè)。

wKgZPGfJFRCAVVF2AAD8foavbSM335.png

?

【本文摘自】【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)

【相關(guān)視頻】OpenHarmony學(xué)習(xí)開(kāi)發(fā)系列教程(第1期 北向基礎(chǔ)篇一)

OpenHarmony學(xué)習(xí)開(kāi)發(fā)系列教程(第2期 南向基礎(chǔ)篇一)

實(shí)戰(zhàn):第一篇OpenHarmony配置HDF驅(qū)動(dòng)控制LED

第1章GPIO基礎(chǔ)知識(shí)

1.1什么是GPIO

GPIO意為通用輸入/輸出接口,GPIO端口可以配置為輸入或輸出狀態(tài),用于產(chǎn)生或讀取高低電平信號(hào)。其高低電平的數(shù)量、波形組合及變化方式?jīng)]有任何協(xié)議限制,用戶可以根據(jù)需求自由設(shè)定。GPIO廣泛應(yīng)用于驅(qū)動(dòng)簡(jiǎn)單外設(shè),如LED、按鍵、開(kāi)關(guān)等,不需要復(fù)雜的協(xié)議支持。

與GPIO不同,專(zhuān)用IO端口通常是為特定通信協(xié)議設(shè)計(jì)的,具有更嚴(yán)格的協(xié)議要求。它們的高低電平數(shù)量、波形組合以及波形的持續(xù)時(shí)間必須嚴(yán)格遵循相應(yīng)協(xié)議的規(guī)范。常見(jiàn)的專(zhuān)用IO協(xié)議包括I2C、SPI、UART和PWM等。這些接口通常用于數(shù)據(jù)傳輸或信號(hào)控制,如在傳感器、顯示模塊、通信設(shè)備等應(yīng)用中,要求精確的時(shí)序和信號(hào)格式。

芯片通常需要提供豐富的功能和外部接口,以滿足各種應(yīng)用需求。然而,由于芯片的管腳(pin)數(shù)量有限,為了最大化資源的利用,許多IO管腳支持多功能設(shè)計(jì),并通過(guò)軟件配置實(shí)現(xiàn)管腳的分時(shí)復(fù)用。也就是說(shuō),同一個(gè)管腳可以根據(jù)需求在不同的功能模式之間切換。需要注意的是,并非所有IO管腳都可以用作GPIO。某些管腳被專(zhuān)門(mén)設(shè)計(jì)用于支持特定的專(zhuān)用接口(例如用于連接外部存儲(chǔ)芯片或通信模塊),這些管腳的功能是固定的,無(wú)法配置為GPIO。而另一些管腳則可以自由配置為GPIO,供用戶根據(jù)實(shí)際需求靈活使用。

1.2 GPIO引腳計(jì)算

為了更高效地管理數(shù)量眾多的GPIO,通常會(huì)將GPIO管腳按照一定規(guī)則進(jìn)行分組管理。每個(gè)GPIO管腳都會(huì)被分配一個(gè)組號(hào)和組內(nèi)偏移(offset)值,后者表示該管腳在所在組中的位置。通過(guò)這種分組方式,可以簡(jiǎn)化GPIO的訪問(wèn)和配置。

不同的芯片,其GPIO的分組數(shù)量和每組內(nèi)包含的管腳數(shù)量可能有所不同。這些設(shè)計(jì)差異通常取決于芯片的架構(gòu)和應(yīng)用需求。例如,在RK3568芯片中有5組GPIO bank:GPIO0~GPIO4,每組又以A0~A7, B0~B7, C0~C7, D0~D7作為編號(hào)區(qū)分,常用以下公式計(jì)算引腳:

GPIO pin腳計(jì)算公式:pin = bank * 32 + number //bank為組號(hào),number為小組編號(hào)

GPIO小組編號(hào)計(jì)算公式:number = group * 8 + X

引腳編號(hào)=控制寄存器的寄存器基數(shù)+控制引腳寄存器位數(shù)。 在rk3568中,GPIO_number的計(jì)算方法為:n*32 + (K-A)*8 + x;括號(hào)里面的A、B、C、D分別代表數(shù)值0、1、2、3, 在計(jì)算時(shí)候分別對(duì)應(yīng)即可。

下面演示LED9用戶LED燈的GPIO0_PB7 pin腳計(jì)算方法:

bank = 0; //GPIO0_B7=> 0, bank∈[0,4]

group = 1; //GPIO0_B7 => 1, group∈{(A=0), (B=1), (C=2), (D=3)}

X = 7; //GPIO4_D7 => 5, X∈[0,7]

number = group * 8 + X = 1 * 8 + 7 =15

pin = bank*32 + number= 0 * 32 + 15 = 15;

1.3 GPIO用戶態(tài)測(cè)試

sysfs控制接口為/sys/class/gpio/export和/sys/class/gpio/unexport。如下圖所示:

wKgZO2fJFPGAWB8XAACO5vQx5yg904.png

?

/sys/class/gpio/export用于將GPIO控制從內(nèi)核空間導(dǎo)出到用戶空間。/sys/class/gpio/unexport用于取消GPIO控制從內(nèi)核空間到用戶空間的導(dǎo)出。export和unexport,他們都是只寫(xiě)的。GpiochipX代表GPIO控制器。

export:用于將指定編號(hào)的GPIO引腳導(dǎo)出。在使用GPIO引腳之前,需要將其導(dǎo)出,導(dǎo)出成功之后才能使用它。注意export文件是只寫(xiě)文件,不能讀取,將一個(gè)指定的編號(hào)寫(xiě)入到export文件中即可將對(duì)應(yīng)的GPIO引腳導(dǎo)出,以GPIO0_PB7為例(pin計(jì)算值為15)使用export文件進(jìn)行導(dǎo)出,導(dǎo)出成功如下圖所示:

echo 15 > export

?

wKgZPGfJFPGAXOUZAACHkWLfpEo325.png

會(huì)發(fā)現(xiàn)在/sys/class/gpio目錄下生成了一個(gè)名為gpio15的文件夾(gpioX,X表示對(duì)應(yīng)的編 號(hào)),該文件夾就是導(dǎo)出來(lái)的GPIO引腳對(duì)應(yīng)的文件夾,用于管理、控制該GPIO引腳。

unexport:將導(dǎo)出的GPIO引腳刪除。當(dāng)使用完GPIO引腳之后,需要將導(dǎo)出的引腳刪除,同樣該文件也是只寫(xiě)文件、不可讀,使用unexport文件進(jìn)行刪除GPIO0_PB7,刪除成功如下圖所示:

echo 15 > unexport

wKgZPGfJFPGAUI8fAACjwgNBZuQ504.png

可以看到之前生成的 gpio15文件夾就會(huì)消失!

需要注意的是,并不是所有 GPIO引腳都可以成功導(dǎo)出,如果對(duì)應(yīng)的GPIO已經(jīng)被導(dǎo)出或者在內(nèi)核中被使用了,那便無(wú)法成功導(dǎo)出,導(dǎo)出失敗如下圖所示:

?

wKgZPGfJFPGAVSdXAABHiKbLLb4780.png

出現(xiàn)上圖報(bào)錯(cuò)的原因是該GPIO已經(jīng)被其他GPIO使用,需要在內(nèi)核中找到使用GPIO的驅(qū)動(dòng),并取消該驅(qū)動(dòng)才可以正常使用GPIO。在使用GPIO15時(shí),需要取消Linux內(nèi)核源碼中LED燈的配置,如下所示:

?

wKgZO2fJFPGADsugAADGUcqd5B0951.png

再次使用以下命令導(dǎo)出GPIO0_PB7引腳,導(dǎo)出成功之后進(jìn)入gpio15文件夾如下圖所示:

echo 15 > export

wKgZO2fJFPGAZ2VpAAB8PVVI_Hc818.png

?

可以看到gpio15文件夾下分別有active_low、device、direction、edge、power、subsystem、uevent、value八個(gè)文件,需要關(guān)心的文件是active_low、direction、edge以及value這四個(gè)屬性文件,接下來(lái)分別介紹這四個(gè)屬性文件的作用:

direction:配置GPIO引腳為輸入或輸出模式。該文件可讀、可寫(xiě),讀表示查看GPIO當(dāng)前是輸入還是輸出模式,寫(xiě)表示將GPIO配置為輸入或輸出模式;讀取或?qū)懭氩僮骺扇〉闹禐?out"(輸出模式)和"in"(輸入模式)。

在“/sys/class/gpio/gpio15”目錄下使用cat命令查看direction輸入輸出模式,如下圖所示:

cat direction

wKgZPGfJFPKAX5RxAABGACzzLIA517.png

默認(rèn)狀態(tài)下的輸入輸出狀態(tài)為“in”,由于direction為可讀可寫(xiě),可以使用以下命令將模式配置為輸出,配置完成如下圖所示

echo out > direction

cat direction

wKgZPGfJFPKAM4VXAABT9eIKw94721.png

active_low:用于控制極性得屬性文件,可讀可寫(xiě),默認(rèn)情況下為0,使用cat命令進(jìn)行文件內(nèi)容的查看,如下圖所示 :

cat active_low

當(dāng) active_low等于0時(shí),value值若為1則引腳輸出高電平,value值若為0則引腳輸出低電平。當(dāng)active_low等于1時(shí) ,value值若為0則引腳輸出高電平,value值若為1則引腳輸出低電平。

edge:控制中斷的觸發(fā)模式,該文件可讀可寫(xiě)。在配置GPIO引腳的中斷觸發(fā)模式之前,需將其設(shè)置為輸入模式,四種觸發(fā)模式的設(shè)置如下所示:

非中斷引腳:echo "none" > edge

上升沿觸發(fā):echo "rising" > edge

下降沿觸發(fā):echo "falling" > edge

邊沿觸發(fā): echo "both" > edge

value:設(shè)置高低電平,如果我們要把這個(gè)管腳設(shè)置成高電平,我們只需要給value設(shè)置成1即可,反之,則設(shè)置成0。使用命令

echo 1 > value

反之,把GPIO設(shè)置成低電平,使用命令

echo 0 > value

wKgZO2fJFPKAL707AAEfrd_mLb4205.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1238

    瀏覽量

    53309
  • 驅(qū)動(dòng)開(kāi)發(fā)

    關(guān)注

    0

    文章

    133

    瀏覽量

    12221
  • OpenHarmony
    +關(guān)注

    關(guān)注

    26

    文章

    3804

    瀏覽量

    17854
  • RK3568
    +關(guān)注

    關(guān)注

    5

    文章

    562

    瀏覽量

    5922
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RK3568開(kāi)發(fā)驅(qū)動(dòng)指南Linux中通用SPI設(shè)備驅(qū)動(dòng)

    RK3568開(kāi)發(fā)驅(qū)動(dòng)指南Linux中通用SPI設(shè)備驅(qū)動(dòng)
    的頭像 發(fā)表于 01-23 11:02 ?2352次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)</b>板<b class='flag-5'>驅(qū)動(dòng)</b>指南Linux中通用SPI設(shè)備<b class='flag-5'>驅(qū)動(dòng)</b>

    北京RK3568開(kāi)發(fā)OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    北京RK3568開(kāi)發(fā)OpenHarmony系統(tǒng)
    的頭像 發(fā)表于 03-11 14:13 ?886次閱讀
    <b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)</b>板<b class='flag-5'>OpenHarmony</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>南向</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>內(nèi)核HDF<b class='flag-5'>驅(qū)動(dòng)</b>框架架構(gòu)

    鴻蒙OpenHarmony南向/北向快速開(kāi)發(fā)教程-RK3568開(kāi)發(fā)

    -修改產(chǎn)品信息 P20_源碼定制-關(guān)閉自動(dòng)息屏 P21_源碼定制-修改開(kāi)機(jī)logo和動(dòng)畫(huà) P22_新建運(yùn)行北向應(yīng)用 RK3568開(kāi)發(fā)板同時(shí)也支持更多
    發(fā)表于 07-23 10:44

    RK3568開(kāi)發(fā)板鴻蒙OpenHarmony系統(tǒng)固件燒寫(xiě)步驟

    1、RK3568開(kāi)發(fā)板鴻蒙OpenHarmony系統(tǒng)固件燒寫(xiě)首先拷貝燒寫(xiě)器(燒寫(xiě)器在光盤(pán)資料
    發(fā)表于 08-26 17:45

    系統(tǒng)升級(jí) | RK3568體驗(yàn) OpenHarmony 3.2

    iTOP -RK3568開(kāi)發(fā)板使用手冊(cè)上新,后續(xù)資料會(huì)不斷更新,不斷完善,幫助用戶快速入門(mén),大大提升研發(fā)速度。北京
    發(fā)表于 03-29 10:21

    RK3568開(kāi)發(fā)板2800頁(yè)手冊(cè)+220集視頻

    itop-3568ubuntu使用手冊(cè) itop-3568開(kāi)發(fā)板c應(yīng)用編程手冊(cè) itop-3568開(kāi)發(fā)
    發(fā)表于 06-01 10:25

    【教程上新】基于iTOP-RK3568開(kāi)發(fā)板的OpenCV開(kāi)發(fā)手冊(cè)

    【教程上新】基于iTOP-RK3568開(kāi)發(fā)板的OpenCV開(kāi)發(fā)手冊(cè)
    的頭像 發(fā)表于 02-08 15:22 ?1379次閱讀
    【教程上新】基于<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>iTOP-RK3568</b><b class='flag-5'>開(kāi)發(fā)</b>板的OpenCV<b class='flag-5'>開(kāi)發(fā)</b>手冊(cè)

    RK3568開(kāi)發(fā)GPIO之外接模塊

    RK3568開(kāi)發(fā)GPIO之外接模塊
    的頭像 發(fā)表于 08-24 17:41 ?1648次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)</b>板<b class='flag-5'>GPIO</b>之外接模塊

    itop-rk3568指導(dǎo)手冊(cè)v3

    itop-rk3568指導(dǎo)手冊(cè),專(zhuān)為RK3568編寫(xiě)!拒絕網(wǎng)絡(luò)拼湊!持續(xù)更新中.
    發(fā)表于 09-06 14:09 ?39次下載

    RK3568開(kāi)發(fā)驅(qū)動(dòng)開(kāi)發(fā)指南-輸入子系統(tǒng)

    RK3568開(kāi)發(fā)驅(qū)動(dòng)開(kāi)發(fā)指南-輸入子系統(tǒng)
    的頭像 發(fā)表于 02-23 15:11 ?1373次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)</b>板<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>指南-輸入子<b class='flag-5'>系統(tǒng)</b>

    北京RK3568開(kāi)發(fā)板嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)全新更新-CAN+

    北京RK3568開(kāi)發(fā)板嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)全新更新-CAN+
    的頭像 發(fā)表于 09-04 15:29 ?838次閱讀
    <b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)</b>板嵌入式學(xué)習(xí)之Linux<b class='flag-5'>驅(qū)動(dòng)</b>全新更新-CAN+

    iTOP-RK3568/RK3588開(kāi)發(fā)板獲麒麟軟件適配認(rèn)證

    iTOP-RK3568/RK3588開(kāi)發(fā)板獲麒麟軟件適配認(rèn)證
    的頭像 發(fā)表于 10-18 14:56 ?964次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>iTOP-RK3568</b>/<b class='flag-5'>RK</b>3588<b class='flag-5'>開(kāi)發(fā)</b>板獲麒麟軟件適配認(rèn)證

    北京iTOP-RK3568開(kāi)發(fā)OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)實(shí)操-HDF驅(qū)動(dòng)配置LED

    北京iTOP-RK3568開(kāi)發(fā)OpenHarmony
    的頭像 發(fā)表于 03-14 14:41 ?396次閱讀
    <b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>iTOP-RK3568</b><b class='flag-5'>開(kāi)發(fā)</b>板<b class='flag-5'>OpenHarmony</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>南向</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>實(shí)操-HDF<b class='flag-5'>驅(qū)動(dòng)</b>配置LED

    北京iTOP-RK3568開(kāi)發(fā)OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)-第4章 UART基礎(chǔ)知識(shí)

    北京iTOP-RK3568開(kāi)發(fā)OpenHarmony
    的頭像 發(fā)表于 03-17 15:50 ?313次閱讀
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>為</b>】<b class='flag-5'>iTOP-RK3568</b><b class='flag-5'>開(kāi)發(fā)</b>板<b class='flag-5'>OpenHarmony</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>南向</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-第4章 UART<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    北京iTOP-RK3568開(kāi)發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART

    北京iTOP-RK3568開(kāi)發(fā)板鴻蒙OpenHarmony
    的頭像 發(fā)表于 03-25 11:02 ?453次閱讀
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>為</b>】<b class='flag-5'>iTOP-RK3568</b><b class='flag-5'>開(kāi)發(fā)</b>板鴻蒙<b class='flag-5'>OpenHarmony</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>南向</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>實(shí)操-HDF<b class='flag-5'>驅(qū)動(dòng)</b>配置UART