1、第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 嵌入式系统设计嵌入式系统设计 基于基于ARM9ARM9微处理器微处理器S3C2410AS3C2410A第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.1.1 GPIO5.1.1 GPIO原理与结构原理与结构 GPIO(General Purpose I/O,通用输入/输出接口)也称为并行I/O(parallel I/O),是最基本的I/O形式,由一组输入引
2、脚、输出引脚或输入输入引脚、输出引脚或输入/ /输出引脚输出引脚组成,CPU对它们能够进行存取操作。有些GPIO引脚能够通过软件编程改变输入/输出方向。I/OI/O的应用是处理器的的应用是处理器的基础应用。基础应用。5.1 GPIO5.1 GPIO(通用输入(通用输入/ /输出接口)输出接口)第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 GPIOGPIO的应用的应用通用I/O口(接口,引脚);驱动LED或其他指示器;控制片外器件;检测数字输入,如键盘或开关信号;第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口
3、 嵌入式系统设计嵌入式系统设计 检测数字输入,如键盘或开关信号驱动LED或其它指示器控制片外器件第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.1.2 S3C2410A的IO口配置 S3C2410A共有117117个个多功能复用输入输出端口(I/O口),分为端口AH,共8组。 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 为了满足不同系统设计的需要,每个I/O口可以很容易地通过软件进行配置。每个引脚的功能必须在启动主程序之前进行定义。如果一个引脚没有使用复用功能,那么它可以
4、配置为I/O口。注意:端口 A除了作为功能口外,只能够作为输出口使用。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 引脚示例引脚示例如GPE端口共有16个GPIO引脚,功能如下; 这些端口都具有多功能,通过引脚配置寄存器,可以将其设置为所需要的功能,如:I/O功能、中断功能等等。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.1.3 S3C2410A5.1.3 S3C2410A的的I IO O口寄存器口寄存器引脚GPIO与控制寄存器的关系GPxCONGPxUP10GPxDA
5、TGPxDAT第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 通用名称描述GPxCONGPIO端口引脚功能选择寄存器,用于设置引脚为输入、输出或其他功能GPxDATGPIO端口数据寄存器。GPxUPGPIO端口上拉寄存器,用于设置端口的上拉电阻使能与禁止GPIO相关寄存器描述GPxCONGPxUP10GPxDATGPxDATx=A、B、C、D、E、F、G、H第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 GPIO相关寄存器描述GPxCONGPxCONGPxUP10GPxDATGP
6、xDATGPxCON描述A22:00-输出 1-其他B21:000-输入 01-输出 10-其他 11-保留C31:000-输入 01-输出 10-其他 11-保留D21:000-输入 01-输出 10-其他 11-保留E31:000-输入 01-输出 10-其他 11-保留F15:000-输入 01-输出 10-其他 11-保留G31:000-输入 01-输出 10-其他 11-保留H25:000-输入 01-输出 10-其他 11-保留第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 GPIO相关寄存器描述GPxDATGPxCONGP
7、xUP10GPxDATGPxDATGPxDAT描述A22:00-低电平 1-高电平B10:00-低电平 1-高电平C15:00-低电平 1-高电平D15:00-低电平 1-高电平E15:00-低电平 1-高电平F7:00-低电平 1-高电平G15:00-低电平 1-高电平H12:00-低电平 1-高电平第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 当I/O设置为GPIO输出模式(Output模式)时,写GPxDAT控制相应I/O口输出高电平或低电平。 注:GPxDAT为1的位对应I/O输出高电平,为0的位对应低电平; 当I/O设置为G
8、PIO输入模式(Input模式)时,读取GPxDAT寄存器即取得I/O口线上的电平状态。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 GPIO相关寄存器描述GPxUPGPxCONGPxUP10GPxDATGPxDATGPxUP描述B10:00-使能上拉 1-禁止上拉C15:00-使能上拉 1-禁止上拉D15:00-使能上拉 1-禁止上拉E15:00-使能上拉 1-禁止上拉F7:00-使能上拉 1-禁止上拉G15:00-使能上拉 1-禁止上拉H12:00-使能上拉 1-禁止上拉第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接
9、口输出设备接口 嵌入式系统设计嵌入式系统设计 MISCCR:多控制寄存器。该寄存器有多个功能,可以用来对USB主机和USB设备进行控制。 DCLKCON:DCLK控制寄存器。该寄存器是可读/写的,主要用于外部时钟DCLK0、DCLK1进行控制;通过该寄存器可以定义DCLKn信号的频率和占空比。 GSTATUSn:通用状态寄存器,共有5个,用来存放芯片的一些信息,如芯片的ID、电池状态等。 EXTINTn:外部中断控制器。 该类寄存器共有3个,用于对24个外部中断请求信号的有效方式进行选择 EINTELTn:外部中断过滤器。 该类寄存器共有4个,这些寄存器主用用来对外部中断请求信号滤波器的时钟、
10、宽度进行设置。 EINTMASK:外部中断屏蔽寄存器 用来对外部中断进行屏蔽,相应位为1表示屏蔽,为0表示不屏蔽。 EINTPEND:外部中断悬挂寄存器 用来作为外部中断未决位。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.1.4 S3C2410A5.1.4 S3C2410A输入输出端口编程实输入输出端口编程实例例 在S3C2410A中,大多数的引脚端都是复用的,所以对于每一个引脚端都需要定义其功能。为了使用I/O口,首先需要定义引脚的功能。 与配置I/O口相关的寄存器包括:端口控制寄存器(GPACONGPHCON)、端口数据寄存
11、器(GPADATGPHDAT)、端口上拉寄存器(GPBUPGPHUP)、杂项控制寄存器以及外部中断控制寄存器(EXTINTN)等。S3C2410A的I/O口配置情况请参考S3C2410A数据手册。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 #define rGPACON (*(volatile unsigned*)0 x56000000) /Port A控制寄存器#define rGPADAT (*(volati1e unsigned*)0 x56000004) /Port A数据寄存器#define rGPBCON (*(vola
12、tile unsigned*)0 x56000010) /Port B控制寄存器#define rGPBDAT (*(volatile unsigned*)0 x56000014) /Port B数据寄存器#define rGPBUP (*(volatile unsigned*)0 x56000018) /Port B上拉电阻禁止寄存器#define rGPCCON (*(volatile unsigned*)0 x56000020)/Port C控制寄存器#define rGPCDAT (*(volatile unsigned*)0 x56000024) /Port C数据寄存器#defin
13、e rGPCUP (*(volatile unsigned*)0 x56000028)/Port C上拉电阻禁止寄存器#define rGPDCON (*(volatile unsigned*)0 x56000030)/Port D控制寄存器#define rGPDDAT (*(volatile unsigned*)0 x56000034)/Port D数据寄存器#define rGPDUP (*(volatile unsigned*)0 x56000038)/Port D上拉电阻禁止寄存器 对I/O口的操作是通过对相关各个寄存器的读写实现的。 要对寄存器进行读写操作,首先要对寄存器进行定义。
14、有关I/O口相关寄存器的宏定义代码如下:一般写成: #include “S3C2410.h”第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 写一个通过G口的控制发光二极管LED1和LED2轮流闪烁I/O口编程实例,电路如下所示:例1:第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 #define rGPGCON (*(volati1e unsigned*) 0 x56000060)#define rGPGDAT (*(volatile unsigned*) 0 x56000064
15、)#define rGPGUP (*(volatile unsigned*) 0 x56000068)/端口G的GPG8控制LED1的亮灭,低电平时为亮#define led1light()#define led1clear()/端口G的GPG9控制LED2的亮灭,低电平时为亮#define led2light()#define led2clear()rGPGDAT &= 0 xfeff; rGPGDAT |= 0 x0100; rGPGDAT &= 0 xfdff; rGPGDAT |= 0 x0200; 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统
16、设计嵌入式系统设计 void main() int i;rGPGCON |=0 x00050000; /配置第8位、第9位为输出引脚 led1clear(); led2clear(); while (1) led1light(); led2clear();for (i = 0;i 10000000;i+); /延时 led1clear(); led2light(); for(i = 0;i 10000000;i+); /延时第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出
17、设备接口 嵌入式系统设计嵌入式系统设计 使用端口E作为普通I/O接口,端口E的GPE3位输出控制一个LED指示灯,GPE4位输出控制一个蜂鸣器。根据电路图用C语言实现其功能。 例2: 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 #include “2410addr.h”/GPE4用作蜂鸣器输出,高电平为鸣叫#define beepon()rGPEDAT= rGPEDAT |0 x0010;#define beepoff()rGPEDAT= rGPEDAT &0 xffef;/GPE3用作LED输出控制端,宏定义LED亮灭,低电平为亮
18、#define ledlight()rGPEDAT= rGPEDAT&0 xfff7; #define ledclear()rGPEDAT= rGPEDAT|0 x0008; 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 void main() rGPECON = rGPECON|0 x00000140; /初始化端口E,使GPE4、GPE3为输出 beepoff(); /关蜂鸣器 while() ledlight( ); /LED指示灯亮 beepon( ); /蜂鸣器发声 Delay(3000); /延时 beepoff( );
19、/关蜂鸣器 ledclear( ); /LED指示灯灭 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 例3: 使用端口F、H作为普通I/O接口,端口E的GPF4位输入控制一个按键,GPH10位输出控制一个蜂鸣器。根据电路图用C语言实现其功能。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 #include “2410addr.h”/ 定义独立按键KEY1的输入口#defin
20、e KEY_CON (14) /* GPF4口 */ 定义蜂鸣器控制口#define BEEP (110) /* GPH10口 */#define BEEP_MASK (BEEP)第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 int main(void) / 初始化I/O rGPFCON = (rGPFCON & (0 x038); / rGPFCON9:8 = 00b,设置GPF4为GPIO输入模式 rGPHCON = (rGPHCON & (0 x0320) | (0 x0120); / rGPHCON21:20 = 01b,设置
21、GPH10为GPIO输出模式 while(1) if (rGPFDAT & KEY_CON) / 读取GPF口线上的电平,判断GPF4是否为高电平 rGPHDAT = rGPHDAT | BEEP; / GPF4为高电平,则设置GPH10=1 else rGPHDAT = rGPHDAT & BEEP_MASK; / GPF4为低电平,则设置GPH10=0 DelayNS(1); return(0);第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计
22、嵌入式系统设计 29A/D转换基础 A/D转换又称模数转换,顾名思义,就是把模拟信号数字化。 完成一个或多个模拟信号到数字信号的转换。A/D转换的一般步骤5.2 A/D5.2 A/D转换器接口转换器接口第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 30 A/D转换的技术指标 1、分辨率(Resolution) 数字量变化一个最小量时模拟信号的变化量,1/2n 2、 转换速率(Conversion Rate) 完成一次从模拟转换到数字的A/D转换所需的时间的倒数 3、量化误差(Quantizing Error) 由于A/D的有限分辨率而
23、引起的误差(1LSB或1/2LSB) 4、偏移误差(Offset Error) 输入信号为零时输出信号不为零的值 5、满刻度误差(Full Scale Error) 满度输出时对应的输入信号与理想输入信号值之差 6、线性度(Linearity) 实际转换器的转移函数与理想直线的最大偏移第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 31 A/D转换器类型 1、 积分型A/D转换器 2、 逐次逼近型A/D 3、 并行比较/串行比较型A/D 4、 电容阵列逐次比较型 5、 压频变换型第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备
24、接口输出设备接口 嵌入式系统设计嵌入式系统设计 32 A/D转换的一般步骤 A/D转换过程是通过取样、保持、量化和编码这四个步骤完成的。 取样和保持主要由采样保持器来完成 量化编码就由A/D转换器完成第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.2.1 S3C2410A5.2.1 S3C2410A的的A AD D转换器转换器1 1S3C2410A A/DS3C2410A A/D转换器和触摸屏接口电路转换器和触摸屏接口电路 S3C2410A包含一个8通道的A/D转换器,内部结构见图5.2.4,该电路可以将模拟输入信号转换成10位数字
25、编码(10位分辨率),差分线性误差为1.0 LSB,积分线性误差为2.0 LSB。在A/D转换时钟频率为2.5 MHz时,其最大转换率为500KSPS(千采样点每秒),输入电压范围是03.3V。 A/D转换器支持片上操作、采样保持功能和掉电模式。S3C2410A的A/D转换器和触摸屏接口电路如图5.2.1所示。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 图图5.2.1 S3C2410A5.2.1 S3C2410A的的A/DA/D转换器和触摸屏接口电路转换器和触摸屏接口电路 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接
26、口输出设备接口 嵌入式系统设计嵌入式系统设计 2 2与与S3C2410A A/DS3C2410A A/D转换器相关的寄存器转换器相关的寄存器 使用S3C2410A的A/D转换器进行模拟信号到数字信号的转换,需要配置以下相关的寄存器。(1)ADC控制寄存器(ADCCON) ADC控制寄存器(ADCCON)是一个16位的可读写的寄存器,地址为0 x58000000,复位值为0 x3FC4。ADCCON位的功能描述如表5.2.1所列。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 表表5.2.1 ADC控制寄存器(控制寄存器(ADCCON)的
27、位功能)的位功能 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 (2)ADC触摸屏控制寄存器(ADCTSC) ADC触摸屏控制寄存器(ADCTSC)是一个可读写的寄存器,地址为0 x58000004,复位值为0 x058。ADCTSC的位功能描述如表5.2.2所列。在正常A/D转换时,AUTO_PST和XY_PST都置成0即可,其他各位与触摸屏有关,不需要进行设置。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 表表5.2.2 ADC5.2.2 ADC控制寄存器(控制寄存器(A
28、DCTSCADCTSC)的位功能)的位功能 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 (3)ADC转换数据寄存器(ADCDAT0和ADCDAT1) S3C2410A有ADCDAT0和ADCDAT1两个ADC转换数据寄存器。ADCDAT0和ADCDAT1为只读寄存器,地址分别为0 x5800000C和0 x58000010。在触摸屏应用中,分别使用ADCDAT0和ADCDAT1保存X位置和Y位置的转换数据。对于正常的A/D转换,使用ADCDAT0来保存转换后的数据。 ADCDAT0的位功能描述如表5.2.3所列,ADCDAT1的位功
29、能描述如表5.2.5所列,除了位9:0为Y位置的转换数据值以外,其他与ADCDAT0类似。通过读取该寄存器的位9:0,可以获得转换后的数字量。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 表表5.2.3 ADCDAT05.2.3 ADCDAT0的位功能的位功能 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 ADC 的使用分四个步骤:1) 设置ADCCON寄存器,选择输入信号通道,设置A/D转换器的时钟。使能A/D 转换器的预分频功能。计算A/D时钟的公式:A/D时钟频率=PL
30、CK/(预分频值(PRSCVL)+1)。2) 设置ADCTSC寄存器,使用设为普通转换模式,这里不能使用触摸屏功能。ADCTSC寄存器多用于触摸屏,对于普通的ADC,使用默认值即可。3) 设置ADCCON寄存器,启动A/D转换。如果设置READ_START位,则读取转换数据(读ADCDAT0 寄存器)时即启动下一次转换;否则,就通过设置ENABLE_START位来启动A/D。4) 转换结束时,读取ADCDAT0寄存器来获取数值。如果使用查询方式,则可以不读取ADCCON寄存器的ECFLG位(b15)来确定转换是否结束;否则可以使用INT_ADC中断,发生INT_ADC中断时表示转换结束。第第5
31、 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.2.3 S3C2410A A5.2.3 S3C2410A AD D接口编程实例接口编程实例 下面介绍一个AD接口编程实例,其功能实现从A/D转换器的通道0获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示。模拟输入信号的电压范围是02.5V。程序如下:1 1定义与定义与AD转换相关的寄存器转换相关的寄存器 #define rADCCON (*(volatile unsigned*)0 x58000000) /ADC控制寄存器 #define rADCTSC (*(volatile u
32、nsigned*)0 x58000004) /ADC触摸屏控制寄存器 #define rADCDLY (*(volatile unsigned*)0 x58000008) /ADC启动延时寄存器 #define rADCDAT0 (*(volatile unsigned*)0 x5800000c) /ADC转换数据寄存器0 #define rADCDAT1 (*(volati1e unsigned*)0 x58000010) /ADC转换数据寄存器 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 2 2对对A/DA/D转换器进行初始化转
33、换器进行初始化程序中的参数ch表示所选择的通道号,程序如下:void AD_Init(unsigned char ch) rADCDLY=100; /ADC启动延时 rADCTSC=0; /选择ADC模式 rADCCON=(114)|(496)|(ch3)|(02)|(07) return 0; /通道不能大于7 for(i=0; i 16; i+) /为转换准确,转换16次 rADCCON |=0 x1; /启动A/D转换 rADCCON= rADCCON0 xffc7 |(ch 4); /为转换准确,除以16取均值第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口
34、嵌入式系统设计嵌入式系统设计 4.4.主函数主函数 实现将转换后的数据在LCD上以波形的方式显示,程序如下第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.3.1 D/A5.3.1 D/A(数模)转换器的工作原理(数模)转换器的工作原理 将数字信号转换成模拟信号的过程称为数/模转换。能够完成这种转换的电路叫做数/模转换器,简称为D/A转换器,简记为DAC(Digital to Analog Converter)。 D/A转换器将输入的数字量转换为模拟量输出,数字量是由若干数位构成的,D/A转换器把一个数字量变为模拟量,就是把每一位上的
35、代码按照权值转换为对应的模拟量,再把各位所对应的模拟量相加,所得到各位模拟量的和便是数字量所对应的模拟量。5.3 D/A5.3 D/A转换器接口转换器接口 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.3.2 S3C2410A5.3.2 S3C2410A与与D/AD/A转换器的接口电路转换器的接口电路1 1MAX5380MAX5380与与S3C2410AS3C2410A的连接电路的连接电路 MAX5380是电压输出型的8位D/A转换芯片,使用I2C串行接口,转换速率高达400 kHz,其输入数字信号和输出模拟信号的对应关系如表5.
36、3.1所列。MAX5380与S3C2410A的连接电路如图5.3.1所示。 表5.3.1 MAX5380数字输入与模拟输出对照表数字输入模拟输出11111111(255/256)2V10000000十1V000000017.8mV000000000第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 图5.3.1 MAX5380与S3C2410A的连接电路 图5.3.1中,MAX5380的时钟SCL和数据输入SDA连接到S3C2410A的IICSCL(GPE15)和IICSDA(GPE14),CON2的1、2两端输出转换后的模拟信号值,其输出
37、电压范围为02V。 S3C2410A通过IIC接口向MAX5380发送数据,MAX5380将接收IIC总线的数据,并将其转换为模拟电压信号输出到CON2。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 2 2MAX5380MAX5380的软件编程的软件编程 MAX5380的编程动作通过函数void iic_write_max5380(U32 slvAdd,U8 data)完成,其中slvAddr为从设备地址,MAX5380使用0 x60;data为待写入的数据,即发送给MAX5380的数字值;iic_write_max5380的代码请参
38、考6.2节(I2C部分)。通过调用该函数可以实现给CON2输出各种波形信号。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 S3C2410A具有4路PWM输出,输出口分别为TOUT0-TOUT3。为了能够正确输出PWM信号,需要设置GPBCON寄存器选择相应I/O为TOUTx功能。 然后,通过TCFG0寄存器为PWM定时器时钟源设置预分频值,通过TCFG1寄存器选择PWM定时器时钟源。接着,通过TCNB0寄存器设置PWM周期,通过TCMPB0设置PWM占空比。 最后,通过TCON寄存器启动PWM定时器,即可输出PWM信号。PWM DAC
39、PWM DAC控制控制第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 S3C2410A的PWM控制器uS3C2410A处理器有5个16位定时器,其中定时器0/1/2/3有PWM脉冲输出功能;定时器4具有内部定时作用,但是没有输出引脚。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 程序设计:程序设计: 使用PWM输出实现DAC功能,输出电压分别为为0.0V、0.5V、1.0V、1.5V、2.0V、2.5V和3.0V。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输
40、出设备接口 嵌入式系统设计嵌入式系统设计 int main(void) uint16 pwm_dac; / 独立按键KEY1控制口设置 rGPFCON = (rGPFCON & (0 x038); / rGPFCON9:8 = 00b,设置GPF4为GPIO输入模式 / TOUT0口设置 rGPBCON = (rGPBCON & (0 x030) | (0 x02255) pwm_dac = 0; rTCMPB0 = pwm_dac; return(0);第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 void PWM_Init(uin
41、t16 cycle, uint16 duty) / 参数过滤 if(dutycycle) duty = cycle; / 设置定时器0,即PWM周期和占空比 / Fclk=200MHz,时钟分频配置为1:2:4,即Pclk=50MHz。 rTCFG0 = 97;/ 预分频器0设置为98,取得510204Hz rTCFG1 = 0;/ TIMER0再取1/2分频,取得255102Hz rTCMPB0 = duty; / 设置PWM占空比 rTCNTB0 = cycle; / 定时值(PWM周期) if(rTCON&0 x04) rTCON = (11); / 更新定时器数据 (取反输出inver
42、ter位) else rTCON = (12)|(11); rTCON = (10)|(13); / 启动定时器 第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.4.1 5.4.1 键盘与键盘与LEDLED数码管接口基本原理与结数码管接口基本原理与结构构1 1键盘的分类键盘的分类 键盘按与微控制器的连接方式,其结构可分为线性键盘和矩阵键盘两种形式。 u线性键盘由若干个独立的按键组成,每个按键的一端与微控制器的一个I/O口相连。有多少个键就要有多少根连线与微控制器的I/O口相连,适用于按键少的场合。5.4 5.4 键盘与键盘与LEDL
43、ED数码管接口数码管接口第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 u矩阵键盘的按键按N行M列排列,每个按键占据行列的一个交点,需要的I/O口数目是N+M,容许的最大按键数是NM。矩阵键盘可以减少与微控制器I/O接口的连线数,是常用的一种键盘结构形式。根据矩阵键盘的识键和译键方法的不同,矩阵键盘又可以分为非编码键盘和编码键盘两种。非编码键盘主要用软件的方法识键和译键。根据扫描方法的不同,可以分为行扫描法、列扫描法和反转法3种。编码键盘主要用硬件(键盘和LED专用接口芯片)来实现键的扫描和识别,例如使用8279专用接口芯片。第第5 5
44、章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 键盘的按键实际上就是一个开关,常用的按键开关有机械式按键、电容式按键、薄膜式按键、霍耳效应按键等。(1 1)机械式按键)机械式按键(2 2)电容式按键)电容式按键(3 3)薄膜式按键)薄膜式按键 (4 4)霍耳效应按键)霍耳效应按键第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 2 2LEDLED数码管数码管 LED(Light Emitting Diode,发光二极管)数码管(也称为七段数码管)价格低廉、体积小、功耗低,而可靠性又很好,在嵌
45、入式控制系统中应用非常普遍。 如图5.4.1(a)所示,LED数码管一般由8个发光管组成,分别称为a、b、c、d、e、f、g 7个字段和一个小数点段DP。通过7个字段的不同组合,可以显示09和AF共16个字母数字,从而实现十六进制的显示。例如,控制a、b、c、d、e、f段亮,g段不亮,就显示出数字零。(a) LED器件 (b)共阳极接法 (c)共阴极接法图5.4.1 7段LED显示器第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 LEDLED字符与段码对应表字符与段码对应表1-灯亮灯亮 0-灯灭灯灭第第5 5章章 嵌入式系统输入嵌入式系
46、统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 LED数码管可以分为共阳极和共阴极两种结构,如图5.4.1(b)、(c)所示。 在共阴极结构,各字段阴极控制端连接在一起接低电平,各字段阳极控制端连接到高电平时,则该段发光。例如,要显示b字母,只要使c、d.、e、f、g阳极接高电平即可实现。 在共阳极结构,各字段阳极控制端连接在一起接高电平,各字段阴极控制端连接到低电平时,则该段发光。例如,要显示b字母,只要使c、d.、e、f、g阳极接低电平即可实现。 在多个LED数码管显示电路中,通常把阴(阳)极控制端连接到一个输出端口,称为位控端口;而把各字段(数据显示段)连接到一个输出
47、端口,称为段控端口。段控端口处应输出十六进制数的7段代码。 将一个4位的BCD码译为LED的7位显示代码,可以采用专用译码芯片,如7447即采用专用的带驱动器的LED段译码器,可以实现对BCD码的译码。另一种常用的办法是软件译码法,将0F共16个数字(也可以为09)对应的显示代码组成一个表,直接输出7段码。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.4.2 5.4.2 用用I/OI/O口实现键盘接口口实现键盘接口 一个用I/O口实现的16个按键的键盘接口电路如图5.4.2所示。在本例中,采用了节省口线的“行扫描法”方法来检测键盘
48、,与44的矩阵键盘接口只需要8根口线,设置PF0PF3为输出扫描码的端口,PF4PF7为键值读入口。图5.4.2 ARM微处理器实现的键盘接口电路第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 行扫描法行扫描法: : 使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如果列值中有某位为低电平,则表明行列交点处的键被按下;否则扫描下一行,直到扫描完全部的行线为止。 在图5.4.2所示电路中,按键设置在行、列交叉点上,行、列分别连接到按键开关的两端。列线通过上拉电阻接到+5V上。平时无按键动作时,列线处于高电平状态;而当有键按下时,
49、列线电平状态将由通过此按键的行线电平决定:行线电平如果为低,列线电平为低;行线电平如果为高,则列线电平亦为高。通过这一点来识别矩阵式键盘是否被按下。因各按键之间相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 根据行扫描法的原理,识别矩阵键盘按键闭合分两步进行:(1)识别键盘哪一行的键被按下:让所有行线均为低电平,检查各列线电平是否为低,如果有列线为低,则说明该列有键被按下,否则说明无键被按下。(2)如果某列有键被按下,识别键盘哪一行的键被按下:逐行置低电平
50、,并置其余各行为高电平,检查各列线电平的变化,如果列电平变为低电平,则可确定此行此列交叉点处按键被按下。第第5 5章章 嵌入式系统输入嵌入式系统输入/ /输出设备接口输出设备接口 嵌入式系统设计嵌入式系统设计 5.4.3 5.4.3 采用专用芯片实现键盘及采用专用芯片实现键盘及LEDLED接口接口 一个54键盘及8位LED显示电路如下图所示,该电路采用支持IIC总线协议的ZLG7290芯片。 ZLG7290是一个采用IIC接口的键盘及LED驱动器芯片,IIC串行接口提供键盘中断信号方便与处理器接口,IIC接口传输速率可达32kbit/s,可驱动8位共阴数码管或64只独立LED和64个按键,可控