概述
ADC支持多达14位模数转换,有效位数(ENOB)多达12位。ADC包括一个具有多达8个独立配置通道的模拟多路转换器和参考电压发生器,并且通过DMA将转换结果写入存储器。具有多种运行模式。ADC主要特征如下:
可选的采样率,可设置分辨率(7~12位)。
8个独立的输入通道,单端或者差分。
参考电压可选为内部、外部单端、外部差分或AVDD5。
中断请求产生。
转换结束时DMA触发。
温度传感器输入。
电池测量能力。
ADC输入
当使用ADC时,端口0引脚必须配置为ADC输入。ADC输入最多可以使用8个,这些端口引脚将被称为AIN0~AIN7引脚。输入引脚AIN0~AIN7连接至ADC。为了配置端口0的引脚为ADC输入,寄存器APCCFG的对应位必须设置为1.该寄存器的默认值为选择端口0的引脚为非ADC输入,即数字输入/输出。
可以把输入配置为单端或者差分输入。在选择差分输入的情况下,差分输入包括输入对AIN0~1、AIN2~3、AIN4~5和AIN6~7。注意:这些引脚不能使用负电源,或者大于VDD(未校准电源)的电源。
除了输入引脚AIN0~AIN7,片上温度传感器的输出也可以选择作为用于温度测量的ADC输入。为了实现作为温度测量的ADC输入,寄存器TR0.ADCTM和ATEST.ATESTCTRL必须分别进行设置。
还可以选择一个对应AVDD5/3的电压作为ADC输入。这个输入允许实现例如要求电池检测功能的应用。注意,这种情况下的参考电压不能由电池电压决定,例如,AVDD5电压不能作为参考电压。
单端输入AIN0~AIN7以通道号码0~7表示。通道8~11表示由AIN0~1、AIN2~3、AIN4~5和AIN6~7组成的差分输入。通道号码12~15分别表示GND(12)、温度传感器(14)和AVDD5/3(15)。这些值在ADCCON2.SCH和ADCCON3.SCH域中使用。
ADC可以配置为使用通用I/O引脚P2.0作为一个外部触发来开始转换。当P2.0用于ADC外部触发时,它必须配置为输入模式下的通用I/O。
ADC运行模式
ADC具有三个控制寄存器,即ADCCON1、ADCCON2和ADCCON3。这些寄存器用于配置ADC和报告状态。
(1)ADCCON1控制寄存器
位 | 名称 | 复位 | 读/写 | 描述 |
7 | EOC | 0 | R/H0 | 转换结束,当ADCH被读取时清除。如果在前一个数据被读取之前,已经完成了一个新的转换,该位保持为高 0:转换未完成 1:转换完成 |
6 | ST | 0 | 开始转换。在转换完成之前都读为1 0:没有进行中的转换 1:如果ADCCON1.STSEL = 11且没有序列正在进行转换,就启动一个转换序列 | |
5:4 | STSEL[1:0] | 11 | R/W1 | 启动选择。选择哪个事件将启动一个新的转换序列 00:P2.0引脚上的外部触发; 01:全速。不等待触发 10:定时器1通道0比较事件 11:ADCCON1.ST = 1 |
3:2 | RCTRL[1:0] | 00 | R/W | 控制16位随机数发生器。如果写为01,当操作完成后该设置将自动返回0x00 00:正常运行 01:同步LFSR一次 10:保留 11:停止,随机数发生器关闭 |
1:0 | 11 | R/W | 未使用。总是置为11 |
ADCCON1.ST位用于启动一个转换蓄力。当该位置1,ADCCON1.STSEL位为11,且当前没有正在进行的转换时,将启动一个序列。当这个序列转换完成,该位自动清除。
ADCCON1.STSEL位选择哪个事件将启动一个新的转换序列。可以被选择的事件选项有:外部引脚P2.0上的上升沿,前一个序列的结束,定时器1通道0比较事件或ADCCON1.ST置1.
(2)ADCCON2控制寄存器
位 | 名称 | 复位 | 读写 | 描述 |
7:6 | SREF[1:0] | 00 | R/W | 选择用于转换序列的基准电压 00:内部基准 01:AIN7引脚上的外部基准 10:AVDD5引脚 11:AIN6~AIN7差分输入上的外部基准 |
5:4 | SDIV[1:0] | 01 | R/W | 为包含在转换序列里的通道选择抽取率,抽取率也决定了分辨率和完成一个转换所需的时间 00:64抽取率(7位分辨率) 01:128抽取率(9位分辨率) 10:: 256抽取率(10位分辨率) 11:512抽取率(12位分别率) |
3:0 | SCH[3:0] | 0000 | R/W | 序列通道选择 0000:AIN0;0001:AIN1;0010:AIN2;0011:AIN3; 0100:AIN4;0101:AIN5;0110:AIN6;0111:AIN7 1000:AIN0-AIN1;1001:AIN2-AIN3;1010:AIN4-AIN5 1011:AIN6-AIN7;1100:GND;1101:保留; 1110:温度传感器;1111:VDD/3 |
ADCCON2.SREF用于选择基准电压,只有在没有选择进行的时候才能改变基准电压
ADCCON2.SDIV位选择抽取率,因此也设置了分辨率、完成一个转换所需的时间和采样率。只有在没有转换的时候才能设置抽取率
(3)ADCCON3控制寄存器
位 | 名称 | 复位 | 读写 | 描述 |
7:6 | EREF[1:0] | 00 | R/W | 选择用于单个转换的基准电压 00:内部基准 01:AIN7引脚上的外部基准 10:AVDD5引脚 11:AIN6~AIN7差分输入上的外部基准 |
5:4 | EDIV[1:0] | 01 | R/W | 为单个转换选择抽取率,抽取率也决定了分辨率和完成一个转换所需的时间 00:64抽取率(7位分辨率) 01:128抽取率(9位分辨率) 10:: 256抽取率(10位分辨率) 11:512抽取率(12位分别率) |
3:0 | ECH[3:0] | 0000 | R/W | 单个通道选择 0000:AIN0;0001:AIN1;0010:AIN2;0011:AIN3; 0100:AIN4;0101:AIN5;0110:AIN6;0111:AIN7 1000:AIN0-AIN1;1001:AIN2-AIN3;1010:AIN4-AIN5 1011:AIN6-AIN7;1100:GND;1101:保留; 1110:温度传感器;1111:VDD/3 |
ADCCON3寄存器控制单个转换的通道号码、基准电压和抽取率。在ADCCON3寄存器更新后,立即进行单个转换;或者如果有一个转换序列正在进行,那个在这个转换序列完成后立即进行单个转换。
SET_MAIN_CLOCK_SOURCE(CRYSTAL); //设置系统时钟源为32MHz晶体振荡器
/* AIN0通道采样 */
ADC_ENABLE_CHANNEL(ADC_AIN0);
/*配置ADCCON3寄存器以便在ADCCON1.STSEL = 11(复位默认值)且ADCCON1.ST = 1时进行单一转换*/
/*参考电压:AVDD_SOC引脚上的电压*/
/*抽取率:512*/
/*ADC输入通道:AIN0*/
ADC_SINGLE_CONVERSION(ADC_REF_AVDD | ADC_14_BIT | ADC_AIN0);
ADC_SAMPLE_SINGLE(); //启动一个单一转换
while(!ADC_SAMPLE_READY()); //等待转换完成
ADC_ENABLE_CHANNEL(ADC_AIN0); //禁止AIN0
adc0_value[0] = ADCL;
adc0_value[1] = ADCH;
adc0_value[0] = adc0_value[0] >> 2;
最后
以上就是善良糖豆为你收集整理的ZigBee_CC2530_03H_ADC寄存器ADC输入ADC运行模式的全部内容,希望文章能够帮你解决ZigBee_CC2530_03H_ADC寄存器ADC输入ADC运行模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复