CC2530 ADC 配置步骤
第一章 A/D 转换的基本工作原理
将时间上连续变化的模拟量转化为脉冲有无的数字量,这一过程就叫做数字化,实现数字化的关键设备是 ADC。
ADC:数模转换器,将时间和幅值连续的模拟量转化为时间和幅值离散的数字量,A/D 转换一般要经过采样、保持、量化和编码 4 个过程。
第二章 CC2530 的 A/D 转换模块
CC2530 的 ADC 模块支持最高 14 位二进制的模拟数字转换,具有 12 位的有效数据位,它包括一个模拟多路转换器,具有 8 个各自可配置的通道,以及一个参考电压发生器。
该 ADC 模块有如下主要特征:
<1> 可选取的抽取率,设置分辨率(7~12 位)。
<2> 8 个独立的输入通道,可接收单端或差分信号。
<3> 参考电压可选为内部单端、外部单端、外部差分或 AVDD5。
<4> 单通道转换结束可产生中断请求。
<5> 序列转换结束可发出 DMA 触发。
<6> 可将片内温度传感器作为输入。
<7> 电池电压测量功能。
第三章 ADC 模块的信号输入
端口 0 引脚可以配置为 ADC 输入端,依次为 AIN0~AIN7:
<1> 可以把输入配置为单端输入或差分输入。
<2> 差分输入对:AIN0~AIN1、AIN2~AIN3、AIN4~AIN5、AIN6~AIN7。
<3> 片上温度传感器的输出也可以作为 ADC 的输入用于测量芯片的温度。
<4> 可以将一个对应 AVDD5/3 的电压作为 ADC 输入,实现电池电压监测。
<5> 负电压和大于 VDD 的电压都不能用于这些引脚。
<6> 单端电压输入 AIN0~AIN7,以通道号码 0~7 表示;四个差分输入对则以 通道号码 8~11 表示;温度传感器的通道号码为 14;AVDD5/3 电压输入的通道号码为 15。
第四章 ADC 相关的几个概念
<1> 序列 ADC 转换:可以按序列进行多通道的 ADC 转换,并把结果通过 DMA 传送到存储器,而不需要 CPU 任何参与。
<2> 单通道 ADC 转换:在程序设计中,通过写 ADCCON3 寄存器触发单通道 ADC 转换,一旦寄存器被写入,转换立即开始。
<3> 参考电压:内部生成的电压、AVDD5 引脚、适用于 AIN7 输入引脚的外部电压,或者 适用于 AIN6~AIN7 输入引脚的差分电压。
<4> 转换结果:数字转换结果以 2 的补码形式表示。对于单端,结果总是正的。对于差分配置,两个引脚之间的差分被转换,可以是负数。 当 ADCCON1.EOC 设置为 1 时,数字转换结果可以获得,且结果总是驻留在 ADCH 和 ADCL 寄存器组合的 MSB 段中。
<5> 中断请求:通过写 ADCCON3 触发一个单通道转换完成时,将产生一个中断,而完成 一个序列转换时,是不产生中断的。当每完成一个序列转换,ADC 将产生 一个 DMA 触发。
<6> 寄存器:ADC 有两个数据寄存器:ADCL 和 ADCH;三个控制寄存器:ADCCON1、ADCCON2、ADCCON3;分别用来配置 ADC 并返回转换结果。
第五章 ADC 配置步骤
【1】配置 APCFG 寄存器
当使用 ADC 时,端口 0 的引脚必须配置为 ADC 模拟输入。要配置一个端口 0 引脚为一个 ADC 输入,APCFG 寄存器中相应的位必须设置为 1。这个寄存器的默认值是 0,选择端口 0 为非模拟输入,即作为数字 I/O 端口。
注意:寄存器的设置将覆盖 P0SEL 的设置。
【2】配置 ADCCON3 寄存器
单通道的 ADC 转换,只需将控制字写入 ADCCON3 寄存器即可。
【3】ADC 初始化
主要对端口的功能进行选择,设置其传输方向,并将端口设置为模拟输入。
【4】ADC 数据采集
首先将 ADCIF 标志位清 0,接着对 ADCCON3 寄存器设置,该寄存器一旦被写入,转换立即开启;然后等待 ADCIF 置 1,这时候转换完成,读取数据即可。
【5】源代码
版权声明: 本文为 InfoQ 作者【DS小龙哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/98493a56eb0b2a759e2c84393】。文章转载请联系作者。
评论