嵌入式系统输入输出设备接口

上传人:第*** 文档编号:49914627 上传时间:2018-08-04 格式:PPT 页数:174 大小:2.17MB
返回 下载 相关 举报
嵌入式系统输入输出设备接口_第1页
第1页 / 共174页
嵌入式系统输入输出设备接口_第2页
第2页 / 共174页
嵌入式系统输入输出设备接口_第3页
第3页 / 共174页
嵌入式系统输入输出设备接口_第4页
第4页 / 共174页
嵌入式系统输入输出设备接口_第5页
第5页 / 共174页
点击查看更多>>
资源描述

《嵌入式系统输入输出设备接口》由会员分享,可在线阅读,更多相关《嵌入式系统输入输出设备接口(174页珍藏版)》请在金锄头文库上搜索。

1、第5章 嵌入式系统输入输出设备接口5.1 GPIO(通用输入/输出接口)5.1.1 GPIO原理与结构nGPIO(General Purpose I/O,通用输入/输出接口)也称为并行 I/O(parallel I/O),是最基本的I/O形式,由一组输入引脚、输 出引脚或输入/输出引脚组成,CPU对它们能够进行存取操作。有 些GPIO引脚能够通过软件编程改变输入/输出方向。n一个双向GPIO端口(D0)的简化功能逻辑图如图5.1.1所示,图 中PORT为数据寄存器和DDR(Data Direction Register)为数据 方向寄存器。图5.1.1 双向GPIO功能逻辑图nDDR设置端口的

2、方向。如果DDR的输出为1,则GPIO端口为输出 形式;如果DDR的输出为零,则GPIO端口为输入形式。写入WR DDR信号能够改变DDR的输出状态。DDR在微控制器地址空间 中是一个映射单元。这种情况下,如果需要改变DDR,则需要将 恰当的值置于数据总线的第0位(即D0),同时激活WRDDR信 号。读DDR,就能得到DDR的状态,同时激活RDDDR信号。n如果设置PORT引脚端为输出,则PORT寄存器控制着该引脚端状 态。如果将PORT引脚端设置为输入,则此输入引脚端的状态由引 脚端上的逻辑电路层来实现对它的控制。对PORT寄存器的写操作 ,需要激活WRPORT信号。PORT寄存器也映射到微

3、控制器的地 址空间。需指出,即使当端口设置为输入时,如果对PORT寄存器 进行写操作,并不会对该引脚产生影响。但从PORT寄存器的读出 ,不管端口是什么方向,总会影响该引脚端的状态。5.1.2 S3C2410A输入输出端口编程实例nS3C2410A共有117个多功能复用输入输出端口(I/O口),分 为端口A端口H共8组。为了满足不同系统设计的需要,每个I/O 口可以很容易地通过软件对进行配置。每个引脚的功能必须在启 动主程序之前进行定义。如果一个引脚没有使用复用功能,那么 它可以配置为I/O口。注意:端口A除了作为功能口外,只能够作 为输出口使用。n在S3C2410A中,大多数的引脚端都是复用

4、的,所以对于每一个引 脚端都需要定义其功能。为了使用I/O口,首先需要定义引脚的功 能。每个引脚端的功能通过端口控制寄存器(PnCON)来定义( 配置)。与配置I/O口相关的寄存器包括:端口控制寄存器( GPACONGPHCON)、端口数据寄存器(GPADATGPHDAT) 、端口上拉寄存器(GPBUPGPHUP)、杂项控制寄存器以及外 部中断控制寄存器(EXTINTN)等。S3C2410A的I/O口配置情况 请参考第3章如表3.4.13.4.7所列。n下面介绍一个通过G口的控制发光二极管LED1和LED2轮流闪烁 I/O口编程实例徐英慧。n对I/O口的操作是通过对相关各个寄存器的读写实现的。

5、要对寄 存器进行读写操作,首先要对寄存器进行定义。有关I/O口相关 寄存器的宏定义代码如下:/Port A控制寄存器#definerGPACON (*(volatile unsigned*)0x56000000)/Port A数据寄存器#definerGPADAT (*(volati1e unsigned*)0x56000004)/Port B控制寄存器#definerGPBCON (*(volatile unsigned*)0x56000010) /Port B数据寄存器#definerGPBDAT (*(volatile unsigned*)0x56000014)/Port B上拉电阻禁止

6、寄存器#definerGPBUP (*(volatile unsigned*)0x56000018)/Port C控制寄存器 #definerGPCCON (*(volatile unsigned*)0x56000020) /Port C数据寄存器 #definerGPCDAT (*(volatile unsigned*)0x56000024) /Port C上拉电阻禁止寄存器 #definerGPCUP (*(volatile unsigned*)0x56000028) /Port D控制寄存器 #definerGPDCON (*(volatile unsigned*)0x56000030)

7、 /Port D数据寄存器 #definerGPDDAT (*(volatile unsigned*)0x56000034) /Port D上拉电阻禁止寄存器 #definerGPDUP (*(volatile unsigned*)0x56000038)/Port E控制寄存器 #definerGPECON (*(volatile unsigned*)0x56000040) /Port E数据寄存器 #definerGPEDAT (*(volatile unsigned*)0x56000044) /Port E上拉电阻禁止寄存器 #definerGPEUP (*(volatile unsign

8、ed*)0x56000048) /Port F控制寄存器 #definerGPFCON (*(volatile unsigned*)0x56000050) /Port F数据寄存器 #definerGPFDAT (*(volatile unsigned*)0x56000054) /Port F上拉电阻禁止寄存器 #definerGPFUP (*(volatile unsigned*)0x56000058)/Port G控制寄存器 #definerGPGCON (*(volati1e unsigned*)0x56000060) /Port G数据寄存器 #definerGPGDAT (*(vol

9、atile unsigned*)0x56000064) /Port G上拉电阻禁止寄存器 #definerGPGUP (*(volatile unsigned*)0x56000068) /Port H控制寄存器 #definerGPHCON (*(volatile unsigned*)0x56000070) /Port H数据寄存器 #definerGPHDAT (*(volatile unsigned*)0x56000074) /Port H上拉电阻禁止寄存器 #definerGPHUP (*(volatile unsigned*)0x56000078)n要想实现对G口的配置,只要在地址0x

10、5600 0060中给32位的每一 位赋值就可以了。如果G口的某个引脚被配置为输出引脚,在 PDATG对应的地址位写入1时,该引脚输出高电平;写入0时该引 脚输出低电平。如果该引脚被配置为功能引脚,则该引脚作为相 应的功能引脚使用。n下面是实现LED1和LED2轮流闪烁的程序代码。void Main(void)int flag,i;Target Init();/进行硬件初始化操作,包括对IO口的初始化操作for(;)if(flag = = 0)for(i = 0;i Vi的情况时,此时,比较器的输 出为低电平,使计数控制信号C为0,计数器停止计数。这时候数字 输出量D7D0就是与模拟电压等效的

11、数字量。计数控制信号由高 变低的负跳变也是A/D转换的结束信号,表示已完成一次A/D转换。n计数式A/D转换器结构简单,但转换速度较慢。n2双积分式A/D转换器原理n双积分式A/D转换器对输入模拟电压和参考电压进行两次积分, 将电压变换成与其成正比的时间间隔,利用时钟脉冲和计数器测 出其时间间隔,完成A/D转换。双积分式A/D转换器主要包括积分 器、比较器、计数器和标准电压源等部件,其电路结构图如图 5.2.2(a)所示。n双积分式A/D转换器的转换过程如下:n首先对输入待测的模拟电压Vi进行固定时间的积分;n然后转换到标准电压VR进行固定斜率的反向积分(定值积分 ), 如图5.2.2(b)所

12、示。反向积分进行到一定时间,便返回起始值 。从图5.2.2(b)中可看出对标准电压VR进行反向积分的时间T2 正比于输入模拟电压,输入模拟电压越大,反向积分回到起始值 的时间T越长,有Vi(T2/T1)VR。n用标准时钟脉冲测定反向积分时间(如计数器),就可以得到对 应于输入模拟电压的数字量,实现A/D转换。n双积分式A/D转换器具有很强的抗工频干扰能力,转换精度高, 但速度较慢。图5.2.2 (a)双积分式A/D转换器电路结构图 双积分式A/D转换图图5.2.2 (b)积分输出波形 n3逐次逼近式A/D转换器原理n逐次逼近式A/D转换器电路结构如图5.2.3所示,其工作过程可与 天平称重物类

13、比,图中的电压比较器相当于天平,被测电压Ux相 当于重物,基准电压Ur相当于电压法码。该方案具有各种规格的 按8421编码的二进制电压法码Ur,根据UxUr,比较器 有不同的输出以打开或关闭逐次逼近寄存器的各位。输出从大到 小的基准电压法码,与被测电压Ux比较,并逐渐减小其差值,使 之逼近平衡。当Ux=Ur时,比较器输出为零,相当于天平平衡, 最后以数字显示的平衡值即为被测电压值。n逐次逼近式A/D转换器转换速度快,转换精度较高,对N位A/D转 换只需N个时钟脉冲即可完成,可用于测量微秒级的过渡过程的 变化,是在计算机系统中采用最多的一种A/D转换方法。图5.2.3 逐次逼近式A/D转换器电路

14、结构n4A/D转换器的主要指标n(1)分辨率(Resolution)n分辨率用来反映A/D转换器对输入电压微小变化的响应能力,通 常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。n 位A/D转换能反应1/2n满量程的模拟输入电平。分辨率直接与转 换器的位数有关,一般也可简单地用数字量的位数来表示分辨率 ,即n位二进制数,最低位所具有的权值,就是它的分辨率。n值得注意的是,分辨率与精度是两个不同的概念,不要把两者相 混淆。即使分辨率很高,也可能由于温度漂移、线性度等原因, 而使其精度不够高。n(2)精度(Accuracy)n精度有绝对精度(Absolute Accuracy)和相对精度

15、(Relative Accuracy)两种表示方法。n绝对精度:n在一个转换器中,对应于一个数字量的实际模拟输入电压和理想 的模拟输入电压之差并非是一个常数。把它们之间的差的最大值 ,定义为“绝对误差”。通常以数字量的最小有效位(LSB)的分数值来表示绝对精度,如1LSB。绝对误差包括量化精度和其他所有精 度。n相对精度n是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论 值之差,用模拟电压满量程的百分比表示。n例如,满量程为l0V,10位A/D芯片,若其绝对精度为1/2LSB,则其最 小有效位的量化单位为9.77mV,其绝对精度为4.88mV,其相对精度为 0.048%。n转换时

16、间(Conversion Time)n转换时间是指完成一次A/D转换所需的时间,即由发出启动转换命令信 号到转换结束信号开始有效的时间间隔。n转换时间的倒数称为转换速率。例如AD570的转换时间为25us,其转换 速率为40kHz。n量程n量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。n例如,单极性的量程为0+5V,0+10V,0+20V;双极性的量程为 -5+5V,-10+l0V。5.2.2 S3C2410A的AD转换器n1S3C2410A A/D转换器和触摸屏接口电路nS3C2410A包含一个8通道的A/D转换器,内部结构见图5.2.4,该 电路可以将模拟输入信号转换成10位数字编码(10位分辨率), 差分线性误差为1.0 LSB,积分线性误差为2.0 LSB。在 A/D转换时钟频率为2.5 MHz时,其最大转换率为500 KSPS(Kilo Samples Per Second,千采样点每秒),输入电压范围是03.3V 。A/D转

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号