`
saybody
  • 浏览: 904073 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

基于S3C2410的通用IO编程

阅读更多
一、通用IO的定义
GPIO(General-Purpose IO ports),通用的IO口。一般的微控制芯片都提供通用的可编程接口。按照它们的功能分成:
l通用IO控制寄存器
l通过IO数据寄存器
很多MCU的GPIO接口出去了标准的寄存器必须外,还会提供上拉寄存器,可以设置IO的输出模式为高阻。
二、S3C2410A的通用IO寄存器
S3C2410A共有117个复用的输入/输出端口,分别是端口A~H,共8组。按照其位数不同不同可分为:
l端口A(GPA),23位输出口
l端口B(GPB),11位输出口
l端口C(GPC),16位输出口
l端口D(GPD),16位输出口
l端口E(GPE),16位输出口
l端口F(GPF),8位输出口
l端口G(GPG),16位输出口
l端口H(GPH),11位输出口
为了满足不同设计要求,每个IO口可以设置成不同的工作模式,其中又可以将IO口分成如下3类:
l端口控制寄存器(GPACON~CPHCON)
设置引脚工作模式,例如:输入、输出、外部中断和保留。
l端口数据寄存器(GPADAT~CPHDAT)
当端口被设置成输入模式,可以向GPxDAT的相应位写入数据;当端口被设置成输出模式,可以从GPxDAT的相应位读出数据
l端口上拉寄存器(GPAUP~CPHUP)
控制某一端口的响应位的上拉电阻状态(允许/禁止)。
0 – 响应的上拉电阻被允许
1 – 响应的上拉电阻被禁止
参看S3C2410A数据手册
三 编程实例
(1) 编程目的
控制和S3C2410A芯片IO连接的几个LED有规律的点亮。
(2) 电路原理
电路原理如图1所示:
图1 电路原理图
四个LED发光二极管分别与S3C2410A的GPF4~GPF7相连,通过GPF4~GPF7的引脚高低电平变化控制LED的点亮和熄灭。由图1可以清晰的看出当GPF4~GPF7输出低电平时LED点亮,反之当GPF4~GPF7输出高电平时LED熄灭。
(3) 代码分析
在头文件中定义了相关的寄存器

#define rGPFCON (*(volatile unsigned *)0x56000050) //Port F control
#define rGPFDAT (*(volatile unsigned *)0x56000054) //Port F data
#define rGPFUP (*(volatile unsigned *)0x56000058) //Pull-up control F
操作相关寄存器,使得LED能够规律的工作

void led_test(void)
{
rGPFCON=0x5500; // SET PORTF7/6/5/4 OUTPUT
rGPFUP=0; // PULL-UP ENABLE
uart_printf("/n I/O (Diode Led) Test Example/n");
led_on();
led_off();
led_on_off();
delay(1000);
rGPFCON = 0x55aa; // GPF1,GPF0=10 :EINT1,EINT0,(2410lib.c) uart_printf(" end./n");
}

/******************************************************************************* name: led_on
* func: turn on the leds one by one
******************************************************************************/
void led_on(void)
{
int i,nOut;
nOut = 0xF0;
//rGPFDAT=nOut & 0x10;
rGPFDAT=nOut & 0xd0;
for(i=0;i<100000;i++);
rGPFDAT = nOut & 0x50;//0x70
for(i=0;i<100000;i++);
rGPFDAT=nOut & 0x40; //0x00
for(i=0;i<100000;i++);
rGPFDAT=nOut & 0x00; //0x30
for(i=0;i<100000;i++);
rGPFDAT=nOut ;
}

/******************************************************************************* name: led_off
* func: turn off the leds one by one
******************************************************************************/void led_off(void)
{
int i,nOut;
nOut=0;
rGPFDAT = 0;
for(i=0;i<100000;i++);
rGPFDAT = nOut | 0x20;//0x80;
for(i=0;i<100000;i++);
rGPFDAT |= nOut | 0xa0;//0x40;
for(i=0;i<100000;i++);
rGPFDAT |= nOut | 0xb0;//0x20;
for(i=0;i<100000;i++);
rGPFDAT |= nOut | 0xf0;//0x10;
for(i=0;i<100000;i++);
}
具体的细节可以参考相应的工程文件。
分享到:
评论

相关推荐

    嵌入式体系结构及接口技术:第9章S3C44B0_2410硬件结构与关键技术分析1.ppt

    在I/O端口方面,S3C44B0和S3C2410都有大量的通用I/O端口,比如S3C2410拥有117个可编程的I/O口和24个外部中断源,能够适应各种输入输出需求。中断机制对于实时系统的响应至关重要,S3C2410的中断控制器允许高效地管理...

    IO直接操作

    S3C2410是一款由Samsung公司设计的基于ARM920T内核的微处理器,广泛应用于嵌入式系统、手持设备等。在S3C2410平台上编写直接驱动IO程序,通常是为了实现对硬件资源的低级控制,如LED灯的闪烁、串口通信等。 S3C2410...

    ARM参考资料.zip

    这些文档为开发者提供了深入理解S3C2410处理器及其外围接口的全面资料,对于进行基于ARM的嵌入式系统开发、硬件设计或固件编程的工程师来说,是非常宝贵的参考资料。通过这些文档,读者可以学习到如何有效地利用S3C...

    GPIO.rar_GPIO_GPIO linux _Linux IO_io_linux gpio

    GPIO,即General Purpose Input/Output,是嵌入式系统中常用的一种接口,允许微控制器(如ARM处理器S3C2410)直接与外部硬件交互。在Linux系统中,GPIO接口被广泛用于设备控制、状态监测等场景。标题中的"GPIO.rar_...

    Windows CE下操作GPIO的方法(以ARM9 S3C2410为例)

    在Windows CE操作系统下,对基于ARM9架构的S3C2410芯片进行GPIO(通用输入输出)操作,需要理解几个关键概念和技术。GPIO是嵌入式系统中用于实现简单I/O通信的重要组成部分,它允许处理器与外部硬件设备进行数据交换...

    基于ARM的嵌入式硬件系统设计

    例如,S3C2410包含了168Pin的扩展槽,可以连接网卡设备、LCD驱动、音频电路、串口设备、USB设备、PCMCIA、IDE/CF卡、SD卡接口以及IO扩展,还有支持电机等其他资源的局部总线和扩展总线。 **2. 存储器接口设计** S3...

    嵌入式系统物工-IO实验.pdf

    * 了解S3C2410的通用I/O接口 * 掌握I/O功能的复用并熟练的配置,进行编程实验 二、实验内容 * 在实验箱的CPU板上点亮LED灯LED1、LED2,并轮流闪烁 三、实验设备 * EL-ARM-830教学实验箱 * PentiumII以上的PC机 *...

    如何学习嵌入式Linux系统.docx

    例如,s3c2410 中有 AD 转换器,有 GPIO(通用 IO 口),还有 NAND flash 控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?...

    基于ARM的全软件开放式数控系统设计.pdf

    三星的S3C2410芯片被选用,其内核为ARM920T,具有多个接口和功能,支持多种显示格式、NAND Flash控制器、通用异步收发器等,使其适合应用于嵌入式系统。 8. 关键词 关键词包括“开放式数控系统”、“ARM”和“运动...

    ARM与嵌入式linux入门的建议

    例如,s3c2410芯片具有AD转换器、GPIO(通用IO口)、nandflash控制器等硬件资源,这些资源都有相应的寄存器地址,需要了解这些地址的含义和如何通过寄存器控制硬件的运行。同时,需要了解norflash和nandflash的存储...

    并口转换以太网接口简介

    RAM9开发板基于三星公司的S3C2410X处理器,该处理器采用ARM920T内核,拥有全性能MMU(Memory Management Unit),具备高性能、低功耗的特点,在各种嵌入式系统中广泛应用,如手机、PDA、便携式仪器仪表、手持设备等...

    一种基于ARM-Linux的FPGA程序加载方法

    本文的硬件设计涉及到S3C2410这款由SUMSUN公司生产的ARM处理器,通过其通用IO管脚D组与FPGA的配置管脚连接。硬件连接示意图虽然未展示,但设计的实现细节应涵盖了各管脚的功能和连接方式。 在程序加载过程中,首先...

    嵌入式Bootloader技术内幕

    - **开放的Flash编程**: 允许用户自行编写Flash编程算法以支持新的闪存芯片,内置了多种品牌的Flash编程算法,如SST、AMD、ATMEL、Macronix、Intel等,并提供了三星NAND Flash (S3C2410、S3C2440) 的编程算法。...

    关于ARM的GPIO上拉下拉的基本理解

    在一些ARM微控制器或处理器的设计中,例如S3C2410,其特定端口(如GPB-BPH口)内部集成了上拉电阻寄存器。这意味着,即使在硬件层面上,也可以通过程序来控制GPIO端口的上拉电阻是否使能,从而影响端口电平。如果上...

Global site tag (gtag.js) - Google Analytics