第四章 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()

 

[嵌入式]S5PV210微处理器GPIO编程相关推荐

  1. S5PV210体系结构与接口03:GPIO编程

    目录 1. GPIO功能简介 1.1 什么是GPIO? 1.2 GPIO作用 1.3 GPIO的构成(data sheet层面) 2. S5PV210芯片GPIO控制器简介 2.1 总额及分类 2.2 ...

  2. 嵌入式C语言编程课件,嵌入式系统C语言编程基础PPT课件

    <嵌入式系统C语言编程基础PPT课件>由会员分享,可在线阅读,更多相关<嵌入式系统C语言编程基础PPT课件(81页珍藏版)>请在人人文库网上搜索. 1.嵌入式系统C语言编程基础 ...

  3. 掌财社:新手学习嵌入式用什么语言编程?

    随着AI智能产品的出现,市场上对于嵌入式开发人员需求也越来越多,嵌入式系统成为了一个很时尚的名词,应用范围也相当的广泛,很多人都想入行嵌入式,那么,学习嵌入式用什么语言编程?这个对于新手来说是一个比较 ...

  4. Linux应用开发【第九章】GPIO编程应用开发

    文章目录 9 GPIO编程应用开发 9.1 GPIO编程基础介绍 9.2 GPIO编程软件接口 9.2.1 控制接口 9.2.2 GPIO信号 9.2.3 GPIO控制器 9.3 IMX6ULL开发板 ...

  5. 基于树莓派的python GPIO编程-常用函数综合整理

    Hello,朋友们大家好,欢迎大家来到LIUSE网络. 随着Mini型PC越来越多,与之而来的创客也丰富起来,比如说Arduino就是一个非常好里例子. 不过,Arduino毕竟是一块适合入门型的基础 ...

  6. 嵌入式C开发中编程模型——重点事件驱动和表驱动

    嵌入式C开发中编程模型 事件驱动 消息驱动 事件驱动vs消息驱动 数据驱动 1. 表驱动法(Table-Driven) 用表驱动法来实现 Unix设计原则中的"分离原则"和&quo ...

  7. 微处理器与嵌入式linux,嵌入式系统微处理器和PC端系统微处理器的最大区别

    原标题:嵌入式系统微处理器和PC端系统微处理器的最大区别 文章转载于:http://www.makeru.com.cn/170605/000751.html 嵌入式系统选择的微处理器和PC端系统的微处 ...

  8. 【嵌入式操作系统】实验2:GPIO编程及应用

    文章目录 一.实验目的 二.实验环境 三.实验内容 1.实验任务 2.实验步骤 总结 一.实验目的 熟悉STM32 模块的GPIO硬件连接: 掌握GPIO初始化配置: 掌握GPIO控制板上LED灯编程 ...

  9. 嵌入式ARM微处理器选型指南

    要选好一款处理器,要考虑的因素很多,不单单是纯粹的硬件接口,还需要考虑相关的操作系统.配套的开发工具.仿真器,以及工程师微处理器的经验和软件支持情况等.微处理器选型是否得当,将决定项目成败.当然,并不 ...

最新文章

  1. SpringBoot整合WebSocket
  2. 开始使用VS2005+ASP.NET+Access(以后可能是MS SQL Server)编写管理系统的计划
  3. Spring 事务底层原理,你会了吗?
  4. CUDA学习(九十一)
  5. java怎么打增量包_eclipse实现JavaWeb应用增量打包
  6. ASP.NET 网站项目 EF 的简单操作例子
  7. 如何配置 strongSwan 客户端 -- 节选自 OpenSuSE 中文用户手册
  8. 一分钟搞懂 分布式与集群
  9. html 滑动门效果,怎样用DW做滑动门的效果
  10. matlab tiff 压缩方式,无法打开以这种方式压缩的tiff文件(2) - imageJ / FIJI
  11. SUBMAIL赛邮云通信短信接口调用教程,一分钟集成
  12. 苹果手表 WatchKit 应用架构简介
  13. 阿里云ECS部署Docker
  14. 4399游戏测试实习生面试
  15. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 41: invalid start byte
  16. 设计模式:构建者模式
  17. 使用开源软件vlc media player 录制桌面视频
  18. tinyumbrella java_小雨伞TinyUmbrella打不开 解决方法分享
  19. 控制工程和计算机考研哪个好,考控制工程,哪个考研学校好
  20. python自制小游戏---切西瓜(简易版)

热门文章

  1. win10_64位+GTX1070max-q安装CUDA10.0.130+CUDNN7.4.2+Anaconda3.5.2+Tensorflow-gpu2.0.0+PyTorch-gpu1.2.0
  2. vue-cli脚手架集成websocket客户端实现高仿微信网页版在线聊天
  3. java 拼写纠错_拼写纠错的利器,BK树算法
  4. Ultra96-V2入门使用(裸机)
  5. linux将时区修改为CST
  6. Latex 表格图片公式跨双栏显示并使标题居中以及表格图片注释技巧
  7. 智云通CRM:读懂客户的五种“成交信号”,恰到好处地收单?
  8. 网络原理考点之信道复用技术
  9. 剑法三套,程序员也能挣大钱(一)
  10. 《LTE教程:原理与实现(第3版)》第1章扩展阅读