IMX51---GPIO
?GPIO(General Purpose Input/Output)指通用輸入/輸出,IMX51的GPIO模塊提供32位雙向的、通用輸入和輸出的信號(hào),下圖是GPIO的框圖:
圖1
1.??????GPIO概述
GPIO模塊提供專用的且可以配置為輸入或是輸出的通用pin。當(dāng)GPIO配置為輸出,用戶可以通過向內(nèi)部寄存器(DR)寫數(shù)據(jù)來控制輸出引腳的狀態(tài)。當(dāng)GPIO配置為輸入,用戶可以通過讀取內(nèi)部寄存器(PSR)來檢測(cè)輸入引腳的狀態(tài)。
圖2
GPIO模塊提供8個(gè)寄存器、邊沿檢測(cè)電路和中斷產(chǎn)生邏輯。
2.??????GPIO寄存器描述
GPIO的8個(gè)寄存器用下面的結(jié)構(gòu)體描述:
typedef struct
{
???UINT32 DR;
???UINT32 GDIR;
???UINT32 PSR;
???UINT32 ICR1;
???UINT32 ICR2;
???UINT32 IMR;
???UINT32 ISR;
???UINT32 EDGE_SEL;
} CSP_GPIO_REGS, *PCSP_GPIO_REGS;
2.1??DR數(shù)據(jù)寄存器
如果IOMUX把對(duì)應(yīng)的PIN設(shè)置為GPIO模式,且設(shè)置為輸出,寫到DR中的數(shù)據(jù)驅(qū)動(dòng)PIN的狀態(tài)。如果配置為輸入,可通過讀取DR寄存器來獲取響應(yīng)PIN的狀態(tài)。為確保同步讀取此寄存器,需要兩個(gè)等待狀態(tài)。
?
讀取DR寄存器的得到的值取決于IOMUX輸入模式設(shè)置和相應(yīng)GDIR位,如下圖:
圖3
?
2.2??GDIR數(shù)據(jù)方向寄存器
GDIR寄存器每一位可以指定每個(gè)具體PAD的方向,設(shè)置為0表示輸入,設(shè)置為1表示輸出。
圖4
?
2.3??PSR引腳采樣寄存器
PSR是只讀寄存器,每一位存儲(chǔ)了相應(yīng)PAD的值。此寄存器的值只有在訪問的時(shí)候才能讀取到。
圖5
?
2.4??ICR(ICR1,ICR2)中斷控制寄存器
ICR寄存器每2位指定每個(gè)相應(yīng)中斷引腳的中斷配置,比如低電平觸發(fā)、高電平觸發(fā)、上升沿觸發(fā)和下降沿觸發(fā),其中ICR1和ICR2寄存器都支持16個(gè)中斷,分別對(duì)應(yīng)中斷引腳15到0和31到16。
圖6
圖7
2.5??IMR中斷屏蔽寄存器
?
每一位用于屏蔽中斷引腳,當(dāng)設(shè)置為0表示禁用此中斷,設(shè)置為1表示使能此中斷。
圖8
2.6??ISR中斷狀態(tài)寄存器
每一位指示中斷是否發(fā)生,當(dāng)一個(gè)中斷產(chǎn)生,也就是ICR寄存器設(shè)置的中斷條件滿足的時(shí)候,此寄存器對(duì)應(yīng)位被設(shè)置為1。當(dāng)此中斷被處理后,可以通過軟件對(duì)此位寫1來清零。
圖9
2.7??EDGE_SEL邊沿選擇寄存器
支持32個(gè)中斷的設(shè)置,當(dāng)設(shè)置為1,此寄存器的值覆蓋ICR寄存器的配置,也就是當(dāng)設(shè)置為1后,GPIO忽略ICR功能及其配置的中斷條件,只要有跳變沿,就產(chǎn)生中斷。
圖10
?
3.??????GPIO編程說明
3.1??讀取PAD的值
讀取PAD值的編程順序如下:
⑴配置IOMUX選擇GPIO模式。
⑵配置GPIO的GDIR寄存器,使對(duì)應(yīng)的PAD作為輸入。
⑶通過讀DR寄存器或是PSR寄存器來獲取PAD的值。
在GPIO配置為輸入時(shí),讀取DR寄存器返回的不是DR數(shù)據(jù),相反,而是返回PSR數(shù)據(jù),對(duì)應(yīng)相應(yīng)PAD的值。
?
3.2??向PAD寫值
設(shè)置PAD值的編程順序如下:
⑴配置IOMUX選擇GPIO模式。
⑵配置GPIO的GDIR寄存器,使對(duì)應(yīng)的PAD作為輸出。
⑶向DR寄存器對(duì)應(yīng)位寫入需要控制的值。
在GPIO設(shè)置為輸出時(shí),只能通過讀取PSR寄存器來驗(yàn)證PAD的值。
?
3.3??中斷控制單元
除了通用輸入/輸出功能,GPIO模塊中的邊沿檢測(cè)邏輯能夠反映出輸入GPIO引腳電平的跳變。中斷控制單元有32個(gè)子中斷控制單元,每個(gè)子單元處理一個(gè)單獨(dú)的中斷引腳。
?
總結(jié)
以上是生活随笔為你收集整理的IMX51---GPIO的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我这些年的项目管理心得...
- 下一篇: WINCE补丁包下载地址