第7章_基于S3C2410的嵌入式系统硬件设计.ppt
文本预览下载声明
第 7 章 基于S3C2410的嵌入式系统硬件设计 端口控制器用于定义每个引脚的功能。如果GPF0~GPF7和GPG0~GPG7用作为唤醒信号,那么这些端口必须配置为中断模式。 如果端口配置为输出口,数据可以写入到端口数据寄存器(PnDAT)的相应位中;如果将端口配置为输入口,则可以从端口数据寄存器(PnDAT)的相应位中读出数据。 端口上拉寄存器用于控制每组端口的上拉电阻为禁止还是使能。如果相应位设置为0,则表示该引脚的上拉电阻使能;为1,则表示该引脚的上拉电阻禁止。如果使能了端口上拉寄存器,则不论引脚配置为哪种功能(输入、输出、DATAn、EINTn等),上拉电阻都会起作用。 杂项控制寄存器用于控制数据端口的上拉电阻、高阻状态、USB Pad和CLKOUT的选择。 24个外部中断通过不同的信号方式被请求。EXTINTn寄存器用于配置这些信号对于外部中断请求采用的是低电平触发、高电平触发、下降沿触发、上升沿触发还是双边沿触发。 7.6.1 A/D接口原理 A/D转换器是模拟信号和CPU之间联系的接口,它将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、处理、存储、控制和显示。 双积分型的A/D转换器 逐次逼近型的A/D转换器 按照转换速度、精度、功能以及接口等因素,常用的A/D转换器有以下两种: 7.6.2 S3C2410A的A/D转换器 S3C2410A的A/D转换器包含一个8通道的模拟输入转换器,可以将模拟输入信号转换成10位数字编码。在AD转换时钟为2.5MHz时,其最大转换率为500KSPS,输入电压范围是0~3.3V。 与A/D转换相关的寄存器 : ADC控制寄存器(ADCCON) ADC触摸屏控制寄存器(ADCTSC) ADC启动延时寄存器(ADCDLY) ADC转换数据寄存器(ADCDATn) 7.6.3 A/D接口编程实例 举例:从A/D转换器的通道0获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示。 1.定义与A/D转换相关的寄存器。 #define rADCCON (*(volatile unsigned *)0 //ADC控制寄存器 #define rADCTSC (*(volatile unsigned *)0 //ADC触摸屏控制寄存器 #define rADCDLY (*(volatile unsigned *)0 //ADC启动或间隔延时寄存器 #define rADCDAT0 (*(volatile unsigned *)0x5800000c) //ADC转换数据寄存器0 #define rADCDAT1 (*(volatile unsigned *)0 //ADC转换数据寄存器1 2.对A/D转换器进行初始化。这里的参数ch表示选择的通道号。 void AD_Init(unsigned char ch){ rADCDLY = 100; //ADC启动或间隔延时 rADCTSC = 0; //选择ADC模式 rADCCON = (114)|(496)|(ch3)|(02)|(01)|(0); //设置ADC控制寄存器 } 举例:从A/D转换器的通道0获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示。 3.获取A/D的转换值。参数ch为选用的通道号。 int Get_AD(unsigned char ch){ int i; int val=0; if(ch7) return 0; //通道不能大于7 for(i=0;i16;i++){ //为转换准确,转换16次 rADCCON |= 0x1; //启动 A/D 转换 rADCCON = rADCCON 0xffc7 | (ch3); while (rADCCON 0x1); //避免第一个标志出错 while (!(rADCCON 0x8000)); //避免第二个标志出错 val += (rADCDAT0 0x03ff); Delay(10); } return (val4); //为转换准确,除以16取均值 } 4.书写主函数。实现将转换后的数据在LCD上以波形的方式显示。 7.6.4 D/A接口原理 将数字信号转换成模拟
显示全部