第五章-GPIO接口
来源:互联网 发布:mac系统重装教程 u盘 编辑:程序博客网 时间:2024/05/16 15:48
1) GPIO硬件介绍
GPIO(General Purpose I/O Ports) 意思是为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态--是高电平还是低电平
S3C2440有130个I/O端口,分为A~J共9组:GPA、GPB、.....GPJ,可以通过设置寄存器来确定某个引脚用于输入、输出还是其他特殊功能。比如可以设置GPH6作为一般的输入、输出引脚,或者用于串口
GPIO的操作是所有硬件操作的基础。
2)既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能:
对于输入,一定可以通过读取某个寄存器来确定引脚的电平是高还是低
对于输出,一定可以通过写入某个寄存器来主这个引脚输出高电平或是低电平
对于某些特殊功能,则有另外的寄存器来控制它
对于这几组GPIO引脚,它们的寄存器是相似的:GPxCON用于选择引脚功能
GPxDAT用于读/写引脚数据
GPxUP用于确定是否使用内部上拉电阻
其中x 为A、B、....、H/J,没有GPAUP寄存器。
GPxCON寄存器:用于配置即选择引脚功能,每两位控制一根引脚:00表示输入、01表示输出、10表示特殊功能、11保留
注:PORTA与PORTB~PORTH/J在功能选择方面有所不同,GPACON中每一位对应一根引脚(共23根引脚),当某位被设为0时,相应引脚为输出引脚,此时我们可以在GPADAT中相应位写入0或1让此引脚输出低电平或高电平
当某位被设为1时,相应引脚为地址线或用于地址控制,此时GPADAT无用
GPxDAT寄存器:用于读/写引脚,当引脚被设为输入时,读此寄存器可知相应引脚的电平状态是高还是低(低电平为0、高电平为1)
当引脚被设为输出时,写此寄存器相应位可令此引脚输出高电平或低电平
GPxUP寄存器:某位为1时,相应引脚无内部上拉电阻
为0时,相应引脚使用内部上拉电阻
上拉电阻、下拉电阻的作用:当GPIO引脚处于第三态(即不是输出高电平,也不是输出低电平,而是呈高阻态,即相当于没有接芯片)时,它的电平状态由上拉电阻、下拉电阻确定
怎么访问硬件设备
访问单个引脚的操作为3种:输出高低电平、检测引脚状态、中断,对某个引脚的操作一般通过读、写寄存器来完成
1)寄存器访问方式:
示例1:在S3C2440处理器上,对GPB5号引脚输出低电平,点亮LED1(S3C2440的GPBCON、GPBDAT、寄存器地址都是0x56000010、0x56000014)
LED与按键连线图:
对应C代码:
#define GPBCON (*(volatile unsigned long *)0x56000010) /*GPBCON寄存器地址*/#define GPBDAT (*(volatile unsigned long *)0x56000014) /*GPBDAT寄存器地址*/#define GPB5_out (1 << (5 * 2)) /*定位到GPB5号引脚,因为GPBCON寄存器每两位控制一个引脚,GPB5即偏移5*2位*/GPBCON = GPB5_out; /*设置GPB5号引脚为输出*/GPBDAT &= ~(1 << 5); /*设置GPB5号引脚为低电平(0)*/
汇编代码:
.text.global _start_start: LDR R0, =0x56000010 @设置R0为GPBCON寄存器 MOV R1, # 0x00000400 STR R1, [R0] @将R0寄存器的值置为R1,即设置GPB5引脚为输出 LDR R0, =0x56000014 @将R0设置为GPBDAT寄存器 MOV R1, #0x00000000 STR R1, [R0]MAIN_LOOP: B MAIN_LOOP
2)总线访问方式:
示例2:通过总线对S3C2440的nor flash空间进行读操作S3C2440与NOR Flash连接线图:
图说明:1、NOR Flash地址空间:0x00000000~0x07FFFFFF
2、缓冲器的作用为提高驱动能力、隔离前后级信号
3、片选信号为uGCS0信号
代码:
unsigned short *pwAddr = (unsigned short *)0x2;unsigned short wVal;wVal = *pwAdd; /*这段代码CPU向NOR Flash发起读操作,NOR Flash收到地址后,从接收到的地址上取出数据,再通过数据总线D0~D15发给CPU*/
示例3:对NOR Flash作写操作
代码:
unsigned short *pwAddr = (unsigned short *)0x2;*pwAddr = 10; /*这段代码CPU向NOR Flash发起写操作,NOR Flash确定地址后,CPU将数据从数据总线传给NOR Flash,NOR Flash将值写在地址上*/
地址总线D0~D15传送信号为:0101 0000 0000 0000 (低位在低地址) 1234=1010
- 第五章-GPIO接口
- GPIO接口
- JZ2440 第5章 GPIO接口
- 第五章 类和接口
- 第五章 微型计算机输入输出接口
- 第五章 接口、抽象类
- 1、GPIO接口--s3c2440
- GPIO接口编程
- Pro.Mini2440-GPIO接口
- 多功能GPIO接口
- GPIO接口(转)
- linux gpio接口
- linux gpio接口
- linux gpio接口 .
- linux gpio接口 .
- GPIO接口解析
- linux gpio接口
- GPIO接口解析
- Java中static、final用法小结
- ABAP总结-转载,好全啊
- 利用隐私循环
- 如何关闭一个swingworker线程?
- 《windows程序设计》第三章学习心得
- 第五章-GPIO接口
- 银联在线Java接口开发
- PHP取多个不重复的随机数
- PHP获取文件目录dirname(__FILE__),getcwd(),
- Android之使用Android-query框架进行开发(二)
- 对象内存布局
- 免费的jquery-CDN加速点
- org.hibernate.AnnotationException: No identifier specified for entity
- Node groups和Compound matchers(混合匹配)