历史上的今天
返回首页

历史上的今天

今天是:2025年03月22日(星期六)

2021年03月22日 | C8051F020中的ADC应用要素

2021-03-22 来源:eefocus

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或其它启动方式。


推荐阅读

史海拾趣

Everspin Technologies公司的发展小趣事

Everspin的MRAM和STT-MRAM产品因其独特的数据持久性和非易失性特性,在数据中心和云存储市场中得到了广泛应用。超过1.2亿个MRAM和STT-MRAM产品被部署在这些市场中,为数据中心和云存储提供了高性能、高效率、可靠的系统解决方案。Everspin的产品在这些领域中的成功应用,进一步巩固了其在电子行业中的地位。

Brilliance公司的发展小趣事

为了进一步提升竞争力,Brilliance公司开始着手进行产业链整合。公司与上下游企业建立了紧密的合作关系,共同打造了一条完整的电子产业链。通过协同发展和资源共享,Brilliance不仅降低了生产成本,还提高了产品质量和生产效率。这种产业链整合的模式也为公司未来的发展奠定了坚实的基础。

C-MEDIA公司的发展小趣事

在音频处理和网络游戏领域取得成功后,C-MEDIA公司并未止步。它持续投入研发资源,不断推动技术创新和产品升级。公司的研发团队致力于开发更高效、更稳定的音频处理芯片,以满足市场对于高品质音频体验的需求。同时,在网络游戏领域,C-MEDIA也不断推出新的游戏内容和服务,以吸引和留住用户。

EDI [Electronic devices inc.]公司的发展小趣事

在1950年代,Eclipse Magnetics公司决定将他们的磁铁涂上红色,并与马蹄形标志和公司颜色相匹配。这个简单的改变在当时看似微不足道,但却成为了一个重要的转折点。红色磁铁不仅提升了产品的视觉吸引力,还增强了品牌识别度。随着红色磁铁的广泛应用,Eclipse Magnetics开始逐渐在电子行业中崭露头角。

DEWALT公司的发展小趣事

DEWALT公司非常注重产品品质和用户体验。公司建立了严格的质量控制体系,确保每一件产品都符合高质量标准。同时,DEWALT还积极倾听用户反馈,不断改进产品和服务。这些努力使DEWALT公司的电动工具在市场上获得了广泛认可,并赢得了大量忠实用户。

Galil Motion Control Inc公司的发展小趣事

在第二次世界大战期间,DEWALT公司面临了巨大的挑战。由于战争的影响,许多原材料和零部件供应中断,生产受到严重影响。然而,DEWALT公司凭借自身的技术实力和创新能力,成功克服了这些困难。公司还积极为军队提供所需的电动工具产品,为战争胜利做出了贡献。这些经历使DEWALT公司更加坚定了技术创新和品质控制的信念。

问答坊 | AI 解惑

三端稳压器发烫问题

最近搞了个电路,12V供电经LM1117-3。3稳压出3.3V后再供DSP芯片,因为正常全工作电流有90MA,所稳压器很烫 在稳压管前加了个80欧的相当功率的电阻,让稳压器输入电压控制在5V左右,发烫问题得以解决, 但是电阻上的压降和稳压器的输出电流有关,所以 ...…

查看全部问答>

高分求解vxworks下显示重定向问题!!!急啊!!!!!

我把显示输出在指定的文件中以记录运行信息,利用了ioTaskStdSet这个函数,但是文件必须关闭,才能查看。这样如果中途出现死机现象,则记录文件由于没有关闭则不能保存。 请问各位高手怎么解决啊,我主要想实现的功能是类似unix中的X文件的记录功 ...…

查看全部问答>

vxWorks下如何获取标准输入键盘的ctrl键输入

vxWorks下如何获取标准输入键盘的ctrl键输入…

查看全部问答>

是什么原因导致不能调用回调函数

最近在2440上写了motorola L6我手机的USB驱动. 现在驱动能够被加载. 也能读取数据和设备描述符等. 但是有一个问题就是每次拔出我的设备时候. CE系统不调用我的回调函数. 以下是我注测回调函数的过程. 这种现象导致我手机拔出了. 但系统并没有释放US ...…

查看全部问答>

请教CCS的问题。

CCS SETUP里选simulator,把EEWORLDSDRAM的例程整个文件夹拷到myproject下,然后open这个例程的project,rebuild all,load .out,go main都没问题,可是run就不行了。是不是必须接开发板才行啊?如果是这样的,哪个例程不用接开发板就可以跑啊? [ ...…

查看全部问答>

自制XILINX下载线

想自己做xilinx下载线,那里有外壳买啊?淘宝上那些卖下载线的外壳那里买的哦。…

查看全部问答>

FPGA中系统运行频率计算方法

我们的设计需要多大容量的芯片?我们的设计能跑多快?这是经常困扰工程师的两个问题。对于前一个问题,我们可能还能先以一个比较大的芯片实现原型,待原型完成再选用大小合适的芯片实现。对于后者,我们需要一个比较精确的预估,我们的设计能跑50 ...…

查看全部问答>

STM32和DSP通信

用的是STM32F207 串口要怎么设置 我发的是0x55 循环发送 DSP收到的是乱码(0x6633循环)是起始位和停止位的配置问题?void USART_Configuration(void)               {   USART_In ...…

查看全部问答>

C51单片机模块化的代码和驱动

本帖最后由 paulhyde 于 2014-9-15 03:42 编辑 包括DS18B20,DS1302;红外,串行通信,12864;1602;PWM;EEPROM24c02...等等150多个程序代码 超多模块    …

查看全部问答>