




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CollegeofCommunicationEngineering,JilinUniversity第7章单片机A-D转换模块2CollegeofCommunicationEngineering,JilinUniversity7A-D转换模块7.1A-D转换概述7.2A-D模块寄存器7.3A-D模块编程范例3CollegeofCommunicationEngineering,JilinUniversity7.1A-D转换概述-转换原理微控制器处理的是离散量(数字量),而现实中往往是连续量(模拟量)。物理量如:温度,压力,湿度以及速度等等。传感器将物理量转换为电信号(电压,电流)需要模拟-数字转换器将电信号转换为数字量以供微控制器处理4CollegeofCommunicationEngineering,JilinUniversity逐次逼近式A/D转换器工作原理(4位为例)+-Uin逐次逼近寄存器D/A转换器结果UrefSA-ADC完成一次转换至少需要n个时钟周期7.1A-D转换概述-转换原理5CollegeofCommunicationEngineering,JilinUniversity采样保持电路可以避免输入电压在转换期间发生变化而引起的差错。+-Uin7.1A-D转换概述-转换原理6CollegeofCommunicationEngineering,JilinUniversityA-D参数转换位数(Bits):分辨率=2-n(8bits=1/256=0.39%)转换速度(Speed):由工作时钟频率和转换位数确定转换范围(Range):0~5V,0~10V,-5V~+5V.Etc..转换通道数(Channels):8、167.1A-D转换概述-基本知识7CollegeofCommunicationEngineering,JilinUniversityS12单片机ADC特性如下:
8/10/12位可选
转换速度较高,8位、8MHz、单次转换时间为2us
采样时间可编程设置多种转换模式:数据对齐方式、单次/连续转换、转换结果比较外触发控制转换序列结束可产生中断,能够使能比较中断模拟输入引脚与通用I/O口复用多通道扫描,1~16转换序列长度。7.1A-D转换概述-模块简介8CollegeofCommunicationEngineering,JilinUniversityS12单片机ADC转换时间:转换时间计算举例:(假设A/D时钟为2MHz,10位精度
)转换时间=InitialSampleTime+ProgrammedSampleTime+ResolutionPeriod=2+4+10=16A/DClocks=8us4~24ClocksAlways2Clocks7.1A-D转换概述-模块简介9CollegeofCommunicationEngineering,JilinUniversityS12单片机ADC模块框图ADC引脚可用于数字输入ADC结果寄存器模拟输入通道参考电压VDDAVSSAVRLVRH模拟信号7.1A-D转换概述-模块简介10CollegeofCommunicationEngineering,JilinUniversity7.2A-D模块寄存器S12单片机A-D模块共27个寄存器控制寄存器(ATDCTL0~ATDCTL5,6个)状态寄存器(ATDSTAT0~ATDSTAT1,2个)比较使能寄存器(ATDCMPE,1个)比较方式寄存器(ATDCMPHT,1个)转换输入使能寄存器(ATDDIEN,1个)转换结果寄存器(ATDDR0~ATDDR15,16个)其中:8位寄存器:ATDCTL0~ATDCTL5,ATDSTAT016位寄存器:其余11CollegeofCommunicationEngineering,JilinUniversity1、ATDControlRegister0(ATDCTL0)$02C07.2A-D模块寄存器WRAP[3-0]-WrapAroundChannelSelect0=ReservedX=多通道转换模式从ANx回绕到AN0
1≤x≤15
仅在ATDCTL5的MULT=1时有效12CollegeofCommunicationEngineering,JilinUniversity2、ATDControlRegister1(ATDCTL1)$02C17.2A-D模块寄存器SRES[1:0]-A/DResolutionSelectETRIGSEL-ExternalTriggerSourceSelect
S12XS此位无效ETRIGCH[3:0]-ExternalTriggerChannelSelectSMP_DIS-DischargeBeforeSamplingBit0=Nodischarge1=discharge
注:写ATDCTL1会终止当前转换序列13CollegeofCommunicationEngineering,JilinUniversity3、ATDControlRegister2(ATDCTL2)$02C27.2A-D模块寄存器注:写ATDCTL2会终止当前转换序列AFFC-ATDFastFlagClearAll0=向CCF[n]标志位写1则清零1=读ATD转换结果寄存器则CCF[n]标志位清零(当比较功能被禁止)写ATD转换结果寄存器则CCF[n]标志位清零(当比较功能被使能)ETRIGE-ExternalTriggerModeEnable0=禁止外部触发信号1=使能外部触发信号ASCIE-ATDSequenceCompleteInterruptEnable0=禁止ATD转换序列结束中断1=使能ATD转换序列结束中断ACMPIE-ATDCompareInterruptEnable0=禁止比较中断1=使能比较中断ICLKSTP-InternalClockinStopModeBit0=停止模式下,停止当前转换,退出停止模式后
ATD转换自动重新开始1=停止模式下,可继续使用内部时钟进行ATD转换ETRIGLE-外部信号触发条件选择位ETRIGP-外部信号极性14CollegeofCommunicationEngineering,JilinUniversity4、ATDControlRegister3(ATDCTL3)$02C37.2A-D模块寄存器注:写ATDCTL3会终止当前转换序列DJM-ResultRegisterDataJustification0=Leftjustifieddataintheresultregisters1=RightjustifieddataintheresultregistersS8C,S4C,S2C,S1C-ConversionSequenceLengthFIFO-ResultRegisterFIFOMode0=Conversionresultsareplacedinthecorrespondingresultregisteruptotheselectedsequencelength.1=Conversionresultsareplacedinconsecutiveresultregisters(wraparoundatend).FRZ[1:0]-BackgroundDebugFreezeEnable15CollegeofCommunicationEngineering,JilinUniversity5、ATDControlRegister4(ATDCTL4)$02C47.2A-D模块寄存器注:写ATDCTL4会终止当前转换序列设置预分频因子时,0.25MHz≤ATDCLK≤8.3MHzSMP[2:0]-SampleTimeSelect,采样时间包含的ATD时钟周期PRS[4:0]-ATDClockPrescalerDivideBy25-BitModulusCounterPrescalerPRS0-PRS4SYSTEMCLOCKA/DClock采样时间长,采样点电平更准确的逼近外部信号电平16CollegeofCommunicationEngineering,JilinUniversity6、ATDControlRegister5(ATDCTL5)$02C57.2A-D模块寄存器A-D启动:写ATDCTL5会终止当前转换序列,并开始新一次转换此后,若外部触发信号每次满足触发条件都会开始一次ATD转换
SC-SpecialChannelConversion0=Specialchannelconversionsdisabled1=SpecialchannelconversionsenabledSCAN-ContinuousConversionSequenceMode0=Singleconversionsequence1=Continuousconversionsequences(scanmode)MULT-Multi-ChannelSample0=Sampleonlyonechannel1=SampleacrossseveralchannelsCD,CC,CB,CA-AnalogInputChannelSelectCode17CollegeofCommunicationEngineering,JilinUniversity7.2A-D模块寄存器单通道,单次转换多通道,单次转换单通道,序列转换模式多通道,序列转换模式特殊通道测试模式A-D模块工作方式18CollegeofCommunicationEngineering,JilinUniversity7、ATDStatusRegister0(ATDSTAT0)$02C67.2A-D模块寄存器SCF-SequenceCompleteFlag0=一次转换序列未完成1=一次转换序列完成ETORF-ExternalTriggerOverrunFlag0=NoExternaltriggeroverrunerrorhasoccurred1=ExternaltriggeroverrunerrorhasoccurredFIFOR-ResultRegisterOverrunFlag0=Nooverrunhasoccurred1=Overrunconditionexists(resultregisterhasbeenwrittenwhileassociatedCCFxflagwasstillset)CC[3:0]-ConversionCounter当前转换结果将写入的结果寄存器编号
例如:CC[3:0]=0110,转换结果写入第6个结果寄存器先入先出模式下,不被初始化,当计数到最大值回最小值非先入先出模式下,转换开始和结束时被初始化为0两种模式下终止ATD转换或开始新ATD转换均被清零19CollegeofCommunicationEngineering,JilinUniversity8、ATDCompareEnableRegister(ATDCMPE)$02C87.2A-D模块寄存器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会终止当前转换序列20CollegeofCommunicationEngineering,JilinUniversity9、ATDStatusRegister2(ATDSTAT2)$02CA7.2A-D模块寄存器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]=0,读ATDDRn当AFFC=1,且CMPE[n]=1,写ATDDRn21CollegeofCommunicationEngineering,JilinUniversity10、ATDInputEnableRegister(ATDDIEN)$02CC7.2A-D模块寄存器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位置位22CollegeofCommunicationEngineering,JilinUniversity11、ATDCompareHigherThanRegister(ATDCMPHT)$02CE7.2A-D模块寄存器CMPHT[15:0]-CompareOperationHigherThanEnableforconversionnumbern(n=15,14,…,2,1,0)ofaSequence0=IfresultofconversionnislowerorsamethancomparevalueinATDDRn,thisisflaggedinATDSTAT21=IfresultofconversionnishigherthancomparevalueinATDDRn,thisisflaggedinATDSTAT2注:写ATDCMPHT会终止当前转换序列23CollegeofCommunicationEngineering,JilinUniversity12~27、ATDConversionResultRegisters(ATDDRn)7.2A-D模块寄存器ATDDR0~ATDDR15$02D0~$02EE关闭比较操作时,ATD转换结果写入ATDDRn
要写入的ATDDRn的编号由ATDSTAT0的CC3~CC0转换计数给出
转换结果在ATDDRn中的放置位置与转换精度和结果对齐方式有关使能比较功能时,ATD转换结果和比较阈值都总是12位,与SRES[1:0](ATDCTL1)无关DJM=0比较阈值左对齐DJM=1比较阈值右对齐转换结果不放入结果寄存器,比较完成后丢失24CollegeofCommunicationEngineering,JilinUniversity7.3A-D模块编程范例ATD模块编程需要考虑的问题:启动转换:写ATD0CTL5将启动转换;若使用外部触发,则需设定触发通道,触发条件,使能外部触发转换进行:设定AD时钟,采样时间,转换位数,8/10/12位可选转换通道是否为特殊通道;转换序列是否为单通道;是否为连续转换是否为比较功能,如是,则需要使能比较通道,写比较阈值,选择比较方式转换结束:读SCF判断转换序列是否完成;或查CCF[15:0]逐个通道判断;或采用中断方式设置AFFC,CCF是否快速清零结果数据存储的寄存器设置FIFO读结果数据寄存器比较方式下,比较结果存于CCF[15:0],也可以使能比较中断25CollegeofCommunicationEngineering,JilinUniversity7.3A-D模块编程范例A-D模块应用注意事项ATD初始化:先写除ATD0CTL5外的控制寄存器写ATD0CTL5完成初始化,并启动转换;ATD结果读取:
通过查询ATD0STAT0中的SCF位(某通道的CCF位)或采用中断方式,确定转换完成,读取相关结果寄存器取得ATD转换结果。
8/10/12位可选26CollegeofCommunicationEngineering,JilinUniversity7.3A-D模块编程范例(1)AD初始化
voidATD_init(void){ATD0CTL1=0x0F;//选择8位转换精度ATD0CTL2=0x40;//打开CCF快速清零,关闭外部触发输入,关闭中断ATD0CTL3=0x08;//数据左对齐,non-fifo,转换序列长度为1ATD0CTL4=0xE3;//采样时间为24个ATD时钟周期,ATDClk=8MB/8=1MHz}27CollegeofCommunicationEngineering,JilinUniversity7.3A-D模块编程范例(2)单次、单通道for(;;){ATD0CTL5=0x0F;//单次转换,单通道,选择通道15//ATD0CTL5=0x46;//单次转换,单通道,选择特殊通道(VRL+VRH)/2while(!(ATD0STAT0&0x80));//查询ATD是否完成
ADresult=ATD0DR0H;showdata[0]=ADresult&0x0F;showdata[1]=(ADresult&0xF0)>>4;
Show(); //显示
}28CollegeofCommunicationEngineering,JilinUniversity7.3A-D模块编程范例(3)连续、单通道for(;;){/*ATD0CTL5=0x0F;*///单次转换,单通道,选择通道15while(!(ATD0STAT0&0x80));//查询ATD是否完成
ADresult=ATD0DR0H;showdata[0]=ADresult&0x0F;ATD0CTL5=0x2F;//连续转换,单通道,选择通道15showdata[1]=(ADresult&0xF0)>>4;ADresult=*(&ATD0DR0H+2);showdata[2]=ADresult&0x0F;showdata[3]=(ADresult&0xF0)>>4;Show(); //显示
}}29CollegeofCommunication
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论