嵌入式GPIO介面及操作(一)

2022-04-04 15:54:20 字數 2053 閱讀 5341

gpio意思就是通用輸入輸出,一些引腳可以通過他們輸出高低電平,或者通過它們讀入引腳的狀態。

對gpio的操作是對所有硬體的操作最基本的技能。

一、通過暫存器來操作gpio引腳,乙個引腳可以用於輸入、輸出或者其他的特殊功能,那麼一定有暫存器來配置這些功能,

對於輸入,就是讀取引腳的狀態,一定可以從暫存器在中讀取到引腳的狀態;對於輸出,也有相應的暫存器,向暫存器中

寫入資料使引腳輸出高低電平;其他特殊功能,有另外的暫存器來控制它。

對於s3c2440來說,同樣的道理,也會有上面所說的暫存器,gpxcon用於配置引腳的功能的(輸入、輸出或其他功能),

gpxdat用於讀/寫引腳資料;另外gpxup用於是否使用內部上拉電阻。

1、gpxcon暫存器-配置暫存器

對於s3c2440,除了gpacon特殊外(暫存器每一位對應乙個引腳),其它都是暫存器的沒2位控制一根引腳:00表示輸入,

01表示輸出、10表示特殊、11保留不用。

2、gpxdat暫存器

用於讀/寫引腳:當引腳被設為輸入時,從gpxdat暫存器讀取引腳的狀態;當引腳被設為輸出時,將資料寫入gpxdat暫存器

相應的引腳會輸出相應的該低電平。

3、gpxup暫存器

某位為1時,相應引腳無內部上拉電阻;某位為0時,相應引腳使用上拉電阻。

上拉電阻、下拉電阻的作用:gpio為第三態時(相當於無外接晶元),引腳的電平狀態有上拉電阻、下拉電阻確定。

二、在開發板上實現led亮滅及按鍵控制led

目標:通過讀寫gpio暫存器來驅動led、獲取按鍵狀態。

第乙個例子使用彙編編寫乙個簡單的驅動led的程式,點亮led首先看原理圖是怎麼接的,拿到原理圖手冊

可以看到led被點亮開發板gpio需要低電平,找到對應的開發板gpio。一目了然gpf4為0時led1亮,1時滅,但是乙個gpio管腳可以是輸出也可以是輸入,所以,要配置gpio的功能。

點亮led:

1、配置gpio的功能為輸出,2、設定gpio輸出高\低

配置輸出功能,在資料手冊上可以看到乙個暫存器gpfcon,gpf4對應的位【9:8】做出相應的配置,管腳的復用

設定暫存器在資料手冊上可以看到乙個暫存器gpfdat,【7:0】,當是輸出功能時一位對應功能暫存器的乙個引腳。這樣4位就對應gpf4了。

gpfcon位址0x56000050  gpfdat位址0x56000054

下面是彙編寫的點亮乙個led程式:

led_on.s

.global

_start

_start:

ldr r0,= 0x56000050

@r0為gpfcon暫存器,此暫存器用於選擇引腳的功能

mov r1,#

0x00000100

str r1,[r0] @將數值寫進暫存器裡也就是配置了引腳的相應的功能

ldr r0,= 0x56000054

@r0為gpfdat暫存器,此暫存器用於設定相應管腳的值,高低電平

mov r1,#

0x00000000

@設定相應管腳輸出0電平,可讓led1燈亮

str r1,[r0] @將數值寫進暫存器裡也就是設定了引腳的相應的輸出電平

main_loop:

b main_loop @迴圈

下面是相應的makefile

led_on.bin : led_on.s  

arm-linux-gcc -g -c -o led_on.o led_on.s

arm-linux-ld -ttext 0x0000000 -g led_on.o -o led_on.elf

arm-linux-objcopy -o binary -s led_on.elf led_on.bin

clean:

rm -f led_on.bin led_on.elf *.o

將生成的bin檔案燒到開發板即可點亮led。

嵌入式linux下操作GPIO

本文 在嵌入式裝置中對gpio的操作是最基本的操作。一般的做法是寫乙個單獨驅動程式,網上大多數的例子都是這樣的。其實linux下面有乙個通用的gpio操作介面,那就是我要介紹的 sys class gpio 方式。首先,看看系統中有沒有 sys class gpio 這個資料夾。如果沒有請在編譯核心...

嵌入式 介面 MIPI介面

四 常見的例子 mip官網 知乎參考 參考部落格 筆記分享 display mipi 協議之dsi mipi dsi協議簡要介紹 mipi 移動行業處理器介面 是mobile industry processor inte ce的縮寫。mipi 移動行業處理器介面 是mipi聯盟發起的為移動應用處理...

2,嵌入式Linux之GPIO

2,嵌入式linux之gpio 1,點燈 1 看懂你所用的開發板的原理圖 產看led和gpio管腳是怎麼接線的如圖 2 通過s3c2440晶元控制暫存器配置gpf4 gpf5 gpf6為輸入引腳 來點亮 上圖的led燈 檢視s3c2440晶元手冊 3 配置gpio 使得gpf4 gpf5 gpf6 ...