最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

TQT507開發(fā)板GPIO應(yīng)用指南

2023-06-01 10:02 作者:天嵌-倪工  | 我要投稿


▲點擊上方“廣州天嵌”關(guān)注公眾號后回復(fù)TQT507獲取板卡規(guī)格書

本文檔介紹了應(yīng)用層如何控制 GPIO,適用于天嵌開發(fā)板TQT507 。

1.sysfs 方式控制GPIO??

通過 sysfs 方式進(jìn)行操控,進(jìn)入到/sys/class/gpio 目錄下? ? ? ??

可以看到該目錄下包含兩個文件 export、unexport以及2個gpiochipX(X 等于 0、 352)命名的文件夾。

1.1 gpiochipX?

gpiochipX:當(dāng)前 SoC 所包含的 GPIO 控制器, 每一個 gpiochipX 文件夾用來管理一組 GPIO。隨便進(jìn)到其中某個目錄下,可以看到這些目錄下包含了如下文件 :

在這個目錄我們主要關(guān)注的是 base、 label、 ngpio 這三個屬性文件,這三個屬性文件均是只讀、不可寫。

base:與 gpiochipX 中的 X 相同,表示該控制器所管理的這組 GPIO 引腳中最小的編號。每一個 GPIO引腳都會有一個對應(yīng)的編號, Linux 下通過這個編號來操控對應(yīng)的 GPIO 引腳。

label:該組 GPIO 對應(yīng)的標(biāo)簽,也就是名字

ngpio:該控制器所管理的 GPIO 引腳的數(shù)量(所以引腳編號范圍是:base ~ base+ngpio-1)

1.2 export ?

export:用于將指定編號的GPIO引腳導(dǎo)出。在使用 GPIO引腳之前,需要將其導(dǎo)出,導(dǎo)出成功之后才能使用它。注意export文件是只寫文件,不能讀取,將一個指定的編號寫入到export文件中即可將對應(yīng)的 GPIO 引腳導(dǎo)出。

導(dǎo)出成功之后會發(fā)現(xiàn)在/sys/class/gpio 目錄下生成了一個名為 gpio0 的文件夾(gpioX, X 表示對應(yīng)的編號),如上圖所示。這個文件夾就是導(dǎo)出來的 GPIO 引腳對應(yīng)的文件夾,用于管理、控制該 GPIO 引腳 。

1.3 unexport ?

unexport:將導(dǎo)出的 GPIO 引腳刪除。當(dāng)使用完 GPIO 引腳之后,我們需要將導(dǎo)出的引腳刪除,同樣該文件也是只寫文件、不可讀,譬如:echo 0 > unexport ,刪除導(dǎo)出的編號為 0 的 GPIO 引腳。刪除成功之后,之前生成的 gpio0 文件夾就會消失!

將指定的編號寫入到 export 文件中,可以導(dǎo)出指定編號的 GPIO 引腳,導(dǎo)出成功之后會在/sys/class/gpio目錄下生成對應(yīng)的 gpioX(X?表示 GPIO 的編號)文件夾,以前面所生成的 gpio0 為例,進(jìn)入到 gpio0 目錄,該目錄下的文件如下所示

?

我們主要關(guān)心的文件是 active_low、 direction、 edge 以及 value 這四個屬性文件,接下來分別介紹這四個屬性文件的作用:

direction:配置 GPIO 引腳為輸入或輸出模式,該文件可讀、可寫。

讀表示查看 GPIO 當(dāng)前是輸入還是輸出模式;

寫表示將 GPIO 配置為輸入或輸出模式;

讀取或?qū)懭氩僮骺扇〉闹禐?#34;out"(輸出模式)和"in"(輸入模式),如下所示

輸出模式下,向 value 文件寫入"0"控制 GPIO 引腳輸出低電平,寫入"1"則控制 GPIO 引腳輸出高電平;

輸入模式下,讀取 value 文件獲取 GPIO 引腳當(dāng)前的輸入電平狀態(tài)。

譬如:

獲取 GPIO 引腳的輸入電平狀態(tài)

控制 GPIO 引腳輸出高電平

active_low:這個屬性文件用于控制極性, 可讀可寫,默認(rèn)情況下為 0

# active_low 等于 0 時 ? ? ? ? ? ?????? ? ? ? ? echo?"0"?>?active_low????????????????? ? ? echo?"out"?>?direction????????????????? ? ? echo?"1"?>?value?#輸出高????????????????? ? ? echo?"0"?>?value?#輸出低????????????????? ? ? #?active_low?等于?1?時???????????? ? ? ? ??

echo "1" > active_low ? ? ? ? ? ? ? ? ? ??

echo "out" > direction ? ? ? ? ? ? ? ? ? ??

echo "1" > value #輸出低 ? ? ? ? ? ? ? ? ? ??

echo "0" > value #輸出高

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


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

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

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

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

1.5 GPIO對應(yīng)引腳計算方法??

全志的GPIO號在 sunxi-gpio.h 中定義

#define SUNXI_BANK_SIZE 32 ? ? ? ? ? ?

#define SUNXI_PA_BASE ? ?0 ? ? ? ? ? #define?SUNXI_PB_BASE????32????????????

#define?SUNXI_PC_BASE????64????????????

#define?SUNXI_PD_BASE????96????????????

#define?SUNXI_PE_BASE????128????????????

#define?SUNXI_PF_BASE????160????????????

#define?SUNXI_PG_BASE????192????????????

#define?SUNXI_PH_BASE????224????????????

#define?SUNXI_PI_BASE????256????????????

#define?SUNXI_PJ_BASE????288????????????

#define?SUNXI_PK_BASE????320????????????

#define?SUNXI_PL_BASE????352????????????

#define?SUNXI_PM_BASE????384????????????

#define?SUNXI_PN_BASE????416????????????

#define?SUNXI_PO_BASE????448

計算方式--舉兩個例子

a、PA13

PA 是從0開始定義的,那么就是:0 +13 = 13,那么 PA13 的GPIO號 就是 GPIO13

b、PE10

PE 是從128開始定義的,那么就是:128 + 10 = 138,那么 PE10 的GPIO號 就是 GPIO138

2.利用 sunxi_pinctrl 的 debug 節(jié)點 ?

掛載文件節(jié)點,并進(jìn)入相應(yīng)目錄:


mount -t debugfs none /sys/kernel/debug ? ? ? ? ? ?

cd /sys/kernel/debug/sunxi_pinctrl

2.1查看 pin 的配置??


cat sunxi_pin_configure

2.2修改 pin 屬性 ?

每個 pin 都有四種屬性,如復(fù)用 (function),數(shù)據(jù) (data),驅(qū)動能力 (dlevel),上下拉 (pull),

修改 pin 屬性的命令如下:


echo PC2 1 > pull ? ??

cat sunxi_pin_configure ?//查看修改情況


TQT507開發(fā)板GPIO應(yīng)用指南的評論 (共 條)

分享到微博請遵守國家法律
霞浦县| 贡山| 张家川| 昌都县| 武夷山市| 慈溪市| 唐海县| 临夏县| 新野县| 丹东市| 全椒县| 福州市| 丹棱县| 开鲁县| 策勒县| 左权县| 长治市| 邯郸县| 时尚| 东丽区| 肃北| 延川县| 班戈县| 罗定市| 兴山县| 舞阳县| 海晏县| 营口市| 兴安盟| 丰县| 房产| 昆明市| 桦川县| 玛沁县| 弋阳县| 玛纳斯县| 澄江县| 望奎县| 常熟市| 娱乐| 衡山县|