Chinaunix首页 | 论坛 | 博客
  • 博客访问: 155218
  • 博文数量: 72
  • 博客积分: 3680
  • 博客等级: 中校
  • 技术积分: 1051
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-22 13:51
文章分类
文章存档

2010年(72)

我的朋友

分类: 嵌入式

2010-10-18 09:18:16

S3C2440I/O口特性

S3C2440具有130个可配置为I/O口的引脚,分为别在8个端口,如下所列:

Port A(GPA):   25个I/O口

Port B(GPB):   11个I/O口

Port C(GPC):   16个I/O口

Port D(GPD):  16个I/O口

Port E(GPE):   16个I/O口

Port F(GPF):   8个I/O口

Port G(GPG):  16个I/O口

Port H(GPH):  9个I/O口

Port J(GPJ):   13个I/O口


这些引脚可配置为I/O口,也可以配置为特殊口。在main函数启动之前,每个引脚都已经在启动代码中配置好了,如下所列:

  1. void Port_Init(void)
  2. {
  3.         rGPACON = 0x7fffff ;
  4.         
  5.     rGPBCON = 0x055555;
  6.         rGPBUP  = 0x6Bf;     // The pull up function is disabled GPB[10:0]
  7.         
  8.         rGPCCON = 0xaaaaaaaa;      
  9.         rGPCUP  = 0xffff;     // The pull up function is disabled GPC[15:0]
  10.         
  11.         rGPDCON = 0xaaaaaaaa;      
  12.         rGPDUP  = 0xffff;     // The pull up function is disabled GPD[15:0]
  13.         
  14.         rGPECON = 0xa02aa800; // For added AC97 setting      
  15.         rGPEUP  = 0xffff;     
  16.         rGPFCON = 0x55aa;
  17.         rGPFUP  = 0xff;     // The pull up function is disabled GPF[7:0]
  18.         
  19.         rGPGCON = 0x00a2aaaa;// GPG9 input without pull-up
  20.         rGPGUP  = 0xffff;    // The pull up function is disabled GPG[15:0]
  21.         
  22.         rGPHCON = 0x00faaa;
  23.         rGPHUP  = 0x7ff;    // The pull up function is disabled GPH[10:0]
  24.         
  25.         rGPJCON = 0x02aaaaaa;
  26.         rGPJUP  = 0x1fff;    // The pull up function is disabled GPH[10:0]
  27.         
  28.         //External interrupt will be falling edge triggered.
  29.         rEXTINT0 = 0x22222222;    // EINT[7:0]
  30.         rEXTINT1 = 0x22222222;    // EINT[15:8]
  31.         rEXTINT2 = 0x22222222;    // EINT[23:16]
  32. }
复制代码

在应用程序中可根据自己需求再定制,程序中寄存器说明如下:

I/O端口控制寄存器(GPACON-GPJCON

S3C2440A中多数引脚具有多元化,可配置多种功能。所以需要GPnCON寄存器对每个引脚当前功能进行配置。

I/O端口数据寄存器(GPADAT-GPJDAT

如果I/O端口配置为输出口,数据写入PnDAT寄存器可控制Pn端口的输出,相应位为1输出高电平,为0输出低电平。

如果I/O端口配置为输入口,数据可通过读取PnDAT寄存器的值知道I/O口的状态,相应位为1输入高电平,为0输入低电平。

I/O端口数据寄存器(GPBUP-GPJUP

配置相应的引脚上拉使能,相应位配置为0,该引脚上拉使能;配置为1,不使能。注意,端口A不能配置上拉。

外部中断寄存器(EXTINT0-EXTINT2

总共有24个外部中断源,通过EXTINT寄存器配置中断触发方式。

000 低电平触发 001 高电平触发
01x 下降沿触发 10x 上升沿触发
11x            上下沿均可触发

上列Port_Init()函数中相应引脚的配置,请详细查阅S3C2440手册。



► 蜂鸣器控制实验

实验设备

硬件: PC机 一台

YX-AIO嵌入式综合创新设计平台 一台

ARM9核心板 一块

软件: Windows操作系统,ADS1.2集成开发环境H-JTAG下载环境

实验内容

控制YX-AIO嵌入式综合创新设计平台上的蜂鸣器报警。

硬件电路

普通I/O GPA16连接蜂鸣器,通过给GPA16高电平控制蜂鸣器蜂鸣(报警),电路图如下所示:


实验原理

配置GPACON寄存器。该寄存器的第16位控制GPA16请详细查阅S3C2440英文手册),配置该位为0

  1. rGPACON &= ~(1<<16);                   //设置GPA16口输出
复制代码


在程序中设置GPADAT的第16位为1时,GPA16将输出高电平,蜂鸣器进行报警;设置GPADAT的第16位为0时,GPA16将输出低电平,蜂鸣器停止报警。

  1. rGPADAT |= (1<<16); //GPA16口输出高电平
  2. rGPADAT &= ~(1<<16); //GPA16口输出低电平
复制代码


实验步骤

在ADS开发环境中使用AIO2440工程模版创建一个工程,并将程序代码添加到该工程;

在ADS开发环境中编译链接并生成目标文件;

将JTAG下载器连接YX-AIO嵌入式综合创新设计平台,并将该平台通电;

开启H-JTAG软件检测处理器与NOR-Flash;

使用H-JTAG软件将目标文件(.bin)下载到YX-AIO嵌入式综合创新设计平台上;

复位平台。


源代码:

  1. /********************************************************************
  2. **名称:DelayMS()
  3. **功能:软件延时
  4. **入口参数:dly 延时参数
  5. ********************************************************************/
  6. void DelayMS(U32 dly)
  7. { U32 i; //定义一个32位无符号整型变量i
  8.       for(dly=dly+1; dly>0; dly--)
  9.             for(i=6500; i>0; i--);
  10. }
  11. /********************************************************************
  12. ** 文件名:main()
  13. **-----------------------------------------------------------------
  1. **------------------------------------------------------------------
  2. ** 文件名: main.c
  1. ** 修改时间: 2009-6-1
  2. ** 描述:
  3. ********************************************************************/
  4. void Main(void)
  5. {
  6.       //----------------添加自己的代码-------------------
  7.       rGPACON &= ~(1<<16);
  8.       while (1)
  9.       {
  10.             rGPADAT |= (1<<16);
  11.             DelayMS(50);
  12.             rGPADAT &= ~(1<<16);
  13.             DelayMS(500);
  14.       }
  15. }
阅读(932) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~