天天看點

linux驅動--GPIO二、GPIO核心驅動使用三、GPIO 使用者空間使用四、學以緻用

    第一天寫部落格,先從工作最簡單、最基礎的寫起,希望在未來的時光裡,對有緣看見這篇文章的你和不斷成長的自己又一些幫助吧。

一、概述

        GPIO中斷時linux驅動開發最基礎,最簡單驅動。可以在核心驅動中設定使用GPIO,也可以在應用層模拟使用,檢視GPIO的使用情況,為在驅動中使用某個引腳做測試。核心已經有一套完整的GPIO的驅動了,隻要會調用各個接口去使用起來就行了。核心将GPIO是以可用的接口由0~MAX_INT的整數編号。可以實作GPIO的各個功能:普通引腳、中斷、模拟各個協定等。

二、GPIO核心驅動使用

        1、GPIO的引腳編号規則(由原理圖找相應的晶片規格書,找到功能引腳對應的GPIO引腳)

                GPIO1 【4】    =      (1 - 1)*32 + 4  =  4

                GPIO6  【11】    =     (11 - 1)*32 + 11  =  171

                *注:公司用的imx6系列晶片

                   由底闆原理圖:pcpu6_v02_sf-20180604.pdf     6UL_IIC1_SCL(1)

                   找核心闆原理圖:FETIMX6UL_V1.1_p.pdf       UART4_TXD(2)        UART4_TX_DATA(3)

                   找參考手冊:IMX6UL參考手冊(RM)_201604.pdf        UART4_TX_DATA(4)    ***GPIO1 【28】***

        2、普通引腳使用

                #define      PS2_DATA_PIN    171

                1)、注冊GPIO

             gpio_request(PS2_DATA_PIN,"ps2-data");

                2)、設定方向

            gpio_direction_input(PS2_DATA_PIN);

                    gpio_direction_output(PS2_DATA_PIN,1);

                3)、擷取和設定GPIO值

                    gpio_get_value(PS2_DATA_PIN);

                    gpio_set_value(PS2_DATA_PIN,1);

        3、GPIO 中斷使用

                1)、設定為中斷

            int irq_num1 = 0;

                    irq_num1 = gpio_to_irq(PS2_DATA_PIN); //傳回中斷編号,是request_irq(),free_irq()的參數

                 2)、注冊中斷

            err = request_irq(irq_num1,irq_fuction,IRQF_TRIGGER_FALLING,"tiny4412_key1",dev);

                    實作irq_fuction()中斷處理函數,完成中斷,中斷不易處理太耗時的工作,但是調用一下其他函數,或者置個标志位,在其他函數裡處理還是可以的。

三、GPIO 使用者空間使用

    在應用層配置GPIO,測試GPIO能不能用,輸出控制都可以實作,在linux系統跑起來後,在檔案系統裡執行

    1、進入GPIO配置主目錄

cd /sys/class/gpio

申請一個gpio引腳,引腳号同上,成功會在目前目錄生成一個該gpio的目錄,失敗則提示buzy

echo 43 > ./export

進入gpio目錄,對其進行配置和控制

cd gpio43

将引腳配置為輸出模式

echo "out" > ./direction 

控制引腳輸出1、0

echo 1 > ./value

echo 0 > ./value

    2、中斷的設定

        沒寫這個,使用者空間沒有用到,想想可能很少用到,就沒寫,用到的時候再看他人的部落格!

四、學以緻用

    我項目中用GPIO模拟PS2鍵盤驅動,涉及GPIO的普通用法和中斷用法,有興趣的可以看一下

    第一篇博文就寫到這裡,新的開始,一點一滴記錄自己的成長過程!

    贈語:書山有路勤為徑

              學海無涯苦做舟

繼續閱讀