单片机飞思卡尔ADC模块.ppt
文本预览下载声明
10.3 A/D转换模块 本节提要 一、A/D转换基础知识 二、ATD模块简介 三、ATD模块寄存器 四、ATD模块编程范例 本节提要 一、A/D转换基础知识 二、ATD模块简介 三、ATD模块寄存器 四、ATD模块编程范例 ADC概述 微控制器处理的是离散量 (数字量) ,而现实中往往是连续量 (模拟量) 物理量如:温度, 压力,湿度以及速度等等 传感器 将物理量转换为电信号 (电压, 电流) 需要模拟-数字转换器将电信号转换为数字量以供微控制器处理 基本概念 ADC 工作原理 将输入电压与若干等间距的参考电压进行比较 因此需要比较器 Uin Uref Uout=V+ ‘1’ Uin Uref Uout=0V ‘0’ ADC 工作原理 3 个比较器可将电压分成4 级 (以 2位来表示) ADC工作原理 2位ADC ADC工作原理 Flash Converter ADC 优点: 速度极快 缺点: 非常复杂 逐次逼近式A/D转换器 ADC工作原理 ADC工作原理 必须进行采样保持以避免输入电压在转换期间发生变化 ADC工作原理 逐次逼近式转换器( SA-ADC ) 非常快 比较复杂 SA-ADC在单片机中较为常见 单片机中常见 典型为8-12位 具有多个多路复用的模拟通道 ADC 参数 转换位数(Bits) 分辨率 = 2-n (8bits = 0.39%) 转换速度(Speed) 由工作时钟频率和转换位数确定 转换范围(Range) 0~5V, 0~10V, -5V~+5V. Etc.. 转换通道数(Channels) Distinguish the channel and converter 本节提要 一、A/D转换基础知识 二、ATD模块简介 三、ATD模块寄存器 四、ATD模块编程范例 S12单片机ADC特性 S12单片机ADC转换时间 S12单片机ADC模块框图 本节提要 一、A/D转换基础知识 二、ATD模块简介 三、ATD模块寄存器 四、ATD模块编程范例 ATD 模块寄存器 共27个寄存器 控制寄存器(ATDCTL0~ATDCTL5,6个) 状态寄存器(ATDSTAT0~ATDSTAT1,2个 ) 比较使能寄存器(ATDCMPE, 1个) 比较方式寄存器(ATDCMPHT , 1个,) 转换输入使能寄存器(ATDDIEN , 1个) 转换结果寄存器(ATDDR0~ATDDR15,16个) 其中: 8位寄存器: ATDCTL0~ATDCTL5, ATDSTAT0 16位寄存器:其余 ATD Registers 1/12 ATD Registers 2/12 ATD Registers 3/12 ATD Registers 4/12 ATD Registers 5/12 ATD Registers 6/12 ADC 工作方式 ATD Registers 7/12 ATD Registers 8/12 ATD Registers 9/12 ATD Registers 10/12 ATD Registers 11/12 ATD Registers 12/12- data format 本节提要 一、A/D转换基础知识 二、ATD模块简介 三、ATD模块寄存器 四、ATD模块编程范例 ATD模块编程范例 ATD模块编程方法 ATD模块编程范例(续1) //******************************** // *S12X128 ATD模块范例程序* //******************************** #include hidef.h /* common defines and macros */ #include mc9s12XS128.h //SCI相关函数 //SCI初始化函数 void SCI_init(void); void SCISendChar(char c1); void SCISendString(char * pc2); void SCISendHex(char c1); unsigned char dtoa(char c1); //ATD相关函数 //ATD初始化函数 void ATD_init(void) ; ATD模块编程范例(续2) /*******主程序********/ void main(void) { SCI_init(); ATD_init(); ATD0CTL5=0x45; //单次转换,单通道,选择特殊通道VRL while(!(ATD0STAT00x80)); //查询ATD是否完成 SCISe
显示全部