您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 飞思卡尔s12单片机-ATD模块
第十章单片机片内外模块•10.1并行I/O•10.2异步串行通信SCI•10.3同步串行通信SPI•10.4ATD转换模块•10.5周期中断定时器PIT•10.6时钟产生器模块Page1Page2一、A/D转换基础知识二、ATD模块简介三、ATD模块寄存器四、ATD模块编程范例第十章单片机片内外模块——ATDPage3一、A/D转换基础知识•微控制器处理的是离散量(数字量),而现实中往往是连续量(模拟量)。物理量如:温度,压力,湿度以及速度等等。•传感器将物理量转换为电信号(电压,电流)•需要模拟-数字转换器将电信号转换为数字量以供微控制器处理第十章单片机片内外模块——ATD传感器控制器执行器Page4•逐次逼近式A/D转换器工作原理(4位为例)第十章单片机片内外模块——ATDSA-ADC完成一次转换至少需要n个时钟周期+-Uin逐次逼近寄存器D/A转换器结果UrefPage5•采样保持电路采样保持电路能够避免输入电压在转换期间发生变化而引起的差错第十章单片机片内外模块——ATD+-Uin•AD参数转换位数(Bits):分辨率=2-n(8bits=1/256=0.39%)转换速度(Speed):由工作时钟频率和转换位数确定转换范围(Range):0~5V,0~10V,-5V~+5V.Etc..转换通道数(Channels):8、16第十章单片机片内外模块——ATDPage6Page7二、ATD模块简介S12单片机ADC特性如下:•8/10/12位可选•转换速度较高,8位、8MHz、单次转换时间为2us•采样时间可编程设置•多种转换模式:数据对齐方式、单次/连续转换、转换结果比较•外触发控制•转换序列结束可产生中断,能够使能比较中断•模拟输入引脚与通用I/O口复用•多通道扫描,1~16转换序列长度。第十章单片机片内外模块——ATDPage8S12单片机ADC转换时间:第十章单片机片内外模块——ATD转换时间计算举例:(假设A/D时钟为2MHz,10位精度)转换时间=InitialSampleTime+ProgrammedSampleTime+ResolutionPeriod=2+4+10=16A/DClocks=8us4~24ClocksAlways2ClocksPage9S12单片机ADC模块框图第十章单片机片内外模块——ATDADC引脚可用于数字输入ADC结果寄存器模拟输入通道参考电压VDDAVSSAVRLVRH模拟信号Page10三、ATD模块寄存器共27个寄存器控制寄存器(ATDCTL0~ATDCTL5,6个)状态寄存器(ATDSTAT0~ATDSTAT1,2个)比较使能寄存器(ATDCMPE,1个)比较方式寄存器(ATDCMPHT,1个,)转换输入使能寄存器(ATDDIEN,1个)转换结果寄存器(ATDDR0~ATDDR15,16个)其中:8位寄存器:ATDCTL0~ATDCTL5,ATDSTAT016位寄存器:其余第十章单片机片内外模块——ATDATDRegisters1/12ATDControlRegister0(ATDCTL0)WRAP[3-0]-WrapAroundChannelSelect0=ReservedX=WRAP[3:0];多通道转换模式下,从ANx回绕到AN01≤x≤15仅在ATDCTL5的MULT=1时有效第十章单片机片内外模块——ATDATDRegisters2/12SRES[1:0]-A/DResolutionSelectATDControlRegister1(ATDCTL1)ETRIGSEL-ExternalTriggerSourceSelectS12XS此位无效ETRIGCH[3:0]-ExternalTriggerChannelSelectSMP_DIS-DischargeBeforeSamplingBit0=Nodischarge1=discharge注:写ATDCTL1会终止当前转换序列第十章单片机片内外模块——ATDATDRegisters3/12ATDControlRegister2(ATDCTL2)AFFC-ATDFastFlagClearAll0=向CCF[n]标志位写1则清零1=读ATD转换结果寄存器则CCF[n]标志位清零(当比较功能被禁止)写ATD转换结果寄存器则CCF[n]标志位清零(当比较功能被使能)ETRIGLE–外部信号触发条件选择位ETRIGP-ETRIGE-ExternalTriggerModeEnable0=禁止外部触发信号1=使能外部触发信号ASCIE-ATDSequenceCompleteInterruptEnable0=禁止ATD转换序列结束中断1=使能ATD转换序列结束中断ACMPIE-InternalClockinStopModeBit0=禁止比较中断1=使能比较中断注:写ATDCTL2会终止当前转换序列第十章单片机片内外模块——ATDATDRegisters4/12ATDControlRegister3(ATDCTL3)DJM-ResultRegisterDataJustification0=Leftjustifieddataintheresultregisters1=RightjustifieddataintheresultregistersS8C,S4C,S2C,S1C-ConversionSequenceLengthFIFO-ResultRegisterFIFOMode0=Conversionresultsareplacedintheorrespondingresultregisteruptotheselectedsequencelength.1=Conversionresultsareplacedinconsecutiveresultregisters(wraparoundatend).FRZ[1:0]-BackgroundDebugFreezeEnable注:写ATDCTL3会终止当前转换序列第十章单片机片内外模块——ATDATDRegisters5/12设置预分频因子时,0.25MHz≤ATDCLK≤8.3MHzATDControlRegister4(ATDCTL4)SMP[2:0]-SampleTimeSelect,采样时间包含的ATD时钟周期PRS[4:0]-ATDClockPrescalerDivideBy25-BitModulusCounterPrescalerPRS0-PRS4SYSTEMCLOCKA/DClock采样时间长,采样点电平更准确的逼近外部信号电平注:写ATDCTL4会终止当前转换序列第十章单片机片内外模块——ATDATD启动:写ATDCTL5会终止当前转换序列,并开始新一次转换此后,若外部触发信号每次满足触发条件都会开始一次ATD转换ATDRegisters6/12ATDControlRegister5(ATDCTL5)SC-SpecialChannelConversion0=Specialchannelconversionsdisabled1=SpecialchannelconversionsenabledSCAN-ContinuousConversionSequenceMode0=Singleconversionsequence1=Continuousconversionsequences(scanmode)MULT-Multi-ChannelSample0=Sampleonlyonechannel1=SampleacrossseveralchannelsCD,CC,CB,CA-AnalogInputChannelSelectCode第十章单片机片内外模块——ATD单通道,单次转换多通道,单次转换单通道,序列转换模式多通道,序列转换模式特殊通道测试模式ADC工作方式第十章单片机片内外模块——ATDATDRegisters7/12ATDStatusRegister0(ATDSTAT0)SCF-SequenceCompleteFlag0=一次转换序列未完成1=一次转换序列完成ETORF-ExternalTriggerOverrunFlag0=NoExternaltriggeroverrunerrorhasoccurred1=ExternaltriggeroverrunerrorhasoccurredFIFOR-ResultRegisterOverrunFlag0=Nooverrunhasoccurred1=Overrunconditionexists(resultregisterhasbeenwrittenwhileassociatedCCFxflagwasstillset)CC[3:0]-ConversionCounter当前转换结果将写入的结果寄存器编号例如:CC[3:0]=0110,转换结果写入第6个结果寄存器先入先出模式下,不被初始化,当计数到最大值回最小值非先入先出模式下,转换开始和结束时被初始化为0两种模式下终止ATD转换或开始新ATD转换均被清零第十章单片机片内外模块——ATDATDRegisters8/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会终止当前转换序列第十章单片机片内外模块——ATDATDRegisters9/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):CompareforconversionresultnumbernwithcomparevalueinATDDRn,usingcompareoperatorCMPGT[n]istrue.(NoresultavailableinATDDRn)出现以下任一情况,CCF[n]被清零:①写ATDCTL5②当AFFC=0,向CCF[n]写1③当AFFC=1,且CMPE[n]=1,写ATDDRn第十章单片机片内外模块——ATDATDRegisters10/12ATDInputEnableRegister(ATDDIEN)IEN[15:0]-ATDDigitalInputEnableonchannelx(x=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)0=DisabledigitalinputbuffertoANxpin1=EnabledigitalinputbufferonANxpin通用I/O口AD口与ATD模块的模拟输入引脚复用将某个模拟输入引脚作为通用输入引脚使用时,必须将对应IEN位置位第十章单片机片内外模块——ATDATDRegisters11/12ATDCompareHigherThanRegister(ATDCMPHT)CMPHT[15:0]-CompareOperationHigherThanEnableforconversionnumbern(n=15,14,…,2,1,0)ofaS
本文标题:飞思卡尔s12单片机-ATD模块
链接地址:https://www.777doc.com/doc-3352410 .html