您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 单片机飞思卡尔ADC模块
吉林大学通信工程学院单片机原理与应用10.3A/D转换模块2单片机原理与应用本节提要一、A/D转换基础知识二、ATD模块简介三、ATD模块寄存器四、ATD模块编程范例3单片机原理与应用本节提要一、A/D转换基础知识二、ATD模块简介三、ATD模块寄存器四、ATD模块编程范例4单片机原理与应用ADC概述微控制器处理的是离散量(数字量),而现实中往往是连续量(模拟量)物理量如:温度,压力,湿度以及速度等等传感器将物理量转换为电信号(电压,电流)需要模拟-数字转换器将电信号转换为数字量以供微控制器处理5单片机原理与应用基本概念传感器控制器执行器6单片机原理与应用ADC工作原理将输入电压与若干等间距的参考电压进行比较因此需要比较器UinUrefUout=V+‘1’UinUrefUout=0V‘0’+-UinUrefUout1位ADC7单片机原理与应用ADC工作原理3个比较器可将电压分成4级(以2位来表示)Uref1Uref2Uref3Rank0Rank1Rank2Rank3Uref1Uref2Uref3Uout1Uout2Uout3Quiz1:Forvoltageinrank2,Uout1=?Uout2=?Uout3=?UmaxUmin+-+-+-Uin8单片机原理与应用ADC工作原理2位ADC+-+-+-UinUrefRRRRD0D1编码器8位ADC,需要多少个比较器?9单片机原理与应用ADC工作原理FlashConverterADC优点:速度极快缺点:非常复杂逐次逼近式A/D转换器+-Uin逐次逼近寄存器D/A转换器结果Uref10单片机原理与应用ADC工作原理逐次逼近式转换器转换过程(4位)SA-ADC完成一次转换至少需要n个时钟周期11单片机原理与应用ADC工作原理必须进行采样保持以避免输入电压在转换期间发生变化+-Uin12单片机原理与应用ADC工作原理逐次逼近式转换器(SA-ADC)非常快比较复杂SA-ADC在单片机中较为常见单片机中常见典型为8-12位具有多个多路复用的模拟通道SA-ADC通道选择寄存器13单片机原理与应用ADC参数转换位数(Bits)分辨率=2-n(8bits=0.39%)转换速度(Speed)由工作时钟频率和转换位数确定转换范围(Range)0~5V,0~10V,-5V~+5V.Etc..转换通道数(Channels)Distinguishthechannelandconverter14单片机原理与应用本节提要一、A/D转换基础知识二、ATD模块简介三、ATD模块寄存器四、ATD模块编程范例15单片机原理与应用8/10/12位可选转换速度较高,10位精度,单次转换时间为7usec采样时间可编程设置多种转换模式:数据对齐方式、单次/连续转换、转换结果比较外触发控制转换结束可产生中断可用于8个模拟输入通道的模拟输入多路转换器.模拟/数字输入引脚复用1~8转换序列长度.多通道扫描S12单片机ADC特性16单片机原理与应用2,4,8,16ClocksAlways2Clocks转换时间计算举例:(假设A/D时钟为2MHz,10位精度)转换时间=InitialSampleTime+ProgrammedSampleTime+ResolutionPeriod=2+2+10=14A/DClocks=7uSecS12单片机ADC转换时间17单片机原理与应用S12单片机ADC模块框图ADC引脚可用于数字输入ADC结果寄存器模拟输入通道参考电压18单片机原理与应用本节提要一、A/D转换基础知识二、ATD模块简介三、ATD模块寄存器四、ATD模块编程范例19单片机原理与应用ATD模块寄存器共27个寄存器控制寄存器(ATDCTL0~ATDCTL5,6个)状态寄存器(ATDSTAT0~ATDSTAT1,2个)比较使能寄存器(ATDCMPE,1个)比较方式寄存器(ATDCMPHT,1个,)转换输入使能寄存器(ATDDIEN,1个)转换结果寄存器(ATDDR0~ATDDR15,16个)其中:8位寄存器:ATDCTL0~ATDCTL5,ATDSTAT016位寄存器:其余20单片机原理与应用ATDRegisters1/12ATDControlRegister0(ATDCTL0)WRAP[3-0]-WrapAroundChannelSelect0=ReservedX=多通道转换模式从ANx回绕到AN01≤x≤15仅在ATDCTL5的MULT=1时有效21单片机原理与应用ATDRegisters2/12SRES[1:0]-A/DResolutionSelectATDControlRegister1(ATDCTL1)ETRIGSEL-ExternalTriggerSourceSelectS12XS此位无效ETRIGCH[3:0]-ExternalTriggerChannelSelectSMP_DIS-DischargeBeforeSamplingBit0=Nodischarge1=discharge注:写ATDCTL1会终止当前转换序列22单片机原理与应用ATDRegisters3/12ATDControlRegister2(ATDCTL2)AFFC-ATDFastFlagClearAll0=向CCF[n]标志位写1则清零1=读ATD转换结果寄存器则CCF[n]标志位清零(当比较功能被禁止)写ATD转换结果寄存器则CCF[n]标志位清零(当比较功能被使能)ICLKSTP-InternalClockinStopModeBit0=停止模式下,停止当前转换,退出停止模式后ATD转换自动重新开始1=停止模式下,可继续使用内部时钟进行ATD转换ETRIGLE-ExternalTriggerLevel/EdgeControlETRIGP-ExternalTriggerPolarityETRIGE-ExternalTriggerModeEnable0=禁止外部触发信号1=使能外部触发信号ASCIE-ATDSequenceCompleteInterruptEnable0=禁止ATD转换序列结束中断1=使能ATD转换序列结束中断ACMPIE-InternalClockinStopModeBit0=禁止比较中断1=使能比较中断注:写ATDCTL2会终止当前转换序列23单片机原理与应用ATDRegisters4/12ATDControlRegister3(ATDCTL3)DJM-ResultRegisterDataJustification0=Leftjustifieddataintheresultregisters1=RightjustifieddataintheresultregistersS8C,S4C,S2C,S1C-ConversionSequenceLengthFIFO-ResultRegisterFIFOMode0=Conversionresultsareplacedinthecorrespondingresultregisteruptotheselectedsequencelength.1=Conversionresultsareplacedinconsecutiveresultregisters(wraparoundatend).FRZ[1:0]-BackgroundDebugFreezeEnable注:写ATDCTL3会终止当前转换序列24单片机原理与应用ATDRegisters5/12设置预分频因子时,0.25MHz≤AEDCLK≤8.3MHzATDControlRegister4(ATDCTL4)SMP[2:0]-SampleTimeSelectPRS[4:0]-ATDClockPrescalerDivideBy25-BitModulusCounterPrescalerPRS0-PRS4SYSTEMCLOCKA/DClock采样时间长,采样点电平更准确的逼近外部信号电平注:写ATDCTL4会终止当前转换序列25单片机原理与应用ATD启动:写ATDCTL5会终止当前转换序列,并开始新一次转换此后,若外部触发信号每次满足触发条件都会开始一次ATD转换ATDRegisters6/12ATDControlRegister5(ATDCTL5)SC-SpecialChannelConversion0=Specialchannelconversionsdisabled1=SpecialchannelconversionsenabledSCAN-ContinuousConversionSequenceMode0=Singleconversionsequence1=Continuousconversionsequences(scanmode)MULT-Multi-ChannelSample0=Sampleonlyonechannel1=SampleacrossseveralchannelsCD,CC,CB,CA-AnalogInputChannelSelectCode26单片机原理与应用单通道,单次转换多通道,单次转换单通道,序列转换模式多通道,序列转换模式特殊通道测试模式ADC工作方式27单片机原理与应用ATDRegisters7/12ATDStatusRegister0(ATDSTAT0)SCF-SequenceCompleteFlag0=Conversionsequencenotcompleted1=ConversionsequencehascompletedETORF-ExternalTriggerOverrunFlag0=NoExternaltriggeroverrunerrorhasoccurred1=ExternaltriggeroverrunerrorhasoccurredFIFOR-ResultRegisterOverRunFlag0=Nooverrunhasoccurred1=Overrunconditionexists(resultregisterhasbeenwrittenwhileassociatedCCFxflagwasstillset)CC[3:0]-ConversionCounter当前转换结果将写入的结果寄存器编号例如:CC[3:0]=0110,转换结果写入第6个结果寄存器先入先出模式下,不被初始化,当计数到最大值回最小值非先入先出模式下,转换开始和结束时被初始化为0两种模式下终止ATD转换或开始新ATD转换均被清零28单片机原理与应用ATDRegisters8/12ATDCompareEnableRegister(ATDCMPE)CMPE[15:0]-CompareEnableforConversionNumbern(n=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)ofaSequence0=Noautomaticcompare1=Automaticcompareofresultsforconversionnofasequenceisenabled对一个序列中第n次ATD转换结果进行比较,除CMPE[n]=1,还要完成如下设置:①将比较阈值写入ATDDRn②写ATDCPMHT的CMPHT[n]位选择比较方法注:写ATDCMPE会终止当前转换序列29单片机原理与应用ATDRegisters9/12ATDStatusRegister2(ATDSTAT2)CCF[15:0]-ConversionCompleteFlagn(n=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)0=Conversionnumbernnotcompletedorsuccessfullycompared1=If(CMPE[n]=0):Conversionnumbernhascompleted.ResultisreadyinATDDRn.If(CMPE[n]=1):Compare
本文标题:单片机飞思卡尔ADC模块
链接地址:https://www.777doc.com/doc-3212491 .html