S3C2410A的GPIO介紹及應用

2021-07-24 16:25:36 字數 1418 閱讀 9082

一、gpio的概念

gpio的英文全稱是general-purpose input/output ports,中文意思是通用i/o埠。在嵌入式系統中,經常需要控制許多結構簡單的外部裝置或者電路,這些裝置有的需要通過cpu控制,有的需要cpu提供輸入訊號,gpio就是滿足這種需求的一種通用可程式設計i/o埠。

對於每個gpio埠,其至少需要兩個暫存器,乙個是控制用的「通用i/o埠控制暫存器」,另乙個是存放資料的「通用i/o埠資料暫存器」。資料暫存器的每一位是和gpio的硬體引腳對應的,資料的傳輸方向是通過埠控制暫存器控制的。

二、s3c2410a晶元的gpio特性

s3c2410a晶元內部整合了8組,共117個i/o引腳gpio,其中gpio埠分為a~h`等8中埠,每種埠都有第二功能甚至第三功能,對於這些功能可以通過對應的埠控制暫存器進行設定,可以設定為埠輸入模式、埠輸出模式等。當i/o設定為gpio輸出模式時,可以通過寫相應的rgpxdat暫存器控制相應i/o口輸出高電平或低電平,rgpxdat為1時對應的i/o口輸出為高電平,為0時輸出為低電平。

gpio的初始化輸入/輸出: 

以組位單位進行,gpio a~gpio h 共8組。初始化是依據實際應用需求,通過程式設計進行設定。輸入操作是從資料暫存器的相應位中讀出資料,輸出是將資料寫入到資料暫存器的被設定為輸出的相應位。

三、s3c2410a的gpio輸出運用

通過對s32410a的gpio口的設定實現led1到led4的亮滅及蜂鳴器報警,蜂鳴器報警一次,led1~led4一起亮滅五次,led1~led4再以二進位制形式按順序顯示0到15,其中led1為二進位制最低位。

#include "config.h"

#define led1_con (1 << 11) //gpe11口

#define led2_con (1 << 12) //gpe12口

#define led3_con (1 << 4) //gph4口

#define led4_con (1 << 6) //gph6口

#define beep (1 << 10) //gph10口

#define beep_mask (~beep)

void delayns(uint32 dly)

}void beep()

void led_on()

void led_off()

void led_disnum()

else

if(dat & 0x04)

else

//控制led1、led2顯示

rgpedat = (rgpedat&(~(0x03<<11))) | ((dat & 0x03) << 11);

}int main()

for(i = 0; i < 16; i++)

}return 0;

}

Linux標頭檔案中s3c2410 GPIO的巨集

一 gpio暫存器定義 1 define gpcon x reg2 0x56000000,x 0x10 gpcon 1 port a 0x56000000 gpcon 2 port b 0x56000010 gpcon 3 port c 0x56000020 gpcon 8 port h 0x560...

S3C6410和S3C2410的區別

s3c6400平台和s3c24xx平台而言,基本上沒什麼大的變化 1.記憶體支援ddr記憶體一般都是128m,起始位址是0x50000000,其他暫存器位址與s3c24xx有很大的不同。2.時鐘沒有了epll換上了mpll所以時鐘方面要小心了。3.新增tv卡的支援,以及keypad.的支援。4.fl...

s3c2410的nand flash的驅動分析

以前都是把別人寫好的 直接拿過來用,而沒有去關心裡面到底怎麼實現的,昨晚對照著samsung 2410和k 9f1208的晶元資料把這些 讀了一遍,終於明白了對nand flash的操作一步步是怎麼實現的了。以下的這些 可以在vivi或者kernel裡面找到 對乙個nand flash的操作,總體上...