1 引言
在混合信号单片机中,美国Cygnal公司新推出的C8051F06X系列高集成度混合信号单片机可谓一枝独秀。C8051F06X是高度集成的片上系统单片机,它有多达59个数字I/O口,采用与8051兼容的内核CIP-51,速度高达25MI/s。该系列单片机有C8051F060/2型和C8051F061/3型,与同家族的其他单片机相比,其模拟外设性能优异,除有一个带可编程放大器和多路选择器的8路10位ADC外,还有两路采样速度可达1 MS/s的16位ADC,两路12位DAC,3个电压比较器,1个片内温度传感器和参考电压源等。本文仅以C8051F060型为例,着重介绍其高速、高精度模/数转换器的使用方法。
2 高精度模/数转换器
模/数转换接口由2路16位逐次逼近式ADC、集成采样保持器、一个可编程窗口检测器、一个DMA接口组成。ADC0/ADC1可配置成单端或差分输入方式。模/数转换的工作方式,窗口检测器和DMA接口均可通过特殊功能寄存器由软件控制,模/数转换器及其采样保持电路也可通过特殊功能寄存器单独设置,如图1所示。显然,转换启动方式灵活,软件事件、外部硬件信号和周期性的定时溢出都能用作触发信号,转换结束后,16位的结果锁存在SFR中,可由DMA接口将其存入片内或片外RAM。
2.1 单端/差分输入方式
ADCO和ADC1既可编程为单端输入方式独立工作,也可以设置为互相配合接收差分输入信号。采用单端输入方式时,ADC可配置为同步采样,或采用不同的转换速度。采用差分输入时,ADC1服从于ADC0,除零点和增益校准外,它的配置均基于ADC0。通道选择寄存器AMXOSL的DIFFSEL位用于选择单端和差分输入方式。差分输入时,输入到ADC的是一个伪差分信号,每个ADC的实际测量电压等于引脚AIN和引脚AINDG之间的电压。AINDG必须在-0.2V~0.6V之间,在大多数系统中,AINDG接到AGND,否则,AINDG信号会产生一个微小的负向偏置,建议用内部的校准功能解决。AINOG和AIN1G要可靠连接在一起,为了得到精确的转换结果,在两种方式下,AINn电位均应高于AINnG。
2.2 参考电压
ADC0和ADC1可以配置不同的参考电压电路,既可以使用片内精密参考电压源,也可以使用片外参考电压源。片内参考电压源电路由一个独立的温度稳定式带隙参考电压发生器产生1.25 V电压,再由一个缓冲放大器将其放大2倍,其最大负载电流不能大于100μA,建议在VREF端和VRGND端外接0.1μF和47 μF的旁路电容器。每个参考电压电路可由参考电压控制寄存器(REFnCN)分别控制,其中,BIASEn位控制参考电压发生器的使能,REFBEn位控制乘2缓冲器的使能。当禁止时,内部参考电压电路的耗电量为1μA,缓冲放大器呈高阻抗状态;当使用内部参考电压源时,这两个控制位均须置l;当使用外部参考电压源时,控制位REFBEn应置0。应该注意,不论使用何种参考电压源,当使用模/数转换器时,BIASEn位必须置1,不使用模/数转换器时,BIASEn位置0,以有利于降低能耗。
2.3 工作方式
ADC0和ADC1的最大转换速度为1 MS/s,转换时钟由系统时钟分频产生,并由ADCnCF型寄存器的ADCnSC位设定。
2.3.1 转换启动方式
对于ADC0,模/数转换的启动方法有4种,由ADC0CN型寄存器中的转换启动方式位AD0CMl/AD0CM0决定,这4种方式分别是给ADC0CN的AD0BUSY位写1;定时器2的溢出;定时器3的溢出;检测到外部ADC转换启动信号CNVSTR0的上跳沿。对于ADC1,模/数转换的启动方法有5种,由寄存器ADC1CN中的转换启动方式位AdlCM12-AD1CM0决定,这5种方式分别是给ADC1CN的AD1BUSY位写l;定时器2的溢出;定时器3的溢出;检测到外部ADC转换启动信号CNVSTR的上跳沿;给ADC0CN的AD0BUSY位写1。
在模/数转换过程中,ADnBUSY位被置1,转换结束后,该位被清零,如果允许中断,ADnBUSY信号的下降沿将触发中断,并置位ADnINT的中断标志位ADCnON.5。在单端方式,模/数转换的结果数据存放在ADCnH和ADCnL中;在差分方式,模/数转换的结果数据是ADC0与ADC1之和,存放在ADC0H和ADC0L中。当用给ADC0CN的AD0BUSY位写1的方法启动模/数转换时,应该查询ADnINT位,以便确定模/数转换何时完成,建议查询步骤为给ADnINT写0;给ADnBUSY写1;查询ADnINT位是否为l;处理ADC数据,当在差分方式且以外部信号启动模/数转换时,应将引脚CNVSTR0和引脚CNVSTR1连接起来。
2.3.2 采样保持方式
模/数转换的采样保持方式由ADCnCN型寄存器的ADCnTM位控制,一旦ADCn被启动,其输入将被连续采样,而这时转换尚未开始,当AdnTM位为1,转换开始进行,一个采样周期由18个SAR时钟组成。当用CNVSTRn信号启动转换时,ADC一直采样,直到引脚CNVSTRn上出现一个上跳沿为止。将AdnTM位置为1,就能保证在模拟输入端接外部多路选择器时,满足必要的建立时间。
2.3.3 建立时间
如果ADC的输入为高速快变信号,如外部多路选择器的切换或其他跳变信号,则在进行转换之前需要一个最小跟随时间,这个时间取决于ADC的输入电阻,采样电容,外部等效电阻及所期望的转换精度,等效时间常数对单端输入和差分输入都是一样的,给定精度所需要的建立时间可由下式来估算:
其中A为所需精度,取LSB的小数部分;t为所需的建立时间(秒);n为ADC的位数(16);RT为ADC的输入电阻和外部等效电阻的总和;Cs为采样电容。
2.4 校准
模/数转换器在生产厂已经通过非线性、零点偏移和增益误差校准,但也能在系统中单独对ADC0和ADC1的这些参数分别进行校准。校准是通过ADC0型和ADC1型配置寄存器的相应位来进行的,校准参数可用ADC校准指示寄存器(ADC0CPT)和ADC校准参数寄存器(ADC0CCF)读写,ADC0CFF的CPTR位用于ADC0CCF读写特定的校准参数。一般情况下,不必再进行非线性校正,若要进行这种校正,将ADCnLCAL位置1即可启动,校正完成后,由硬件对ADCnLCAL位置0 ,校正参数存放在修正单元中。进行零点和增益校准时,可以使用内部或外部的电压源作为校准源,由ADCnSCAL位来设定。为了保证精度,建议先进行零点校准,后进行增益校准,零点校准可由ADCnOCAL位的置1采启动,校准完成后,由硬件对ADCnOCAL位置0,零点校准可以补偿的偏移误差为满量程的±3.125%,偏移值在ADC的数字化之前加到AINnG输入中;增益校准可通过将ADCnGCAL位的置l来启动,校准完成后,由硬件对ADCnGCAL位置0,增益校准可以补偿的非线性误差约为±3.125%,增益值加到ADC的VREF通路中,用以改变转换器传递函数的斜率。
2.5 可编程窗口检测器
ADC0有一个可编程窗口检测器,它能连续地将ADC0的输出与用户设定的限位值进行比较,并监测系统的超值条件是否满足。这一点在中断触发系统中特别有用,既可以节约代码空间和CPU的占用带宽,又能提供快速的响应时间。窗口检测器的中断标志也可用于查询方式,该标志即特殊功能寄存器(ADC0CN)中的AD0INT位。参考字的高低字节被分别装入ADC下限(大于)和上限(小于)寄存器(ADC0GTH/ADC0GTL和ADC0LTH/ADC0LTL)中。单端和差分方式都可以使用窗口检测器,在单端方式中,窗口检测器对寄存器(ADC0GTx/ADC0LTx)与ADC0的输出进行比较,而差分方式是将ADC0和ADC1的组合输出用于比较。应该注意,窗口检测器标志可以在监测到数据落在设定的限位值之内或之外时置位或复位,这取决于对寄存器(ADC0GTx和ADC0LTx)的编程。
3 应用举例
图2所示是一个微型弹簧自动测试分选系统的原理框图,单片机(C8051F060)是该系统的控制中心,通过12位DAC的输出产生一个直流电压,送到加力器,加力器将使弹簧产生变形位移,由位移传感器测出位移量,传感器的输出电压送到Ain输入端,经过16位A/D转换得到位移量,根据物理学胡克定理公式:F=-kS,单片机即可计算出弹簧的弹性系数k值。图中,LED阵列用于不同k值的指示,由于C8051F060型单片机有多达59个数字I/O口,所以,液晶显示LCD接口。LED指示矩阵接口及键盘扫描接口等,均不需要太多的外扩电路,简化了系统,提高了可靠性。
4 结束语
近年来,随着大规模集成电路制造技术的不断发展,混合信号单片机的模拟接口性能进一步提高,特别是ADC的功能更加完善,精度从10位、12位、直到16位甚至24位,但综合考虑采样速度等因素,C8051F06X系列单片机以16位精度和1 MS/s的采样速度,以及其他灵活多样的可配置功能,成为目前屈指可数的片上系统混合信号单片机。可以预见,该系列单片机必将在数据采集及智能化仪器仪表等方面得到广泛的应用。