《《单片机ADC模块》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《单片机ADC模块》PPT课件.ppt(38页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、吉林大学通信工程学院吉林大学通信工程学院 10.3 A/D转换模块单片机原理与应用单片机原理与应用本节提要本节提要一、一、A/D转换基础知识转换基础知识二、二、ATD模块简介模块简介三、三、ATD模块寄存器模块寄存器四、四、ATD模块编程范例模块编程范例单片机原理与应用单片机原理与应用本节提要本节提要一、一、A/D转换基础知识转换基础知识二、二、ATD模块简介模块简介三、三、ATD模块寄存器模块寄存器四、四、ATD模块编程范例模块编程范例单片机原理与应用单片机原理与应用ADC概述n微控制器处理的是离散量(数字量),而现实中往往是连续量(模拟量)物理量如:温度,压力,湿度以及速度等等n传感器 将
2、物理量转换为电信号(电压,电流)n需要模拟-数字转换器将电信号转换为数字量以供微控制器处理单片机原理与应用单片机原理与应用基本概念 传感器传感器 控制器控制器执行器执行器单片机原理与应用单片机原理与应用ADC 工作原理n将输入电压与若干等间距的参考电压进行比较n因此需要比较器比较器Uin Uref Uout=V+1Uin Uref Uout=0V 0UinUrefUout1位ADC单片机原理与应用单片机原理与应用ADC 工作原理n3 个比较器可将电压分成4 级(以 2位来表示)Uref1Uref2Uref3Rank0Rank1Rank2Rank3Uref1Uref2Uref3Uout1Uout
3、2Uout3Quiz1:For voltage in rank2,Uout1=?Uout2=?Uout3=?UmaxUminUin单片机原理与应用单片机原理与应用ADC工作原理n2位ADCUinUrefRRRRD0D1编码器8位 ADC,需要多少个比较器?单片机原理与应用单片机原理与应用ADC工作原理nFlash Converter ADC优点:速度极快缺点:非常复杂n逐次逼近式A/D转换器Uin逐次逼近寄存器D/A 转换器结果Uref单片机原理与应用单片机原理与应用ADC工作原理逐次逼近式转换器转换过程(4位)SA-ADC 完成一次转换至少需要 n 个时钟周期单片机原理与应用单片机原理与应用
4、ADC工作原理n必须进行采样保持以避免输入电压在转换期间发生变化Uin单片机原理与应用单片机原理与应用ADC工作原理n逐次逼近式转换器(SA-ADC)非常快比较复杂nSA-ADC在单片机中较为常见单片机中常见典型为8-12位具有多个多路复用的模拟通道SA-ADC通道选择寄存器单片机原理与应用单片机原理与应用ADC 参数n转换位数(Bits)分辨率=2-n (8bits=0.39%)n转换速度(Speed)由工作时钟频率和转换位数确定n转换范围(Range)05V,010V,-5V+5V.Etc.n转换通道数(Channels)Distinguish the channel and conver
5、ter单片机原理与应用单片机原理与应用本节提要本节提要一、一、A/D转换基础知识转换基础知识二、二、ATD模块简介模块简介三、三、ATD模块寄存器模块寄存器四、四、ATD模块编程范例模块编程范例单片机原理与应用单片机原理与应用 8/10/12位可选 转换速度较高,10位精度,单次转换时间为7usec 采样时间可编程设置 多种转换模式:数据对齐方式、单次/连续转换、转换结果比较 外触发控制 转换结束可产生中断 可用于8个模拟输入通道的模拟输入多路转换器.模拟/数字输入引脚复用 18 转换序列长度.多通道扫描S12单片机ADC特性单片机原理与应用单片机原理与应用2,4,8,16 ClocksAlw
6、ays2 Clocks转换时间计算举例:(假设A/D 时钟为2MHz,10位精度)转换时间=Initial Sample Time+Programmed Sample Time+Resolution Period =2+2+10=14 A/D Clocks =7uSecS12单片机ADC转换时间单片机原理与应用单片机原理与应用S12单片机ADC模块框图ADC 引脚可用于数字输入ADC 结果寄存器模拟输入通道参考电压单片机原理与应用单片机原理与应用本节提要本节提要一、一、A/D转换基础知识转换基础知识二、二、ATD模块简介模块简介三、三、ATD模块寄存器模块寄存器四、四、ATD模块编程范例模块编
7、程范例单片机原理与应用单片机原理与应用ATD 模块寄存器n共27个寄存器控制寄存器(ATDCTL0ATDCTL5,6个)状态寄存器(ATDSTAT0ATDSTAT1,2个)比较使能寄存器(ATDCMPE,1个)比较方式寄存器(ATDCMPHT,1个,)转换输入使能寄存器(ATDDIEN,1个)转换结果寄存器(ATDDR0ATDDR15,16个)其中:8位寄存器:ATDCTL0ATDCTL5,ATDSTAT0 16位寄存器:其余单片机原理与应用单片机原理与应用ATD Registers 1/12ATD Control Register 0(ATDCTL0)WRAP3-0-Wrap Around
8、Channel Select 0=ReservedX=多通道转换模式 从ANx回绕到AN0 1x 15 仅在ATDCTL5的MULT=1时有效单片机原理与应用单片机原理与应用ATD Registers 2/12SRES1:0-A/D Resolution SelectATD Control Register 1(ATDCTL1)ETRIGSEL-External Trigger Source Select S12XS此位无效ETRIGCH3:0-External Trigger Channel SelectSMP_DIS-Discharge Before Sampling Bit 0=No d
9、ischarge 1=discharge 注:写ATDCTL1会终止当前转换序列单片机原理与应用单片机原理与应用ATD Registers 3/12ATD Control Register 2(ATDCTL2)AFFC-ATD Fast Flag Clear All0=向CCFn 标志位写1则清零1=读ATD转换结果寄存器则CCFn 标志位清零(当比较功能被禁止)写ATD转换结果寄存器则CCFn 标志位清零(当比较功能被使能)ICLKSTP-Internal Clock in Stop Mode Bit0=停止模式下,停止当前转换,退出停止模式后ATD转换自动重新开始1=停止模式下,可继续使用
10、内部时钟进行ATD转换ETRIGLE-External Trigger Level/Edge ControlETRIGP -External Trigger PolarityETRIGE-External Trigger Mode Enable0=禁止外部触发信号1=使能外部触发信号ASCIE-ATD Sequence Complete Interrupt Enable0=禁止ATD转换序列结束中断1=使能ATD转换序列结束中断ACMPIE-Internal Clock in Stop Mode Bit0=禁止比较中断1=使能比较中断注:写ATDCTL2会终止当前转换序列单片机原理与应用单片机
11、原理与应用ATD Registers 4/12ATD Control Register 3(ATDCTL3)DJM-Result Register Data Justification0=Left justified data in the result registers1=Right justified data in the result registersS8C,S4C,S2C,S1C-Conversion Sequence LengthFIFO-Result Register FIFO Mode0=Conversion results are placed in the corres
12、ponding result register up to the selected sequence length.1=Conversion results are placed in consecutive result registers (wrap around at end).FRZ1:0-Background Debug Freeze Enable注:写ATDCTL3会终止当前转换序列单片机原理与应用单片机原理与应用ATD Registers 5/12设置预分频因子时,0.25MHzAEDCLK 8.3MHzATD Control Register 4(ATDCTL4)SMP2:0
13、-Sample Time SelectPRS4:0-ATD Clock PrescalerDivide By 25-Bit Modulus Counter PrescalerPRS0-PRS4SYSTEM CLOCKA/D Clock采样时间长,采样点电平更准确的逼近外部信号电平注:写ATDCTL4会终止当前转换序列单片机原理与应用单片机原理与应用ATD启动:启动:写ATDCTL5会终止当前转换序列,并开始新一次转换此后,若外部触发信号每次满足触发条件都会开始一次ATD转换 ATD Registers 6/12ATD Control Register 5(ATDCTL5)SC-Special
14、Channel Conversion0=Special channel conversions disabled1=Special channel conversions enabledSCAN-Continuous Conversion Sequence Mode 0=Single conversion sequence1=Continuous conversion sequences(scan mode)MULT-Multi-Channel Sample 0=Sample only one channel1=Sample across several channelsCD,CC,CB,CA
15、-Analog Input Channel Select Code单片机原理与应用单片机原理与应用单通道,单次转换单通道,单次转换多通道,单次转换多通道,单次转换单通道,序列转换模式单通道,序列转换模式多通道,序列转换模式多通道,序列转换模式特殊通道测试模式特殊通道测试模式ADC 工作方式单片机原理与应用单片机原理与应用ATD Registers 7/12ATD Status Register 0(ATDSTAT0)SCF-Sequence Complete Flag0=Conversion sequence not completed1=Conversion sequence has com
16、pletedETORF-External Trigger Overrun Flag0=No External trigger over run error has occurred1=External trigger over run error has occurredFIFOR-Result Register Over Run Flag0=No over run has occurred1=Overrun condition exists(result register has been written while associated CCFx flag was still set)CC
17、3:0-Conversion Counter 当前转换结果将写入的结果寄存器编号 例如:CC3:0=0110,转换结果写入第6个结果寄存器先入先出模式下,不被初始化,当计数到最大值回最小值非先入先出模式下,转换开始和结束时被初始化为0两种模式下终止ATD转换或开始新ATD转换均被清零单片机原理与应用单片机原理与应用ATD Registers 8/12ATD Compare Enable Register(ATDCMPE)CMPE15:0-Compare Enable for Conversion Number n(n=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)
18、of a Sequence0=No automatic compare1=Automatic compare of results for conversion n of a sequence is enabled对一个序列中第n次ATD转换结果进行比较,除CMPEn=1,还要完成如下设置:将比较阈值写入ATDDRn写ATDCPMHT的CMPHTn位选择比较方法注:写ATDCMPE会终止当前转换序列单片机原理与应用单片机原理与应用ATD Registers 9/12ATD Status Register 2(ATDSTAT2)CCF15:0-Conversion Complete Flag n
19、(n=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)0=Conversion number n not completed or successfully compared1=If(CMPEn=0):Conversion number n has completed.Result is ready in ATDDRn.If(CMPEn=1):Compare for conversion result number n with compare value in ATDDRn,using compare operator CMPGTn is true.(No res
20、ult available in ATDDRn)出现以下任一情况,CCFn被清零:写ATDCTL5当AFFC=0,向CCFn写1当AFFC=1,且CMPEn=1,写ATDDRn单片机原理与应用单片机原理与应用ATD Registers 10/12ATD Input Enable Register(ATDDIEN)IEN15:0-ATD Digital Input Enable on channel x(x=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)0=Disable digital input buffer to ANx pin1=Enable digital
21、 input buffer on ANx pin通用I/O口AD口与ATD模块的模拟输入引脚复用将某个模拟输入引脚作为通用输入引脚使用时,必须将对应IEN位置位单片机原理与应用单片机原理与应用ATD Registers 11/12ATD Compare Higher Than Register(ATDCMPHT)CMPHT15:0-Compare Operation Higher Than Enable for conversion number n (n=15,14,2,1,0)of a Sequence0=If result of conversion n is lower or same
22、 than compare value in ATDDRn,this is flagged in ATDSTAT21=If result of conversion n is higher than compare value in ATDDRn,this is flagged in ATDSTAT2注:写ATDCMPHT会终止当前转换序列单片机原理与应用单片机原理与应用ATD Registers 12/12-data formatATD Conversion Result Registers(ATDDRn)ATDDR0ATDDR15关闭比较操作时,ATD转换结果写入ATDDRn 要写入的AT
23、DDRn的编号由ATDSTAT0的CC3CC0转换计数给出 转换结果在ATDDRn中的放置位置与转换精度和结果对齐方式有关使能比较功能时,ATD转换结果和比较阈值都总是12位,与SRES1:0(ATDCTL1)无关DJM=0 左对齐DJM=1 右对齐转换结果不放入结果寄存器,比较完成后丢失单片机原理与应用单片机原理与应用本节提要本节提要一、一、A/D转换基础知识转换基础知识二、二、ATD模块简介模块简介三、三、ATD模块寄存器模块寄存器四、四、ATD模块编程范例模块编程范例单片机原理与应用单片机原理与应用ATD模块编程范例ATD模块编程方法ATD模块编程范例ATD初始化:先写除ATD0CTL5
24、外的控制寄存器,再写ATD0CTL5完成初始化,并启动转换;ATD结果读取:通过查询ATD0STAT0中的SCF位或采用中断方式,确定转换完成,读取相关结果寄存器取得ATD转换结果。任务:分别对特殊通道VRH、VRL和(VRH+VRL)/2进行 ATD转换单片机原理与应用单片机原理与应用ATD模块编程范例(续1)/*/*S12X128 ATD模块范例程序*/*#include /*common defines and macros*/#include/SCI相关函数/SCI初始化函数void SCI_init(void);void SCISendChar(char c1);void SCISe
25、ndString(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=0 x45;/单次转换,单通道,选择特殊通道VRLwhile(!(ATD0STAT0&0 x80);/查询ATD是否完成SCISendString(VRL=);SCISendHex(ATD0DR0H);SCISendS
26、tring(rn);ATD0CTL5=0 x44;/单次转换,单通道,选择特殊通道VRHwhile(!(ATD0STAT0&0 x80);/查询ATD是否完成SCISendString(VRH=);SCISendHex(ATD0DR0H);SCISendString(rn);ATD0CTL5=0 x46;/单次转换,单通道,选择特殊通道(VRL+VRH)/2while(!(ATD0STAT0&0 x80);/查询ATD是否完成SCISendString(VRL+VRH)/2=);SCISendHex(ATD0DR0H);SCISendString(rn);for(;)/END OF MIAN单
27、片机原理与应用单片机原理与应用ATD模块编程范例(续3)/*SCI相关函数*/void SCI_init(void)SCI0BDH=0;SCI0BDL=52;SCI0CR2=0 x0C;void SCISendChar(char c1)while(SCI0SR1_TC=0);SCI0DRL=c1;void SCISendString(char*pc1)while(*pc1)!=0)SCISendChar(*pc1);pc1+;void SCISendHex(char c1)SCISendChar(dtoa(c1&0 xF0)4);SCISendChar(dtoa(c1&0 x0F);unsigned char dtoa(char c1)return(c1=10)?(c1+0 x37):(c1+0 x30);单片机原理与应用单片机原理与应用ATD模块编程范例(续4)/*ATD相关函数*/ATD初始化函数void ATD_init(void)ATD0CTL1=0 x0F;/选择8位转换精度ATD0CTL2=0 x40;/打开CCF快速清零,关闭外部触发输入,关闭中断ATD0CTL3=0 x08;/数据左对齐,non-fifo,转换序列长度为1ATD0CTL4=0 xE3;/采样时间为24个ATD时钟周期,ATDClk=8MB/8=1MHz单片机原理与应用单片机原理与应用
限制150内