新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)之:GPIO驅(qū)動(dòng)程序?qū)嵗?/p>

        嵌入式Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)之:GPIO驅(qū)動(dòng)程序?qū)嵗?/h1>
        作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/257110.htm

        11.3實(shí)例

        11.3.1GPIO工作原理

        FS2410開(kāi)發(fā)板的S3C2410處理器具有117個(gè)多功能通用I/O(GPIO)端口管腳,包括GPIO8個(gè)端口組,分別為GPA(23個(gè)輸出端口)、GPB(11個(gè)輸入/輸出端口)、GPC(16個(gè)輸入/輸出端口)、GPD(16個(gè)輸入/輸出端口)、GPE(16個(gè)輸入/輸出端口)、GPF(8個(gè)輸入/輸出端口)、GPH(11個(gè)輸入/輸出端口)。根據(jù)各種系統(tǒng)設(shè)計(jì)的需求,通過(guò)軟件方法可以將這些端口配置成具有相應(yīng)功能(例如:外部中斷或數(shù)據(jù)總線)的端口。

        為了控制這些端口,S3C2410處理器為每個(gè)端口組分別提供幾種相應(yīng)的控制寄存器。其中最常用的有端口配置寄存器(GPACON~GPHCON)和端口數(shù)據(jù)寄存器(GPADAT~GPHDAT)。因?yàn)榇蟛糠諭/O管腳可以提供多種功能,通過(guò)配置寄存器(PnCON)設(shè)定每個(gè)管腳用于何種目的。數(shù)據(jù)寄存器的每位將對(duì)應(yīng)于某個(gè)管腳上的輸入或輸出。所以通過(guò)對(duì)數(shù)據(jù)寄存器(PnDAT)的位讀寫(xiě),可以進(jìn)行對(duì)每個(gè)端口的輸入或輸出。

        在此主要以發(fā)光二極管(LED)和蜂鳴器為例,討論GPIO設(shè)備的驅(qū)動(dòng)程序。它們的硬件驅(qū)動(dòng)電路的原理圖如圖11.4所示。

        圖11.4LED(左)和蜂鳴器(右)的驅(qū)動(dòng)電路原理圖

        在圖11.4中,可知使用S3C2410處理器的通用I/O口GPF4、GPF5、GPF6和GPF7分別直接驅(qū)動(dòng)LEDD12、D11、D10以及D9,而使用GPB0端口驅(qū)動(dòng)蜂鳴器。4個(gè)LED分別在對(duì)應(yīng)端口(GPF4~GPF7)為低電平時(shí)發(fā)亮,而蜂鳴器在GPB0為高電平時(shí)發(fā)聲。這5個(gè)端口的數(shù)據(jù)流方向均為輸出。

        在表11.15中,詳細(xì)描述了GPF的主要控制寄存器。GPB的相關(guān)寄存器的描述與此類似,具體可以參考S3C2410處理器數(shù)據(jù)手冊(cè)。

        表11.15 GPF端口(GPF0-GPF7)的主要控制寄存器

        寄存器

        地址

        R/W

        功能

        初始值

        GPFCON

        0x56000050

        R/W

        配置GPF端口組

        0x0

        GPFDAT

        0x56000054

        R/W

        GPF端口的數(shù)據(jù)寄存器

        未定義

        GPFUP

        0x56000058

        R/W

        GPF端口的取消上拉寄存器

        0x0

        GPFCON

        描述

        GPF7

        [15:14]

        00=輸入01=輸出10=EINT711=保留

        GPF6

        [13:12]

        00=輸入01=輸出10=EINT611=保留

        GPF5

        [11:10]

        00=輸入01=輸出10=EINT511=保留

        GPF4

        [9:8]

        00=輸入01=輸出10=EINT411=保留

        GPF3

        [7:6]

        00=輸入01=輸出10=EINT311=保留

        GPF2

        [5:4]

        00=輸入01=輸出10=EINT211=保留

        GPF1

        [3:2]

        00=輸入01=輸出10=EINT111=保留

        GPF0

        [1:0]

        00=輸入01=輸出10=EINT011=保留

        GPFDAT

        描述

        GPF[7:0]

        [7:0]

        每位對(duì)應(yīng)于相應(yīng)的端口,若端口用于輸入,則可以通過(guò)相應(yīng)的位讀取數(shù)據(jù);若端口用于輸出,則可以通過(guò)相應(yīng)的位輸出數(shù)據(jù);若端口用于其他功能,則其值無(wú)法確定。

        GPFUP

        描述

        GPF[7:0]

        [7:0]

        0:向相應(yīng)端口管腳賦予上拉(pull-up)功能

        1:取消上拉功能

        為了驅(qū)動(dòng)LED和蜂鳴器,首先通過(guò)端口配置寄存器將5個(gè)相應(yīng)寄存器配置為輸出模式。然后通過(guò)對(duì)端口數(shù)據(jù)寄存器的寫(xiě)操作,實(shí)現(xiàn)對(duì)每個(gè)GPIO設(shè)備的控制(發(fā)亮或發(fā)聲)。在下一個(gè)小節(jié)中介紹的驅(qū)動(dòng)程序中,s3c2410_gpio_cfgpin()函數(shù)和s3c2410_gpio_pullup()函數(shù)將進(jìn)行對(duì)某個(gè)端口的配置,而s3c2410_gpio_setpin()函數(shù)實(shí)現(xiàn)向數(shù)據(jù)寄存器的某個(gè)端口的輸出。

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        linux相關(guān)文章:linux教程


        蜂鳴器相關(guān)文章:蜂鳴器原理

        上一頁(yè) 1 2 3 4 下一頁(yè)


        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 甘德县| 泉州市| 盐津县| 天长市| 肥城市| 建始县| 乌兰察布市| 天门市| 通渭县| 嵊泗县| 刚察县| 尼勒克县| 台前县| 梅州市| 元谋县| 久治县| 晋宁县| 元江| 泾阳县| 称多县| 汉源县| 田东县| 祁门县| 虎林市| 策勒县| 兴宁市| 洛阳市| 衡水市| 彭州市| 南阳市| 任丘市| 罗平县| 长海县| 洛川县| 磐石市| 达孜县| 介休市| 桓台县| 德阳市| 韩城市| 巨鹿县|