ADC :模数转换
10 位 CMOS ADC (模 / 数转换器)是一个 8 通道模拟输入的再循环类型设备。其转换模拟输入信号为 10 位二进制数字编码,最大转换率为 2.5MHz A/D 转换器时钟下的 500 KSPS 。
模拟:连续信号
数字:离散信号
![](https://i-blog.csdnimg.cn/direct/4e776eda9c1d48cbbcd6b7ccbbe5dd69.png)
原理
当采样到信号后, 与各个比较器相比较
假设采样到2.5
2.5>0 比较器1输出0
2.5>1 比较器2输出0
2.5>2 比较器3输出0
2.5<3 比较器4输出1
四位数字可以用2位二进制代码存储
比3小自然比后面4,5...都小
所以置位第四个比较器为11
而开发板共10位二进制数编码,精度为0~3.3V(开发板最高供电3.3V),量程为1024(0~1023)
最高频率为2.5MHz
PCLK为50M,设置预分频值为49(49+1=50)分频后转换器频率50/50=1MHz
ADC控制寄存器(ADCCON)
ADC控制器初始化
void adc_init(void)
{
ADCCON = (1<<14) |(49<<6)|(1<<1);//因为是直接赋值,所以为0的地方直接就是0
}
设置预分频值49
通道选择0
正常工作模式
使能读启动操作
这里设置为使能读启动(要先读一次启动读操作) ,读取一次后自动读取下一次
若是手动启动A/D转换
ADC转换数据寄存器(ADCDAT0)
读取adc信号
unsigned short adc_read(void)
{
unsigned short data = ADCDAT0;//读取一次ADCDAT数据才能启动转换
while(!(ADCCON & (1<<15))); //正在转换时(ADCCON第15位为0)等候
data = ADCDAT0 & 0x3ff; //转换完读取数据
return data;
}