Cortex-M4原理与实践:第六章 模拟外设_第1页
Cortex-M4原理与实践:第六章 模拟外设_第2页
Cortex-M4原理与实践:第六章 模拟外设_第3页
Cortex-M4原理与实践:第六章 模拟外设_第4页
Cortex-M4原理与实践:第六章 模拟外设_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022年10月20日1Cortex-M4原理与实践第六章模拟外设2022年10月20日Cortex-M4原理与实践2主要内容提纲6.1模拟比较器6.2模拟数字转换器2022年10月20日3第六章Cortex-M4F微处理器的系统控制6.1模拟比较器2022年10月20日4概要Cortex-M4原理与实践模拟比较器的基本概念模拟比较器模块结构与功能模拟比较器模块的编程模拟比较器TM4C1294微控制器提供三个独立的集成模拟比较器,具有如下功能:可以比较外部输入管脚和外部输入管脚或内部可编程的参考电压比较器可将测试电压与下面的其中一种电压相比较独立的外部参考电压共用的外部参考电压共用的内部参考电压2022年10月20日Cortex-M4原理与实践52022年10月20日6内部结构Cortex-M4原理与实践功能描述比较器通过比较VIN-和VIN+输入来产生输出VOUT;VIN-<VIN+,VOUT=1;VIN->VIN+,VOUT=0;2022年10月20日Cortex-M4原理与实践7内部参考电压2022年10月20日Cortex-M4原理与实践8内部参考电压可设置为两种模式(低电平或高电平),具体取决于ACREFCTL寄存器的RNG位。当RNG位被清零时,内部参考电压处于高电平模式,而当RNG被置位时,内部参考电压处于低电平模式。初始化与配置举例2022年10月20日Cortex-M4原理与实践9voidmain(){intoutput;//初始化系统时钟g_ui32SysClock=SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ|SYSCTL_OSC_MAIN|SYSCTL_USE_PLL|SYSCTL_CFG_VCO_480),120000000);//设置为内部参考电压1.65VComparatorRefSet(COMP_BASE,COMP_REF_1_65V);例6.1:将比较器0配置成内部参考电压1.65V,不触发ADC转换,输出高低电平产生中断,输出不翻转。初始化与配置举例2022年10月20日Cortex-M4原理与实践10//配置比较器0、不会触发ADC转(COMP_TRIG_NONE)、用内部产生的电压//作为参考电压(COMP_ASRCP_REF)、比较器正常输出到器件管脚,不翻转//(COMP_OUTPUT_NORMAL)ComparatorConfigure(COMP_BASE,0,(COMP_TRIG_NONE|COMP_ASRCP_REF|COMP_OUTPUT_NORMAL));//延时SysCtlDelay(g_ui32SysClock/12);//读取比较器的输出值output=ComparatorValueGet(COMP_BASE,0);}2022年10月20日11第六章Cortex-M4F微处理器的系统控制6.2ADC数模转换模块2022年10月20日12概要Cortex-M4原理与实践ADC的基本概念模块结构与功能滚轮传感器和片上温度传感器的编程2022年10月20日13模-数转换器(ADC)Cortex-M4原理与实践实现把模拟信号转换成相应数字信号的电路ADC能将连续变化的模拟电压转换成离散的数字量值广泛应用于自动控制系统、测量系统等2022年10月20日14内置两个12位的ADC模块Cortex-M4原理与实践支持20个模拟输入通道和一个片上内置温度传感器;可配置为单端输入或差分输入;采样率最高可达1Msps(每秒采样一百万次);每个ADC模块有4个可编程的采样转换序列发生器,序列长度1到8个单元不等,且均带有相应的转换结果FIFO;每个采样序列均可灵活配置输入源、触发事件、中断的产生和序列优先级等;硬件可自动对最多64个采样取平均值以提高采样精度;用微型直接内存访问(μDMA)有效的传输数据ADC模块的连接框图2022年10月20日Cortex-M4原理与实践15两个ADC模块共享20个模拟输入通道,工作相互独立,可同时执行不同的采样序列、随时对任一模拟输入通道进行采样、并各自产生不同的中断和触发事件2022年10月20日16ADC模块框图Cortex-M4原理与实践2022年10月20日Cortex-M4原理与实践17采样序列发生器(SampleSequencer)功能:采样控制和数据采集每个采样序列由一系列程序设定的连续采样动作组成,实现自动从多个输入源中收集数据可以通过ADCSSMUXn寄存器配置采样序列输入管脚,通过ADCSSCTLn配置温度传感器使能、中断使能位和结束位等

ADCSequenceConfigure()每个序列发生器有各自最大的采样数目和FIFO深度采样序列执行完后,可以从ADC采样序列结果FIFO寄存器(ADCSSFIFOn)中读取结果数据ADCSequenceDataGet()Sequencer采样数FIFO深度SS088SS144SS244SS3112022年10月20日Cortex-M4原理与实践18模块控制控制单元负责除采样序列发生器外的剩余部分:中断产生、DMA操作、序列优先级设置、触发条件配置、比较器配置、外部参考电压、采样相位控制等2022年10月20日Cortex-M4原理与实践19中断控制ADC模块是否产生中断信号由ADC中断屏蔽寄存器(ADCIM)的MASK位决定中断状态可以从寄存器ADCRIS得到原始状态;或者从寄存器ADCISC得到屏蔽的中断状态使用函数ADCIntStatus()查知置位ADCISC寄存器的IN位可清除相应的序列发生器中断使用函数ADCIntClear()清除

中断状态2022年10月20日Cortex-M4原理与实践20采样事件采样序列发生器的触发条件通过ADC事件复用选择寄存器(ADCEMUX)定义触发事件源包括微控制器触发(默认)、模拟比较器触发、GPIO触发、通用定时器触发、PWM触发及持续采样触发软件可以通过置位ADC处理器采样序列启动寄存器(ADCPSSI)来启动采样序列采样启动函数ADCProcessorTrigger()例子2022年10月20日Cortex-M4原理与实践21voidmain(){intpui32ADC0Value;//初始化系统时钟g_ui32SysClock=SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ|SYSCTL_OSC_MAIN|SYSCTL_USE_PLL|SYSCTL_CFG_VCO_480),120000000);//开启ADC0时钟SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);例6.2:配置PE3口为ADC单端采样模式,使用采样序列3采样,处理器信号触发方式。例子2022年10月20日Cortex-M4原理与实践22//使能GPIOE口SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);//将PE3口配置成AD输入模式GPIOPinTypeADC(GPIO_PORTE_BASE,GPIO_PIN_3);//使用采样序列3来采样,处理器的信号触发方式,0为最高优先级ADCSequenceConfigure(ADC0_BASE,3,ADC_TRIGGER_PROCESSOR,0);//配置采样序列3的步骤0,配置模拟通道0(ADC_CTL_CH0)、采样结束产生中断ADCSequenceStepConfigure(ADC0_BASE,3,0,ADC_CTL_CH0|ADC_CTL_IE|ADC_CTL_END);//使能采样序列3ADCSequenceEnable(ADC0_BASE,3); 例子2022年10月20日Cortex-M4原理与实践23//开始采样前先清除采样序列3产生的中断ADCIntClear(ADC0_BASE,3);while(1){//触发ADC转换ADCProcessorTrigger(ADC0_BASE,3);//等待转换结束while(!ADCIntStatus(ADC0_BASE,3,false)){}//清除中断标志ADCIntClear(ADC0_BASE,3);//读取ADC转化的值ADCSequenceDataGet(ADC0_BASE,3,pui32ADC0Value);SysCtlDelay(g_ui32SysClock/12);}//延时}2022年10月20日Cortex-M4原理与实践24硬件采样平均电路产生更高精度的结果,最高可以将64个采样值进行平均,将平均结果作为单次采样结果写入FIFO的一个单元硬件平均电路默认是关闭的,关闭时转换器的所有数据直接传送到序列发生器FIFO硬件采样平均电路由ADCSAC寄存器控制,配置函数: ADCHardwareOversampleConfigure()2022年10月20日Cortex-M4原理与实践25A/D转换器采用SAR(逐次逼近法)产生12位模-数转换使用内部参考电压3.0V或外部参考电压(2.4V-3.63V)A/D转换的数值范围为0x00~0xFFF(即0~212-1)2022年10月20日Cortex-M4原理与实践26差分采样除了传统的单端采样,ADC模块还支持对两个模拟输入通道进行差分采样。要启用差分采样功能,软件必须在某个采样步骤的配置半字节中将ADCSSCTL0n寄存器的Dn位置位。差分信号对模拟输入00和112和324和536和748和9510和11612和13714和15816和17918和19注意:ADC不支持差分信号对的随意组合,如模拟输入端0和模拟输入端3无法作为一对差分信号输入。2022年10月20日27差分采样Cortex-M4原理与实践差分模式下采样电压是奇数通道与偶数通道电压的差值:正向输入电压:VIN+=VIN_EVEN(偶数通道电压)负向输入电压:VIN-=VIN_ODD(奇数通道电压)差分输入电压定义为:VIND=VIN+−VIN-,因此:若VIND=0,则转换结果=0x800若VIND>0,则转换结果>0x800(范围是0x800~0xFFF)若VIND<0,则转换结果<0x800(范围是0~0x800)2022年10月20日Cortex-M4原理与实践28差分采样由于最大的峰峰差分信号电压为2×(VREFP−VREFN),ADC读数表示为:mVperADCcode=(2×(VREFP−VREFN))/4096例子例6.3:差分采样实例:配置差分采样,使用差分对0,使用采样序列3,处理器信号触发采样。2022年10月20日Cortex-M4原理与实践292022年10月20日Cortex-M4原理与实践30温度传感器温度传感器的主要作用是当芯片温度过高或过低时向系统给予提示,保障芯片稳定工作温度传感器必须始终使能内部温度传感器提供模拟温度读数以及参考电压。输出端SENSO的电压按照下式计算:SENSO=2.7–((T+55)/75)可以从温度传感器的ADC结果通过函数转换得到温度读数(单位为℃):TEMP=147.5-((75*(VREFP-VREFN)×ADCCODE)/4096)例子2022年10月20日Cortex-M4原理与实践31voidmain(){//初始化系统时钟g_ui32SysClock=SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ|SYSCTL_OSC_MAIN|SYSCTL_USE_PLL|

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论