C8051F020中的ADC应用要素

发布者:CelestialGarden最新更新时间:2021-03-22 来源: eefocus关键字:C8051F020  ADC 手机看文章 扫描二维码
随时随地手机看文章

F020具有8路12位A/D转换(简称ADC)接口和8路8位在线可编程(ISP)的ADC电路,片上的特殊功能寄存器(简称SFR)有15个与ADC的控制相关,它们是:


AMUX0SL——AMUX0通道选择寄存器,复位值为00000000;


MAX0CF——AMUX0配置寄存器,复位值为00000000;


ADC0CF——ADC0配置寄存器,复位值为11111000;


ADC0CN——ADC0控制寄存器,复位值为00000000;


ADC0H——ADC0数据字MSB寄存器,复位值为00000000;


ADC0L——ADC0数据字LSB寄存器,复位值为00000000;


ADC0GTH——ADC0下限数据高字节寄存器,复位值为11111111;


ADC0GTL——ADC0下限数据低字节寄存器,复位值为11111111;


ADC0LTH——ADC0上限数据高字节寄存器,复位值为00000000;


ADC0LTL——ADC0上限数据低字节寄存器,复位值为00000000;


AMX1SL——AMUX1通道选择寄存器,复位值为00000000;


ADC1CN——ADC1控制寄存器,复位值为00000000;


ADC1CF——ADC1配置寄存器,复位值为11111000;


ADC1——ADC1数据字寄存器,复位值为00000000;


REF0CN——基准电压控制寄存器,复位值为00000000。


ADC是混合信号控制器的重要功能,如欲在应用编程中得心应手,就必须对其相关的要素有较清晰的整体认识。


1 ADC的精度与通道


F020采用TQFP100封装,芯片引脚有8个(引脚18~25)专用于模拟输入,是8路12位ADC的输入端。每路12位的转换精度都是其自身的±1LSB(最低位)。实际上,对于12位逐次逼近寄存器型(SAR)ADC只有1个,在它与各输入端之间有1个具有9通道输入的多路选择开关(可配置模拟多路开关AMUX)。AMUX的第9通道连接温度传感器。在F020中,12位ADC称为ADC0,另有8路8位在系统可编程(ISP)的ADC电路称为ADC1。其8个外接引脚与P1口复用,片内结构与ADC0相近,只是转换的位数为8位,转换精度为8位的±1LSB。


ADC0端口的每一对均可用编程设置成为分别地单端输入或差分输入。差分输入时的端口配对为0-1、2-3、4-5、6-7,此设置由通道选择寄存器AMUX0SL的低4位和通道配置寄存器AMUX0CF的低4位确定。在AMX0CF中,位3~0各对应2个引脚通道。位值=0,表示是独立的单端输入(复位值均为单端输入);位值=1,表示是差分输入对。对应AMX0CF选差分输入时,AMUX0SL中只有在选双数(含0)通道时才有效(注:AMUX0SL低4位为1xxx时,不论AMX0CF低4位为何值,均选温度传感器)。


将REF0CN的位3置“1”时,允许使用温度传感器;置“0”时,温度传感器的输出为高阻态。温度传感器的值可用于修正参数的非线性或记录、调整与温度相关的数据。


2 ADC的速率与启动


C8051F系列单片机中ADC的速率都是可用编程设置的,但最少要用16个系统时钟。一般在转换之前还自动加上3个系统时钟的跟踪/保持捕获时间(>1.5μs)。设置F020内ADC速率的方法是通过配置寄存器ADCxCF(x为0或1)的位7~3来进行的,其复位值为11111(位7~3=SYSCLK/CLK SAR-1)。


一般在启动ADC之前都要处于跟踪方式,控制寄存器ADCxCN的位6如果为“0”,则一直处于跟踪方式(此时启动4种启动方式都可比跟踪启动快3个系统时钟);如为“1”,则有4种跟踪启动方式可选择,即对ADCxCN中的位3~2赋值:00为向ADBUSY写1时跟踪(软件命令);01为定时器3溢出跟踪;10为CNVSTR上升沿跟踪(外部信号);11为定时器2溢出跟踪。


复位时,ADCxCN的位7为0,处于关断状态。每次转换结束时,ADCxCN的位5为“1”,位4(忙标志)的下降沿触发结构中断,也可用软件查询这些状态位。


3 ADC的基准与增益


F020的片内有1个1.2V、15×10 -6/℃的带隙电压基准发生器和1个两倍增益的输出缓冲器。2.4V的基准电压(VREF)可通过外引脚分别接入ADC0、ADC1和DAC中。VREF对外带载能力为200μA(建议在驱动外部负载时,对地接1个负载电阻)。ADC使用偏置时,必须将参考源控制寄存器REFcCN中的位1置“1”;如果“0”,则关闭内部偏压,此时可通过VREF引脚(引脚12)使用外部基准电压,外部基准电压必须小于VAV±0.3V(还要大于1V)。不用ADC,也不用DAC时,可将REFxCN的位0置“0”,使缓冲放大器处于省电方式(输出为高阻态)。


设置REF0CN的位4为“0”时,ADC0用VREF偏置,为“1”时,用DAC0输出偏置;设置REF0CN的位3为“0”时,ADC1用VREF偏置,为“1”时,用AV+偏置。


在F020的ADC电路中,输入多路选择开关AMUX后面都带有1个可用编程设置增益的内部放大器(PGA)。当各模拟通道之间输入的电压信号范围差距较大时,或需要放大一个具有较大直流偏移的信号时(在差分输入方式,DAC可用于提供直流偏移)显得尤为有用。设置的方式是配置ADCxCF中的位2~0(000对应PGA的增益为1;001对应为2;010对应为4;011对应为8;10x对应为16、11x对应为0.5)。这里的增益对温度传感器信号也起作用。当增益为1时,VTEMP=0.002 86(V/℃)(TEMPC) ℃+0.776V。


4 ADC的数据与控制


对应单端输入,ADC结果数据字格式为:0V——0000,VREF——0FFF或FFF0。


对应差分输入,ADC结果数据字格式为2的补码:VREF——07FF,0——0000,-VREF——F800或8000。


将ADCxCN的位0置“0”可使结果右对齐;置“1”可使结果左对齐。当差分输入时,右对齐产生的多余高位是符号扩展位。


C8051F系列单片机内还设有数据相关窗口中断发生器或称可编程窗口检测器,也叫ADC上(下)限数据寄存器ADC0G(L)TH(L),用后台方式监视一个关键电压。当转换数据位于规定的窗口之内(或之外)时,向控制器申请转换结束中断。要求在窗口之内中断时,上限寄存器LT装入高位窗口数,下限寄存器GT装入低位窗口数;若要求在窗口之外中断时,则在下限寄存器GT中装入高位窗口数,在上限寄存器LT中装入下限窗口数。


复位时,ADC部分的状态为:内部电压基准缓冲器关闭、内部偏压关闭、内部传感器关闭、ADC禁止、转换结果数据寄存器右对齐、12位的端口均为单端输入、端口指向AIN0、SAR转换33个系统时钟、内部放大器增益为1、下限数据寄存器为FFFFH、上限数据寄存器为0000H。


综合F020中与ADC相关的各要素,要想正确应用ADC功能,应按下列顺序编程:设置参考电压>设置允许ADC>设置跟踪(启动)方式>设定数据对齐>配置通道>选择通道>设置转换时钟和增益>设定窗口检测上、下限>启动转换。操作SFR的顺序(以12位为例)为:REF0CH>ADC0CN>AMX0C>AMUX0SL>ADC0CF>ADC0GTH>ADC0GTL>ADC0LTH>ADC0LTL>ADC0CN或其它启动方式。


关键字:C8051F020  ADC 引用地址:C8051F020中的ADC应用要素

上一篇:用定时器做的流水灯
下一篇:51单片机完全不工作,该怎么入手去检查

推荐阅读最新更新时间:2024-11-06 16:32

在高速应用中如何利用输入噪声改善ADC性能
所有的模数转换器(ADC)都有一定量的输入参考噪声。大多数情况下,输入噪声越小越好;但在某些情况下,输入噪声实际上对提高分辨率是有帮助的。 在精密的低频测量应用中,使用较低的采样率和额外的硬件对ADC输出数据进行数字化平均,可以减小这种噪声的影响。虽然通过这种平均方式确实可以提高ADC的分辨率,但积分非线性(INL)误差却不会减少。而在某些高速应用中,增添一些带外噪声抖动,不仅可以改善ADC的微分非线性(DNL),而且还能增加它的无杂散动态范围(SFDR),即接收到的信号的均方根值(RMS)与采样区的频谱线均方根值之比。这种方法的效用如何,主要取决于所用ADC的特性。 对于一个“理想的”ADC而言,当模拟输入电压增加时,输出编码将
[测试测量]
关于STM32的ADC/DAC问题集锦
1、STM32的DAC转换是什么开始的呢? 问:STM32的DAC转换是什么开始的呢?如何利用DAC输出一个脉宽的控的单脉冲呢? 答:DAC是通过写入DAC输出寄存器开始的。另外,如果想要脉冲,使用TIM功能。 2、STM32的DAC输出电压 问:DAC的输出电压是如何调节的呢,输入的数字量和输出的电压怎么不成比例呢,输出电压不符合数据手册上提供的公式(DAC输出 = VREF X DOR / 4095),求高人指点,程序如下: #include stm32f10x_lib.h #define DAC_DHR8R1_Address 0x40007410 DAC_InitTypeDef DAC_InitStructure;
[单片机]
STM32F4 ADC采集数据的DMA数据传输
书接上文,开始折腾ADC的DMA传输。因为大家都在说DMA,就连ST的例子里边也是使用DMA的。 ADC采集到的数据都存储在一个固定的寄存器中。当常规采样方式采样多个通道时候,使用DMA可以较好地避免将采集到的数据丢失。当ADC的DMA功能被使能的时候,每个通道转换完毕时都会发出一个DMA请求。DMA方式也不能完全避免数据丢失问题,要实现数据不丢失需要在DMA的同时开启OVERRUN模式,当数据丢失时就停止数据转换。我们只需要检测是否有OVR时间发生,就能解决采样数据丢失造成的问题。比如,通道错位什么的。 在STM32F4的Reference manual中可以查到ADC1 的DMA映射在DMA1、CH0、Strea
[单片机]
ADC0832数字电压表数码管显示(示例程序)
;******************************************************************************** 描述: ADC0832数字电压表数码管显示 调节ADC0832旁边的电位器,数码管显示 ADC0832 转换值的大小 ;******************************************************************************* *************************************
[单片机]
STM32F407多通道ADC采样程序
注意STM32F407在进行AD采样时,如果引脚是浮空的,这个时候采集到的电压并不是0 1 ADC引脚的初始化 void Lsens_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //使能GPIOF时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GP
[单片机]
STM32F407多<font color='red'>通道</font><font color='red'>ADC</font>采样程序
STM32G0开发笔记:多通道ADCDMA的使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为多通道ADC与DMA的使用。 1 新建项目 建立adc_dma项目 在PIO的Home页面新建项目,项目名称adc_dma,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3; 项目建立完成后在src目录下新建main.c主程序文件; 修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下: 1upload_protocol = cmsis-dap 2debug_tool = cmsis-dap 2 编写程序 2.1 ADC 设置 这里设置PA0、P
[单片机]
STM32G0开发笔记:多<font color='red'>通道</font><font color='red'>ADC</font><font color='red'>与</font>DMA的使用
STM8L之ADC
STM8L之ADC /******************************************************************************* *名 称: Hal_Comm_GetBatADC *功 能: 获取电池电量信息 *入口参数: 无 *出口参数: 电量AD值 *说 明: *******************************************************************************/ unsigned int Hal_Comm_GetBatADC(void) { unsigned int Result = 0, value_a
[单片机]
STM8L之<font color='red'>ADC</font>
揭开Σ-Δ型模数转换器ADC)的神秘面纱
越来越多的应用,例如过程控制、称重等,都需要高分辨率、高集成度和低价格的ADC。新型Σ-Δ转换技术恰好可以满足这些要求。然而,很多设计者对于这种转换技术并不十分了解,因而更愿意选用传统的逐次比较ADC。Σ-Δ转换器中的模拟部分非常简单(类似于一个1bit ADC),而数字部分要复杂得多,按照功能可划分为数字滤波和抽取单元。由于更接近于一个数字器件,Σ-ΔADC的制造成本非常低廉。    一、Σ-ΔADC工作原理   要理解Σ-ΔADC的工作原理,首先应对以下概念有所了解:过采样、噪声成形、数字滤波和抽取。    1. 过采样   首先,考虑一个传统ADC的频域传输特性。输入一个正弦信号,然后以频率fs采样--按照 N
[模拟电子]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved