资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章第四章 S3C2410A 的的 I/O 口口从这一章开始,就进入了 S3C2410A 底层驱动程序开发的学习过程中了。在第一章已经介绍了 ARM 系统开发的层级结构,本课程的内容符合层次结构中的第二层底层驱动开发,但是这里不包含启动代码的编写和操作系统移植。一般来讲 ARM 开发系统如广州友善之臂的 micro2440 开发板,英贝特公司的开发板,在加上达盛公司的实验系统等等,出厂时各类底层的相关驱动程序和应用的操作系统移植都已经编写测试完毕,其中 ARM 的启动代码是现成可以使用的,不需要重新编写。另外,出厂时的底层驱动代码都是可以直接使用的,这些代码可以提供给使用者自学时参考,当然如果觉得这些代码在结构上表达上都不尽如人意,读者随时都可以自行修改。达盛公司的实验系统的底层驱动程序也是现成可以使用的,但是鉴于教学需要,本课程会引导读者在理解底层硬件的基础上对这些程序进行修改或者重写编写部分驱动程序,以便使读者能够熟练掌握 S3C2410A 底层的驱动开发。4.14.1 S3C2410AS3C2410A 的的 GPIOGPIO1.S3C2410A CPU 有有 117 个多功能复用的个多功能复用的 I/O 口,共分为口,共分为 8 组。组。(1)16bit I/O 端口为:Port C、Port D、Port E 和 Port G(2)11bit I/O 端口为:Port B 和 Port H(3)23bit I/O 端口为:Port A(4)8bit I/O 端口为:Port F(5)在这里需要说明几个问题: 端口的 bit 数是什么意思?例如,Port C 为 16bit I/O 端口,即 Port C 共有 16 位,从 Port C0到 Port C15都可以应用。 多功能复用是什么意思?ARM7 和 ARM9 这些 CPU 的 I/O 口都可以配置成不同的功能,也就是说这些端口可以作为普通的输入输出端口使用,也可以配置成 UART 使用,还可以配置成 I2C、SPI 和 SSI 等总线信号使用。(6)如何操作这些 I/O 端口?用配置和访问 S3C2410A 的功能寄存器的方法可以操作 S3C2410A 的硬件资源。2.2. I/OI/O 端口的控制寄存器端口的控制寄存器下面这些宏定义摘自头文件 2410ADDR.H,这些通过这些寄存器就可以控制 S3C2410A的 I/O 端口了。还有一些功能寄存器在这里没有列出,读者可自行在 2410ADDR.H 这个文件中查找学习。/ I/O PORT #define rGPACON (*(volatile unsigned *)0x56000000) /Port A control#define rGPADAT (*(volatile unsigned *)0x56000004) /Port A data#define rGPBCON (*(volatile unsigned *)0x56000010) /Port B control#define rGPBDAT (*(volatile unsigned *)0x56000014) /Port B data#define rGPBUP (*(volatile unsigned *)0x56000018) /Pull-up control B#define rGPCCON (*(volatile unsigned *)0x56000020) /Port C control#define rGPCDAT (*(volatile unsigned *)0x56000024) /Port C data#define rGPCUP (*(volatile unsigned *)0x56000028) /Pull-up control C#define rGPDCON (*(volatile unsigned *)0x56000030) /Port D control#define rGPDDAT (*(volatile unsigned *)0x56000034) /Port D data#define rGPDUP (*(volatile unsigned *)0x56000038) /Pull-up control D#define rGPECON (*(volatile unsigned *)0x56000040) /Port E control#define rGPEDAT (*(volatile unsigned *)0x56000044) /Port E data#define rGPEUP (*(volatile unsigned *)0x56000048) /Pull-up control E#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#define rGPGCON (*(volatile unsigned *)0x56000060) /Port G control#define rGPGDAT (*(volatile unsigned *)0x56000064) /Port G data#define rGPGUP (*(volatile unsigned *)0x56000068) /Pull-up control G#define rGPHCON (*(volatile unsigned *)0x56000070) /Port H control#define rGPHDAT (*(volatile unsigned *)0x56000074) /Port H data#define rGPHUP (*(volatile unsigned *)0x56000078) /Pull-up control H在这里,我们以 Port G 为例来说明如何对 I/O 端口进行控制。和 Port G 有关的寄存器有:#define rGPGCON (*(volatile unsigned *)0x56000060) /Port G control#define rGPGDAT (*(volatile unsigned *)0x56000064) /Port G data#define rGPGUP (*(volatile unsigned *)0x56000068) /Pull-up control GrGPGCON、rGPGDAT 和 rGPGUP 为寄存器的名称,0x56000060、0x56000064 和0x56000068 为寄存器在 S3C2410A 中的硬件地址。即用名称来代替地址来操作。与寄存器描述相关的表格如下:表 4.1说明: 地址 0x5600006C 为保留地址,其功能没有定义。 寄存器 GPGCON 为可读可写的寄存器(R/W) ,其描述为配置 port G 的引脚,其复位值为 0x0(Reset Value) 。 寄存器 GPGDAT 为可读可写的寄存器(R/W) ,其描述为 port G 的数据寄存器,复位值没有定义。 寄存器 GPGUP 为可读可写的寄存器(R/W) ,其描述为 port G 的上拉功能禁止寄存器。表 4.2 表在下页说明: 从表 4. 2 可以看出寄存器 GPGCON 是 32 位的。 GPGCON 的每 2bit 对应 16bit 端口 G 中的一个。比如 GPGCON31:30对应于 GPG15。 端口 GPG10GPG8 是可以允许 5V 电平输入的。 以 GPG15 为例说明利用 GPGCON 是如何进行端口配置的。GPGCON31:30这 2bit 用来对 port G 中的 GPG15 进行配置:表 4. 3GPGCON31:30配置值GPG15 的功能00Input(输入)01Output(输出)10外部中断 2311触摸屏 Y 轴加操作开关控制信号表 4. 4说明: GPGDAT 寄存器是 16bit 寄存器。 具体功能为:当端口被配置为输入端口时,来自外部数据源的数据将会被读入到相对应的管脚中去,即 GPGDAT 是作为缓冲区用的。当端口被配置为输出端口时,写入这个寄存器中的数据将会被发送到相应的端口上去。当端口被配置为功能管脚时,在端口上会读到未定义的值。表 4. 5说明:GPGUP15:0对应着 GPG15:0,如果 GPGUP15:0的某一位为“0” ,则相对应的 GPG管脚的上拉功能就被使能了;如果 GPGUP15:0的某一位为“1” ,则相对应的 GPG 管脚的上拉功能就被禁止了。在 S3C2410A 上电的时候,GPGUP15:11默认数值为“1” ,也即GPG15:11的上拉功能是禁止的。这里说明一下什么是上拉功能,附带再说明一下相对应的下拉功能。一般,上拉和下拉功能只在数字电路中有效。上拉如图 4.1 所示:数数字字Pin芯芯片片电电 阻阻V VC CC C图 4.1上拉就是在数字芯片的管脚上通过一个电阻连接到电源上,一般可用的电阻值为3.3K、4.7K、5.1K 或者 10K,电阻值不易过大。具体作用是在引脚没有输出的情况下给该引脚一个确定的电平(高电平) ,另外还可以增加该管脚对外的驱动电流。如果引脚是输入作用的,那么在该引脚开路时,上拉操作也会给该引脚一个确定的高电平。下拉如图 4. 2 所示:数数字字Pin芯芯片片电电 阻阻图 4. 2下拉就是在数字芯片的管脚上通过一个电阻连接到地上,一般可用的电阻值为3.3K、4.7K、5.1K 或者 10K,电阻值不易过大。具体作用是在引脚没有输出的情况下给该引脚一个确定的电平(低电平) 。如果引脚是输入作用的,那么在该引脚开路时,下拉操作也会给该引脚一个确定的低电平。4.24.2 S3C2410AS3C2410A GPIOGPIO 寄存器寄存器这里只列举各个端口的控制寄存器和其他相关寄存器,各个端口的数据寄存器和上拉寄存器基本功能都是相同的,这里就不再重复列出了。1.PortA端口 A 只有控制寄存器和数据寄存器而没有上拉寄存器。数据寄存器位宽为 23bit。控制寄存器的具体内容定义详见 S3C2410A 的数据手册,这里不再详细说明。2.PortB端口 B 的控制寄存器只有 22bit 有效。其数据寄存器和上拉寄存器只有 11bit 有效。3.PortC端口 C 的数据寄存器和上拉寄存器只有 16bit 有效。4.PortD端口 D 的数据寄存器和上拉寄存器只有 16bit 有效。5.PortE端口 D 的数据寄存器和上拉寄存器只有 16bit 有效。6.PortF端口 F 的数据寄存器和上拉寄存器只有 8bit 有效。7.PortG端口 G 的数据寄存器和上拉寄存器只有 16bit 有效。8.PortH端口 H 的数据寄存器和上拉寄存器只有 11bit 有效。9.MISCCR 寄存器寄存器 这个寄存器主要和 USB Host 和 USB Device 有关。10. DCLKCON 寄存器寄存器这个寄存器定了 DCLKn 信号,这个信号可以作为外部设备的时钟源使用。这个寄存器只在 CLKOUT1:0被置位而发送 DCLKn 信号时才能正常工作。11. 通用状态寄存器(通用状态寄存器(GSTATUSn)鉴于篇幅,与
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号