使用软件单次启动AD、内部基准为ADC参考电压、采用12位分辨率进行CC2530内部温度传感器测量, 应该如何初始化ADCCON1、ADCCON2和ADCCON3并启动转换?
时间: 2024-12-14 14:26:33 浏览: 31
在CC2530单片机上,使用12位分辨率的ADC对内部温度传感器进行测量,首先需要设置ADCCON1、ADCCON2和ADCCON3寄存器来配置ADC。以下是基本步骤:
1. **初始化ADCCON1**:
- 将ADCCON1的REFSEL位设为0,选择内部基准作为参考电压(Vref+)。
- 清除SMP位,禁用采样保持功能,以提高转换速度。
- 设置ADCON1.ADCS位为00,选择12位分辨率模式。
示例代码:
```c
ADCCON1 |= (0 << REFSEL) | (0 << SMP); // 内部基准,无采样保持
ADCCON1 &= ~(1 << ADCS); // 12位分辨率
```
2. **初始化ADCCON2**:
- 清零ADCCON2的所有位,因为我们通常只使用默认的连续转换模式和自动增益控制(AGC)。
示例代码:
```c
ADCCON2 &= 0; // 连续模式,AGC默认启用
```
3. **初始化ADCCON3**:
- 如果你的应用不需要外部中断或特定的转换时间,ADCCON3可以保持默认值。
示例代码(示例为开启中断,具体看需求):
```c
ADCCON3 |= (1 << ADIE) | (0 << ADCIF); // 开启中断,未触发中断标志
```
4. **启动转换**:
- 启动连续模式下的第一次转换,你可以直接写入0到ADCON1的GO标志位(ADCON1.GO)。
示例代码:
```c
ADCON1 |= 1 << GO;
```
完成上述设置后,ADC会开始转换温度传感器的输入信号。记得在中断服务函数中处理转换完成事件(当ADCON1.ADIF位置1时)并获取结果。
阅读全文