[嵌入式]S5PV210微處理器GPIO程式設計
第四章 S5PV210微處理器GPIO程式設計
4.1 S5PV210硬體資源
S5PV210是一款32位精簡指令集計算機(RISC),具有低成本、低功耗、高效能的微處理器解決方案,適用於手機及一般應用。它整合了ARM Cortex-A8的核心,並實現了ARM構架的V7-A的配套外設。
S5PV210採用64位的內部匯流排架構,包括許多強大的硬體加速器,用來完成像運動視訊處理、顯示控制和縮放等任務。整合多格式編解碼器(MFC)。S5PV210擁有一個外部儲存器,能夠承受高階通訊服務所需要的大記憶頻寬。為了降低系統總成本和提高整體功能,S5PV210包括許多硬體外設。
硬體框圖
封裝與管腳
·電源管腳分配
·地線管腳分配
·UART涉及管腳
·SPI埠管腳
·PWM/I2C管腳
·I2S/PCM/SPDIF/AC97
·攝像頭處理器管腳
·LCD管腳
·EINT/KEYPAD管腳
·Modem/CAMIF等管腳
·記憶體埠管腳
·JTAG管腳
·Clock管腳
·ADC/DAC/HDMI等管腳
·USB OTG/USB HOST管腳
·E-fuse管腳
·……
4.2 S5PV210的GPIO
GPIO概述
GPIO的英文全稱General-Purpose Input /Output Ports,即通用I/O埠。嵌入式系統需要控制許多結構簡單的外部裝置或者電路,這些裝置有的需要通過CPU控制,有的需要CPU提供輸入訊號。許多裝置或電路只要求有開/關兩種狀態就夠了,比如LED的亮與滅。對這些裝置的控制,使用傳統的串列埠或者並口就顯得比較複雜,所以,在嵌入式微處理器上通常提供了一種“通用可程式設計I/O埠”,也就是GPIO。
每個GPIO埠至少需要兩個暫存器,一個做控制用的“通用IO埠控制暫存器”,還有一個是存放資料的“通用I/O埠資料暫存器”。資料暫存器的每一位是和GPIO的硬體引腳對應的,而資料的傳遞方向是通過控制暫存器設定的,通過控制暫存器可以設定每一位引腳的資料流向。
GPIO管腳
S5PV210晶片包含237根多功能的GPIO管腳和142根記憶體介面引腳,共分為35組通用GPIO埠和2組記憶體埠,其中:
GPA0:8線輸入/輸出 埠 ,或2×UART 帶流控制埠;
GPA1:5線輸入/輸出埠,或2×UART 不帶流控或1×UART帶流控埠;
GPB:8線輸入/輸出埠,或2×SPI埠;
GPC0:5線輸入/輸出埠,或I2S、PCM、AC97埠;
GPC1:5線輸入/輸出埠,或I2S、SPDIF、LCD_FRM埠;
GPD0:4線輸入/輸出埠,或PWM埠;
GPD1:6線輸入/輸出埠,或3×I2C、PWM、IEM埠;
GPE0,1:13線輸入/輸出埠,或Camera I/F埠;
GPF0,1,2,3:30線輸入/輸出埠,或LCD I/F埠;
GPG0,1,2,3:28線輸入/輸出埠,或4×MMC 通道埠;
GPH0,1,2,3:32線輸入/輸出埠,或鍵盤及最大32位睡眠可喚醒介面;
GPI:低功率I2S、PCM,或AUDIO_SS PDN暫存器控制PDN 掉電配置埠;
GPJ0,1,2,3,4:35線輸入/輸出埠,或Modem IF、CAMIF、CFCON、KEYPAD、SROM ADDR[22:16] 埠;
MP0_1,2,3:20線輸入/輸出埠,或EBI(SROM、NF、OneNAND)控制訊號口;
MP0_4,5,6,7:32線輸入/輸出記憶體埠,或EBI埠;
MP1_0-8:71線DRAM1 埠;
MP2_0-8:71 線DRAM2 埠;
ETC0, ETC1, ETC2, ETC4:28線輸入/輸出ETC 埠,或JTAG埠等。
GPIO功能框圖
4.3 S5PV210的GPIO暫存器
埠控制暫存器GPnCON
埠資料暫存器GPnDAT
如果埠被配置為輸出埠,可以向GPnCON的相應位寫資料。如果埠被配置成輸入埠,可以從GPnDAT的相應位讀出資料。
例如:GPA0DAT資料暫存器定義(其他埠資料暫存器定義類似)。
埠上拉暫存器GPnUP
埠上拉暫存器控制了每個埠組的上拉電阻的允許/禁止。如果某一位為0,相應的上拉電阻被允許;如果某一位為1,相應的上拉電阻被禁止。如果埠的上拉電阻被允許,無論在哪種狀態下(輸入、輸出、DATAn、EINTn等),上拉電阻都起作用
例如:GPA0UP上拉暫存器定義:
4.4 GPIO程式設計例項
電路連線
該例項電路通過GPD0_0管腳連線蜂鳴器,並通過GPH2_0/1/2/3管腳連線4只獨立按鍵,通過GPJ2_0/1/2/3管腳連線LED等。對S5PV210的GPIO口進行程式設計,用查詢方式獲取按鍵狀態,當按鍵按下時,對應的LED燈閃亮,蜂鳴器鳴響一聲。當按鍵鬆開,對應的LED燈熄滅。
暫存器設定
為了達到讀取按鍵及控制蜂鳴器的目的,需要通過配置GPD0CON暫存器將GPD0_0管腳配置為輸出方式,LED燈控制引腳暫存器GPJ2CON配置為GPJ2_0/1/2/3引腳為輸出功能,將按鍵輸入引腳暫存器GPH2CON使GPH2_0/1/2/3引腳為輸入功能。
蜂鳴器控制程式buzzer.c
#define GPD0CON(*(volatile unsigned long *)0xE02000A0)
#define GPD0DAT(*(volatile unsigned long *)0xE02000A4)
// 初始化buzzer
void buzzer_init(void)
{
GPD0CON |= 1<<0;
}
void buzzer_on(void)
{
GPD0DAT |= 1<<0;
}
void buzzer_off(void)
{
GPD0DAT &= ~(1<<0);
}
主程式 main.c
// LED
#define GPJ2CON (*(volatile unsigned long *) 0xE0200280)
#define GPJ2DAT(*(volatile unsigned long *) 0xE0200284)
// KEY
#define GPH2CON (*(volatile unsigned long *) 0xE0200C40)
#define GPH2DAT(*(volatile unsigned long *) 0xE0200C44)
//燈輸出與按鍵輸入
#define GPJ2_0_OUTPUT (1<<(0*4))
#define GPJ2_1_OUTPUT (1<<(1*4))
#define GPJ2_2_OUTPUT (1<<(2*4))
#define GPJ2_3_OUTPUT (1<<(3*4))
#define GPH2_0_INTPUT ~(0xf<<(0*4))
#define GPH2_1_INTPUT ~(0xf<<(1*4))
#define GPH2_2_INTPUT ~(0xf<<(2*4))
#define GPH2_3_INTPUT ~(0xf<<(3*4))
void main()
{ unsigned long dat;
// LED:設定暫存器GPJ2CON0使GPJ2_0/1/2/3引腳為輸出功能
GPJ2CON = GPJ2_0_OUTPUT|GPJ2_1_OUTPUT|GPJ2_2_OUTPUT|GPJ2_3_OUTPUT;
// KEY:設定暫存器GPH2CON0使GPH2_0/1/2/3引腳為輸入功能
GPH2CON =GPH2_0_INTPUT&GPH2_1_INTPUT&GPH2_2_INTPUT&GPH2_3_INTPUT;
buzzer_init();
while(1){
// 讀取KEY相關的引腳值,用於判斷KEY是否被按下
dat = GPH2DAT;
// 判斷KEY1:GPH2_0
if(dat & (1<<0))// KEY1被按下,則LED1亮,否則LED1滅
{GPJ2DAT |= 1<<0;// OFF
buzzer_off();
}
else
{GPJ2DAT &= ~(1<<0);// ON
buzzer_on();
delay(0x10000);
}
// 判斷KEY2:GPH2_1
if(dat & (1<<1))// KEY2被按下,則LED2亮,否則LED2滅
{GPJ2DAT |= 1<<1; buzzer_off();}
else
{GPJ2DAT &= ~(1<<1); buzzer_on(); delay(0x10000); }
// 判斷KEY3:GPH2_2
if(dat & (1<<2))// KEY3被按下,則LED3亮,否則LED3滅
{……}
else
{……}
// 判斷KEY4:GPH2_3
if(dat & (1<<3))// KEY4被按下,則LED4亮,否則LED4滅
{……}
else
{……}
} //End of while(1)
} //End of main()
相關文章
- [嵌入式]Cortex-A8處理器程式設計(上)程式設計
- [嵌入式]Cortex-A8處理器程式設計(中)程式設計
- [嵌入式]Cortex-A8處理器程式設計(下)程式設計
- 更新計算機處理器微碼計算機
- 痞子衡嵌入式:微處理器CPU效能測試基準(Dhrystone)
- 嵌入式開發微處理器選型需要考慮的因素
- 常見處理器MCU、MPU、DSP、FPGA等嵌入式處理器FPGA
- 樹莓派的GPIO程式設計樹莓派程式設計
- 微處理器效能簡介(8086)
- 儲存器、I/O組織、微處理器
- 資料協議處理、影片協議處理、電氣IO量處理、嵌入式SCADA系統工業控制閘道器設計協議
- Intel 8086微處理器暫存器結構Intel
- [嵌入式]S5PV210通訊介面
- 邊緣AI處理器瑞芯微RK3399 Pro,嵌入式應用廣泛AI
- 嵌入式作業5.1 定時器程式設計定時器程式設計
- MIPS單週期處理器設計
- Linux系統程式設計(35)—— socket程式設計之TCP伺服器的併發處理Linux程式設計TCP伺服器
- 計算機組成與設計(4)-----處理器計算機
- 深度學習高效計算與處理器設計深度學習
- 二、GO 程式設計模式:錯誤處理Go程式設計設計模式
- Java-GUI程式設計之事件處理JavaGUI程式設計事件
- 如何處理前任程式設計師留下的程式碼程式設計師
- 設計一個全域性異常處理器
- C語言程式設計——9,預處理命令C語言程式設計
- Linux Shell程式設計(23)——文字處理命令Linux程式設計
- Linux核心模組程式設計--中斷處理程式(轉)Linux程式設計
- 從程式設計攔截器到大腦資訊攔截處理架構程式設計架構
- 嵌入式筆記4.1 GPIO 功能複用筆記
- 嵌入式程式設計學習(1)程式設計
- Linux系統程式設計(33)—— socket程式設計之TCP程式的錯誤處理Linux程式設計TCP
- 計算機原理與介面技術-第三章8086微處理器計算機
- 嵌入式:微軟將推出第二代AI處理器應對海量資料處理微軟AI
- 優秀程式設計師是如何處理糟糕程式碼的程式設計師
- Java-GUI程式設計之處理點陣圖JavaGUI程式設計
- linux網路程式設計中的errno處理Linux程式設計
- LOTO示波器動作程式設計功能(命令批處理)程式設計
- JDBC事務處理設計JDBC
- 【軟體開發底層知識修煉】一 深入淺出處理器之一 微處理器與微控制器