《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第五章_第1頁
《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第五章_第2頁
《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第五章_第3頁
《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第五章_第4頁
《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第五章_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

Exynos4412的GPIOExynos4412處理器總覽GPIO接口GPIO應(yīng)用實例5第5章Exynos4412的GPIO5.1Exynos4412處理器Exynos4412是三星公司推出的一款基于Cortex-A9的RSIC架構(gòu)的性價比高、功耗低、性能優(yōu)越的32位處理器。Exynos4412的內(nèi)存系統(tǒng)中有專用DRAM端口和靜態(tài)存儲器端口。其中的DRAM端口支持DDR2、LPDDR2和DDR3,靜態(tài)存儲器端口支持FlexOneNAND、NORFlash和ROM型的外部存儲器。5.2GPIO接口5.2.1GPIO總覽

三星Exynos4412共有304個GPIO,分為GPA0、GPA1、GPB、GPC0、GPC1等共37組,可以通過設(shè)置寄存器來確定某個引腳用于輸入、輸出還是其他特殊功能,比如可以設(shè)置GPC0、GPC1作為一般的輸入引腳、輸出引腳,或者用于AC97、SPDIF、I2C、SPI口。第5章Exynos4412的GPIO圖5.2Exynos4412處理器的系統(tǒng)架構(gòu)和片上硬件資源第5章Exynos4412的GPIO37組GPIO分類如下:(1)

GPA0(8個),GPA1(6個):共14個I/O口,用于3?×?UART(帶流控制)和1?×?UART(不帶流控制),或2?×?I2C;(2)

GPB:共8個I/O口,用于2?×?SPI或2?×?I2C或IEM;(3)

GPC0(5個),GPC1(5個):共10個I/O口,用于2?×?I2S或2?×?PCM或AC97、S/PDIF、I2C或SPI;(4)

GPD0(4個),GPD1(4個):共8個I/O口,用于PWM、2?×?I2C或LCDI/F、MIPI;(5)

GPF0(8個),GPF1(8個),GPF2(8個),GPF3(6個):共30個I/O口,用于LCDI/F;第5章Exynos4412的GPIO(6)

GPJ0(8個),GPJ1(5個):共13個I/O口,用于CAMI/F;(7)

GPK0(7個),GPK1(7個),GPK2(7個),GPK3(7個):共28個I/O口,用于4?×?MMC(4-bitMMC)或2?×?MMC(8-bitMMC),或GPSdebuggingI/F;(8)

GPL0(7個),GPL1(2個):共9個I/O口,用于GPSI/F;(9)

GPL2:共8個I/O口,用于GPSdebuggingI/F或KeypadI/F;(10)

GPM0(8個),GPM1(7個),GPM2(5個),GPM3(8個),GPM4(8個):共36個I/O口,用于CAMI/F或TSI/F、HIS或TraceI/F;(11)

GPX0(8個),GPX1(8個),GPX2(8個),GPX3(8個):共32個I/O口,用于Externalwake-up或KeypadI/F。第5章Exynos4412的GPIO5.2.2GPIO引腳的配置

在對GPIO引腳配置的時候,一般采用的方法都是對相應(yīng)的寄存器的值進行配置,從而達到目的。例如,當(dāng)配置成輸入引腳時,可以通過讀取某個寄存器來確定引腳的電平是高還是低;當(dāng)配置成輸出引腳時,可以通過寫入某個寄存器來讓這個引腳輸出高或低電平。對于其他特殊功能,則需要有另外的寄存器來配置和控制這些特殊功能。常用的寄存器有GPxxCON寄存器、GPxxDAT寄存器和?GPxxPUD寄存器等等。第5章Exynos4412的GPIOGPxxCON寄存器:該類寄存器稱為配置寄存器,主要用于配置引腳的功能。?GPxxDAT寄存器:該類寄存器用于讀/寫引腳。當(dāng)引腳被設(shè)為輸入時,讀此寄存器可知相應(yīng)引腳的電平狀態(tài);當(dāng)引腳被設(shè)為輸出時,寫此寄存器相應(yīng)位可令此引腳輸出高電平或低電平。GPxxPUD寄存器:該類寄存器用于確定是否使用內(nèi)部上拉/下拉電阻,使用兩個位來控制一個引腳:其值為0b00時,相應(yīng)引腳無內(nèi)部上拉/下拉電阻;值為0b01時,使用內(nèi)部下拉電阻;值為0b11時,使用內(nèi)部上拉電阻;0b10為保留值。第5章Exynos4412的GPIO圖5.3上拉電阻和下拉電阻示意圖所謂上拉電阻、下拉電阻,如圖5.3所示。上拉電阻、下拉電阻的作用在于,當(dāng)GPIO引腳處于第三態(tài)(既不是輸出高電平,也不是輸出低電平,而是呈高阻態(tài),即相當(dāng)于沒接芯片)時,它的電平狀態(tài)由上拉電阻、下拉電阻確定。第5章Exynos4412的GPIO5.2.3GPIO端口寄存器GPIO端口寄存器多達476個。每個GPIO口組相關(guān)的寄存器一般包括配置寄存器GPxxCON、數(shù)據(jù)寄存器GPxxDAT、上/下拉電阻寄存器GPxxPUD、引腳驅(qū)動能力配置寄存器GPxxDRV、省電模式配置寄存器GPxxCONPDN、低功耗模式下上/下拉電阻寄存器GPxxPUDPDN。接下來以GPA0端口為例,給出GPA0口相關(guān)寄存器及配置方法,對其他口組也可以進行類似的配置。第5章Exynos4412的GPIO?GPA0配置寄存器GPA0CON表5.1GPA0配置寄存器GPA0CON第5章Exynos4412的GPIO2.GPA0數(shù)據(jù)寄存器GPA0DAT表5.2GPA0數(shù)據(jù)寄存器GPA0DAT第5章Exynos4412的GPIO3.?GPA0上/下拉電阻寄存器GPA0PUD表5.3GPA0上/下拉電阻寄存器GPA0PUD第5章Exynos4412的GPIO4.?GPA0引腳驅(qū)動能力配置寄存器GPA0DRV表5.4GPA0驅(qū)動寄存器GPA0DRV第5章Exynos4412的GPIO5.?GPA0的省電模式配置寄存器GPA0CONPDN表5.5GPA0的省電模式配置寄存器GPA0CONPDN第5章Exynos4412的GPIO6.?GPA0的省電模式上/下拉電阻寄存器GPA0PUDPDN表5.6GPA0的省電模式上/下拉電阻寄存器GPA0PUDPDN第5章Exynos4412的GPIO5.3GPIO應(yīng)用本書設(shè)計的開發(fā)平臺和編譯環(huán)境如下:電路連接:各例程中用到的電路源自三星公司的評估板,并根據(jù)需要進行了修改。代碼編譯環(huán)境:UltraEdit。宿主機:VMWare和Fedora9。編譯工具:arm-linux-gcc4.5.1。第5章Exynos4412的GPIO5.3.1電路連接圖5.4按鍵和LED電路圖第5章Exynos4412的GPIO任務(wù)介紹:GPM4_0~GPM4_3分別控制四個LED的狀態(tài),當(dāng)這4個I/O引腳為高電平時,LED燈熄滅;當(dāng)I/O引腳為低電平時LED燈點亮。設(shè)置的4個按鍵K1、K2、K3、K4分別連接GPX1_2、GPX1_3、GPX1_4、GPX1_5。

要做的工作就是設(shè)置GPM4_0~GPM4_3為輸出功能,且控制其輸出電平高低即可。配置GPX1_2~GPX1_5為輸入功能,并在相應(yīng)的數(shù)據(jù)寄存器中得到相應(yīng)位的電平狀態(tài)。第5章Exynos4412的GPIO5.3.2實例1:匯編代碼點亮LED燈程序?qū)崿F(xiàn)的步驟:第一步:設(shè)置GPM4_0~GPM4_3相對應(yīng)的配置寄存器GPM4CON,使GPM4_0~GPM4_3四個引腳為輸出功能。第二步:設(shè)置其對應(yīng)的數(shù)據(jù)寄存器GPM4DAT對應(yīng)的4個bit位為0,使GPM4_0~GPM4_3引腳為低電平,4個LED燈全亮。等待一段時間后將第0位設(shè)置為0,其余位設(shè)置為1,這樣只有第一個燈亮;其他三個燈類似,只需將相應(yīng)的位置0即可。第5章Exynos4412的GPIO代碼實現(xiàn):.text.globl_start_start:/*將GPM4配置稱為輸出*/

ldrr0,=0x110002E0 ;GPM4CON寄存器的地址是0x110002E0ldrr1,[r0] ;先讀出GPM4CON寄存器的原值bicr1,r1,#0xff00 ;清除bit[15:8]bicr1,r1,#0xff ;清除bit[7:0]orrr1,r1,#0x1100 ;設(shè)置bit[15:8]

為0b00010001orrr1,r1,#0x11 ;設(shè)置bit[7:0]

為0b00010001strr1,[r0] ;寫入GPM4CON第5章Exynos4412的GPIO/*將GPM4DAT低4位設(shè)置為低電平,點亮4個LED燈*/ldrr0,=0x110002E4 ;GPM4DAT的地址是0x110002E4ldrr1,[r0] ;讀出原值

leds_loop:bicr1,r1,#0xf ;清除bit[3:0]為0,此時bit[3:0]

=

0000strr1,[r0] ;寫入GPM4DAT,4個LED全亮ldrr2,=0xffffff ;設(shè)定延時時間,在delay子程序中使用bldelay ;調(diào)用延時子程序delay第5章Exynos4412的GPIO

/*將GPM4DAT位0設(shè)置為低電平,點亮LED1燈*/orrr1,r1,#0xe ;0b1110,設(shè)置bit[0]

為0,此時bit[3:0]?=

1110strr1,[r0] ;寫入GPM4DAT,LED1亮ldrr2,=0xffffffbldelay第5章Exynos4412的GPIO

/*將GPM4DAT位1設(shè)置為低電平,點亮LED2燈*/bicr1,r1,#0x3 ;清除r1的bit[1:0]?位,此時bit[3:0]?=?1100orrr1,r1,#1 ;設(shè)置bit[0]?為1,即只有bit[1]?為0,此時

bit[3:0]?=?1101strr1,[r0] ;寫入GPM4DAT,LED2亮ldrr2,=0xffffffbldelay第5章Exynos4412的GPIO/*將GPM4DAT位2設(shè)置為低電平,點亮LED3燈*/bicr1,r1,#0x6 ;清除r1的bit[1]?和bit[2]?位,此時bit[3:0]?=?1001orrr1,r1,#2 ;設(shè)置bit[1]?為1,只有bit[2]?為0,此時bit[3:0]?=?1011strr1,[r0] ;寫入GPM4DAT,LED3亮ldrr2,=0xffffffbldelay第5章Exynos4412的GPIO/*將GPM4DAT位3設(shè)置為低電平,點亮LED4燈*/bicr1,r1,#0xc ;清除r1的bit[3]?和bit[2]?位,此時bit[3:0]?=?0011orrr1,r1,#4 ;設(shè)置bit[2]?為1,只有bit[3]?=?0,此時bit[3:0]?=?0111strr1,[r0] ;寫入GPM4DAT,LED4亮ldrr2,=0xffffffbldelay第5章Exynos4412的GPIO/*將GPM4DAT低4位設(shè)置為高電平,熄滅4個LED燈*/orrr1,r1,#0xf ;bit[3:0]?=?1111strr1,[r0] ;寫入GPM4DAT,4個LED全滅ldrr2,=0xffffffbldelaybleds_loop ;跳至leds_loop,開始下一次循環(huán)

halt_loop:

bhalt_loopdelay: ;跑馬燈延時程序

subr2,r2,#1 ;sub減法cmpr2,#0x0 ;將r0與0比較bnedelay ;bne是不相等跳轉(zhuǎn)到delay第

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論