刘彦文《基于ARM的嵌入式系统原理及应用》第7章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.1.2 与GPIO端口及其他寄存器相 关的S3C2440A/S3C2410A引脚信号
⒈ 与GPIO端口相关的S3C2440A/S3C2410A引脚 信号 端口A~端口J的数据寄存器GPADAT~GPJDAT, 与S3C2440A的130个引脚相关;端口A~端口H 的数据寄存器GPADAT~GPHDAT,与S3C2410A 的117个引脚相关。每个引脚可以设置的具体功 能及对应的引脚信号见7.3.1节。
7.1.1 GPIO端口及其他寄存器概述 I/O端口(Input/Output Port),也称为输入/ 输出端口。S3C2440A/S3C2410A I/O端口控制 器位于微处理器芯片内部。 ⒈ GPIO端口概述
S3C2410A有117个多功能输入/输出端口引脚, 分为如下8个端口: ·端口A(GPA):23个输出引脚的端口; ·端口B(GPB):11个输入/输出引脚的端口; ·端口C(GPC):16个输入/输出引脚的端口; ·端口D(GPD):16个输入/输出引脚的端口; ·端口E(GPE):16个输入/输出引脚的端口; ·端口F(GPF):8个输入/输出引脚的端口; ·端口G(GPG):16个输入/输出引脚的端口; ·端口H(GPH):11个输入/输出引脚的端口。
⑵ DCLK控制寄存器DCLKCON 只有在杂项控制寄存器MISCCR中,CLKSEL1、 CLKSEL0域选择了CLKOUT1、CLKOUT0输出引 脚使用DCLK1、DCLK0作为信号源,那么 DCLKCON中的参数才起作用。这些参数设置 DCLKn信号高、低电平的时间长度、DCLKn的 分频值等内容,见表7-37、表7-36。
高等院校wk.baidu.com息技术规划教材
基于ARM的 嵌入式系统原理及应用
刘彦文 编著 2017年2月
第7章 GPIO端口及中断控制器
本课件的配套教材
《基于ARM的嵌入式系统原理及应用》
刘彦文
清华大学出版社 2017/2
第7章 GPIO端口及中断控制器
7.1 S3C2440A/S3C2410A GPIO端口及 其他寄存器概述、引脚信号
每个端口最多与4个寄存器相关,这些寄存器合 称为端口寄存器组。例如端口B,有端口B引脚 配置寄存器GPBCON、端口B数据寄存器 GPBDAT、端口B上拉(电阻)允许/禁止寄存器 GPBUP和1个保留寄存器,参见表7-4。
参见表7-5、表7-6、表7-7,对于端口B数据寄 存器GPBDAT,如果这个端口被配置成输入端口 ,那么对应引脚输入的状态,自动地保留在这 个寄存器中。CPU读GPBDAT寄存器中的数据就 相当于读对应引脚的状态。如果这个端口被配 置成输出端口,那么CPU写入数据寄存器 GPBDAT的数据,被自动地从对应引脚输出。端 口除了可以配置为输入/输出外,还可以配置为 某种事先定义好的功能,比如端口B的一些引脚 可以用作外部DMA请求(nXDREQ0、nXDREQ1 )和响应(nXDACK0、nXDACK1)等信号。
⒉ 与其他寄存器相关的S3C2440A/S3C2410A 引脚信号 ⑴ 杂项控制寄存器MISCCR 在杂项控制寄存器MISCCR中,对下述引脚规定 了它们的信号方式: · SCKE、SCLK1和SCLK0引脚信号,是 S3C2440A/S3C2410A输出信号,在 SLEEP/Power_OFF模式用于保护SDRAM。在寄 存器MISCCR中规定了它们输出信号的方式,见 表7-36,参考表5-4。
SLEEP/Power_OFF是指S3C2440A的SLEEP或 S3C2410A的Power_OFF。 ⒉ 端口数据寄存器GPADAT~GPJDAT 如果端口被配置为输出端口,数据应该写到端 口数据寄存器的对应位;如果端口被配置为输 入端口,数据应该从端口数据寄存器的对应位 读出。
⒊ 端口上拉(电阻)允许/禁止寄存器 GPBUP~GPJUP 端口上拉(电阻)允许/禁止寄存器也称为端口 上拉允许/禁止寄存器。 端口上拉允许/禁止寄存器控制每个端口上拉电 阻允许/禁止。当对应位为0时,引脚的上拉电 阻被允许;当对应位为1时,上拉电阻被禁止。 ⒋ 杂项控制寄存器 杂项(miscellaneous)控制寄存器对数据总线 端口DATA[31:16]、DATA[15:0]上拉电阻、 USB pad和CLKOUT等进行选择。
7.2 S3C2440A/S3C2410A GPIO端口控制
⒈ 端口引脚配置寄存器GPACON~GPJCON 在S3C2440A/S3C2410A中,很多引脚具有多种 功能。因此对每个引脚,要求确定哪一种功能 被选择。端口引脚配置寄存器 GPACON~GPJCON用于确定每个引脚的功能。 如果GPF0~GPF7和GPG0~GPG7在 SLEEP/Power_OFF模式用作唤醒信号,那么这 些端口应该配置成中断模式。
⒉ 其他寄存器概述 在7.3.2节,讲述了特殊功能寄存器中的另外一 些寄存器,这些寄存器控制某些时钟信号、外 部中断请求信号的方式、外部中断屏蔽与否等 等。包括:杂项控制寄存器MISCCR、DCLK控 制寄存器DCLKCON、外部中断控制寄存器 EXTINT0~EXTINT2、外部中断滤波器寄存器 EINTFLT2和EINTFLT3、外部中断屏蔽寄存器 EINTMASK、外部中断登记寄存器EINTPEND和 通用状态寄存器GSTATUS0~GSTATUS4等。
⑷ 外部中断滤波器寄存器EINTFLT2和EINTFLT3 EINTFLT2和EINTFLT3规定了 S3C2440A/S3C2410A外部中断请求输入引脚 EINT16~EINT23,所使用的滤波宽度和可选择 的滤波器时钟,见表7-41、表7-42。
⑸ 外部中断屏蔽寄存器EINTMASK 对S3C2440A/S3C2410A外部中断请求引脚 EINT23~EINT4,规定了哪一个被屏蔽或允许 中断,见表7-43。 ⑹ 外部中断登记寄存器EINTPEND 对S3C2440A/S3C2410A外部中断请求引脚 EINT23~EINT4请求信号进行登记,1为有请求 ,见表7-44。
7.4.2 GPIO端口初始设置举例 加电或Reset后,U-Boot对GPIO端口初始设置 见例7.2。 【例7.2】 U-Boot对GPIO端口的设置。以下代 码是U-Boot针对SMDK2410评估板,设置I/O端 口的一个例子。寄存器定义在另外的文件中, 没有列出。 (见P277)
7.4.3 GPIO端口应用程序举例 例7.3中给出了通过对寄存器读、写,读入引脚 信号状态及输出到引脚高低电平的代码。 【例7.3】 以下举例程序中,端口E、端口F作为 普通I/O端口使用,其中端口E的GPE3引脚输出 控制一个LED指示灯、GPE4引脚输出控制一个 蜂鸣器,如图7.2所示;端口F用作并行数据输 入,若端口F对应的引脚上有一位是低电平时, 则蜂鸣器发声,LED灯亮。 (见P278)
7.3 S3C2440A/S3C2410A GPIO端口特殊功能寄存器
7.3.1 端口A~端口J寄存器组(见P259-267) 7.3.2 其他寄存器(见P267-275)
7.4 S3C2410A GPIO端口定义、 设置、应用程序举例
7.4.1 GPOI端口特殊功能寄存器在程序中定义 在嵌入式系统中能够使用C语言编程对特殊功能 寄存器进行读写,但是应该先定义后读写。每 个特殊功能寄存器都有一个固定地址,通常要 在.h文件中映射特殊功能寄存器的地址。方法 是对每个特殊功能寄存器对应的地址,用预处 理命令define加以定义。
以下例7.1仅仅列出了对GPIO端口部分寄存器地 址定义的方法,对所有特殊功能寄存器的定义 方法与此相同。另外还有其他对GPIO端口寄存 器定义的方法,此处不再列出。 【例7.1】 以下定义方法一的代码取自测试程序 2410addr.h,方法二的代码取自µC/OS-Ⅱ的 gpio.h,方法三的代码取自Linux的archs3c2410/s3c2410.h。 (见P275-277)
⑺ 通用状态寄存器GSTATUS0~GSTATUS4 这些寄存器中,可以读取的 S3C2440A/S3C2410A的引脚状态有: · nWAIT,存储器要求等待(扩展当前总线周 期)信号,输入,见表7-45,参考表5-3。 · NCON,Nand Flash配置状态,输入,见表745。 · RnB,Nand Flash Ready/Busy输入信号,见 表7-45。 · nBATT_FLT,电池状态引脚输入信号,见表 7-45,参考表6-2。
⑶ 外部中断控制寄存器EXTINT0~EXTINT2 EINT0~EINT23是S3C2440A/S3C2410A外部中 断请求信号输入引脚,在外部中断控制寄存器 EXTINT0~EXTINT2中,可以设置请求信号方式 (低电平、高电平、下降沿、上升沿、2个沿) ,见表7-38、表7-39和表7-40。
S3C2440A有130个多功能输入/输出端口引脚, 分为9个端口,比S3C2410A多1个端口J,另外 端口A多了2位(保留,没使用)。端口A~端口 H功能引脚含义与S3C2410A基本相同。 · 端口J(GPJ):13个输入/输出引脚的端口。 上述GPA~GPJ中的GP,表示General Purpose( 通用)。 上述端口,也称GPIO(General Purpose Input Output,通用输入输出)端口。
在端口B引脚配置寄存器GPBCON中设置不同的 值,选择了端口B数据寄存器作为输入、输出或 某种功能被使用。 端口B上拉(电阻)允许/禁止寄存器GPBUP中 的值,选择了微处理器片内连接到端口B引脚的 上拉(电阻)功能允许或禁止。
对于可能遇到的各种各样的系统配置和设计要 求,每个端口可以由软件方便地设置。要求在 运行主程序前,对被使用的每个引脚,定义使 用哪一种功能或定义作为输入、输出使用。 为了避免出现问题,初始引脚状态被适当地配 置,初始引脚状态指复位后硬件自动设置的状 态。之后允许程序对引脚功能进行配置。 初始引脚状态在7.3.1节各引脚配置寄存器中, 以信号名带有下划线来表示。
⒍ SLEEP/Power_OFF模式与I/O端口 在SLEEP/Power_OFF模式,所有GPIO寄存器值 被保留。 外部中断屏蔽寄存器EINTMASK不能阻止从 SLEEP/Power_OFF模式中唤醒。但是,如果 EINTMASK正屏蔽着EINT[15:4]中的一个,虽然 唤醒能够被操作,但源登记寄存器SRCPND中的 EINT4_7和EINT8_23位,在刚刚唤醒后将不设 置为1。
· nRSTOUT为外部设备Reset引脚信号,是 S3C2440A/S3C2410A输出信号,由nRESET & nWDTRST(看门狗Reset)& SW_RESET(软 件Reset)形成,在寄存器MISCCR中可以设置 软件Reset,见表7-36,参考表6-2。 · CLKOUT1、CLKOUT0引脚信号,是 S3C2440A/S3C2410A输出信号,信号源可由寄 存器MISCCR控制,分别从6个时钟信号中各选 择1个作为输出,见表7-36,参考表6-2。 · 引脚DATA[15:0]、DATA[31:16],由寄存器 MISCCR规定了允许/禁止使用上拉电阻,见表 7-36,参考表5-3。
⒌ 外部中断控制寄存器EXTINTn和外部中断滤波 器寄存器EINTFLTn S3C2440A/S3C2410A的24个外部中断可以由各 种信号方式提出请求。由外部中断控制寄存器 EXTINTn配置的外部中断请求信号方式有:低 电平触发、高电平触发、下降沿触发、上升沿 触发以及2个沿都触发。 EINT23~EINT16 8个外部中断引脚有数字滤波 ,参见7.3.2节外部中断滤波器寄存器EINTFLT2 和EINTFLT3。 只有16个EINT引脚EINT[15:0]在 SLEEP/Power_OFF模式可以用作唤醒源。