1、CC2530和STM32嵌入式接口技术开发3.4 CC2530 ADC模数转换应用开发EducationSolutions目录ContentsInternet+ADC模数转换简介CC2530与ADC模数转换项目场景说明项目实践17:28/3ADC模数转换概念ADC是Analog-to-Digital Converter的缩写,指模/数转换器或者模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。3Bit电压转换原理(右图)17:28/4ADC信号采样率模拟信号在时域上是连续的,因此可以将它转换为时间上连续的一系列数字信号。这样就要求定义一个参数来表示新的数字信号采样自模拟信号速率。
2、这个速率称为转换器的采样率(sampling rate)或采样频率(sampling frequency)。17:28/5ADC分辨率ADC的分辨率是指使输出数字量变化一个最小量时模拟信号的变化量。常用二进制的位数表示;例如8位的AD,可以描述255个刻度的精度(2的8次方),在它测量一个5V左右的电压时,它的分辨率是5V除以255,大约改变一个的刻度其改变的最小单位必须是0.02V。17:28/6ADC量化误差概念ADC把模拟量转化为数字量,用数字量近似值标志模拟量,这个过程称之为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上要准确表示模拟量,ADC的位数需要很大甚至无
3、穷大。一个分辨率有限的ADC的阶梯转换特性曲线与具有无限分辨率的ADC转化特性曲线(直线)之间的最大偏差既是量化误差。17:28/7CC2530的ADC模数转换CC2530的ADC支持多达14位的模拟数字转换,具有多达12位的 ENOB(有效数字位)。它包括一个模拟多路转换器,具有多达8个各自可配置的通道;以及一个参考电压发生器。转换结果通过DMA写入存储器。还具有若干运行模式。CC2530的ADC模数转换功能框图:17:28/8ADC模块特征可选取的抽取率,设置分辨率(712位)。8个独立的输入通道,可接收单端或差分信号。参考电压可选为内部单端、外部单端、外部差分或AVDD5。单通道转换结束
4、可产生中断请求。序列转换结束可发出DMA触发。可将片内温度传感器作为输入。电池电压测量功能。17:28/9ADC模块的信号输入 端口0引脚可以配置为ADC输入端,依次为AIN0AIN7:n可以把输入配置为单端输入或差分输入。n差分输入对:AIN0AIN1、AIN2AIN3、AIN4AIN5、AIN6AIN7。n片上温度传感器的输出也可以作为ADC的输入用于测量芯片的温度。n可以将一个对应AVDD5/3的电压作为ADC输入,实现电池电压监测。n负电压和大于VDD的电压都不能用于这些引脚。n单端电压输入AIN0AIN7,以通道号码07表示;四个差分输入对则以 通道号码811表示;温度传感器的通道号
5、码为14;AVDD5/3电压输入的通道号码为15。17:28/10序列ADC转换:可以按序列进行多通道的ADC转换,并把结果通过DMA传送到存储器,而不需要CPU任何参与。单通道ADC转换:在程序设计中,通过写ADCCON3寄存器触发单通道ADC转换,一旦寄存器被写入,转换立即开始。参考电压:内部生成的电压、AVDD5引脚、适用于AIN7输入引脚的外部电压,或者 适用于AIN6AIN7输入引脚的差分电压。转换结果:数字转换结果以2的补码形式表示。对于单端,结果总是正的。对于差分配置,两个引脚之间的差分被转换,可以是负数。当ADCCON1.EOC设置为1时,数字转换结果可以获得,且结果总是驻留在
6、ADCH和ADCL寄存器组合的MSB段中。中断请求:通过写ADCCON3触发一个单通道转换完成时,将产生一个中断,而完成 一个序列转换时,是不产生中断的。当每完成一个序列转换,ADC将产生 一个DMA触发。ADC相关的几个概念17:28/11CC2530的ADC寄存器介绍CC2530中与ADC相关的寄存器有6个,这6个寄存器分别是:ADCH(ADC转换结果高位存放寄存器)ADCL(ADC转换结果低位存放寄存器)ADCCON1(ADC通用控制寄存器1)ADCCON2(ADC通用控制寄存器2)ADCCON3(ADC通用控制寄存器3)APCFG(ADC通道配置寄存器)17:28/12项目场景电子秤在
7、我们生活中应用十分的广泛,无论是我们我们称体重,还是在购买商品的时候都会用到。电子秤的工作流程:当物体放在秤盘上时,压力施给传感器,该传感器发生形变,从而使阻抗发生变化,同时使用激励电压发生变化,输出一个变化的模拟信号。该信号经放大电路放大输出到模数转换器(ADC)。转换成便于处理的数字信号输入到单片机。单片机根据键盘命令以及程序将这种结果输出到显示器,显示这种结果。17:28/13任务目标使用CC2530微处理器模拟电子秤采集转换的电压,通过编辑程序使用CC2530微处理器的ADC外设实现对CC2530微处理器底板的电源电压检测,通过使用IAR for 8051开发环境的调试窗口查看ADC的
8、电压转换值,并将电压采集值转换为电压物理量。17:28/14项目分析项目中CC2530单片机采集的电压为电池电压,由于电池标准电压为12V远高于CC2530单片机的3.3V工作电压,因此电池电压需要通过相应的硬件电路进行处理,将电池电压等比例缩小到CC2530单片机可接受的工作电压。电池电压分压电路如图:17:28/15程序流程图程序设计思路是首先初始化系统时钟。初始化完成后进入主循环,主循环中先进行ADC的配置,配置完成后启动ADC转化,等待ADC转化结束后,将取得的最终转化结果存入value中。17:28/16项目实现CC2530单片机的ADC模数转换配置程序如下:int adc_test
9、(void)unsigned int value;APCFG|=0 x10;/模拟 I/O 使能 P0SEL|=0 x10;/端口0_4 功能选择外设功能P0DIR&=0 x10;/设置输入模式ADCCON3 =0 xB4;/选择AVDD5为参考电压;12分辨率;P0_4 ADC ADCCON1|=0 x30;/选择ADC的启动模式为手动ADCCON1|=0 x40;/启动AD转化 while(!(ADCCON1&0 x80);/等待ADC转化结束 value=ADCL 2;value|=(ADCH 2;/取得最终转化结果,存入value中 return(value);17:28/17项目思考什么是ADC量化误差?CC2530微处理器的ADC配置寄存器?CC2530微处理器的ADC转换精度是如何计算?如何使用CC2530微处理器驱动ADC?