1、使用配置流程
- 初始化
打开ADC电源
清除CHS,通道选择位
选择ADC通道
设置GPIO位高阻输入
设置ADC时钟频率(ADCCFG寄存器)
设置ADC 转换结果格式控制位(置1右对齐) - 启动转换
选择通道
启动转换
等待转换完成(ADC_CONTR寄存器)
清标志位
存储RES RESL结果寄存器
处理数据
2、相关寄存器
- ADC 控制寄存器
- ADC 配置寄存器
- ADC 转换结果寄存器
3、代码
初始化
void adc_init()
{
ADC_CONTR |= 1<<7; //打开 ADC 电源
ADC_CONTR &= (0xF0); //清除ADC_CHS[3:0] : ADC 模拟通道选择位
ADC_CONTR |= 0x01; //P1^1口
//IO口设置为高阻输入
P1M0 &= ~0x02;
P1M1 |= 0x02;
ADCCFG |= 0x60&0x0F; //ADC时钟频率
ADCCFG |= 1<<5; //转换结果右对齐。 ADC_RES 保存结果的高 2 位, ADC_RESL 保存结果的低 8 位。
}
启动转换
uint16 adc_once()
{
uint16 adc_value;
ADC_RES=ADC_RESL=0; //清数据
ADC_CONTR |= 0x40; // 启动 AD 转换
while (!(ADC_CONTR & 0x20)); // 查询 ADC 完成标志
ADC_CONTR &= ~0x20; // 清完成标志
adc_value = ADC_RES; //存储 ADC 的 12 位结果的高 4 位
adc_value <<= 8;
adc_value |= ADC_RESL; //存储 ADC 的 12 位结果的低 4 位
return adc_value;
}