杭州晶华微:带32位MCU和高精度ADC的SoC产品 ----SD93F系列开发指南(九)
1.SAR ADC结构框图
我们首先来看一下SAR ADC的功能框图如下图1,SAR MUX 为一个多路选通器,多个信号都可以选择进入 SAR ADC 进行测试。SAR Buf 为一个 rail to rail 输入/输出 buffer,输入范围接近于0~AVDDR,为保证BUFF性能,输入范围0.1V~AVDDR-0.1V。
使用 SAR Buf 可以提高芯片的输入阻抗,但要求输入信号的带宽小于 10kHz(当 SAR Buf 为高速模式时)。
图1.SD ADC功能框图
2.SD ADC配置
SAR ADC软件的配置如下图2:
图2.SAR ADC配置
首先要使能SAR ADC时钟源,然后调用库函数对SAR ADC进行初始化,我们打开SAR ADC BUF,选择高速模式,输入通道选择为A3,continue模式,工作在大电流模式,采样周期选择64个SAR ADC时钟,采样时钟选择3MHz,而后使能SAR ADC,SAR ADC的基准电压固定为AVDDR。
初始化配置完成后,需要进行校准,这里我们选择校准周期为16个SAR ADC时钟,校准16次,而后使能校准,等待自动校准结束,清除校准结束标志位,校准完成后再开启SAR ADC转换使能。
详细校准流程可参考应用手册28.4.2 SAR ADC校准章节,如图3:
图3.SAR ADC校准
然后我们编写SAR ADC测试程序,如下图4:
图4.SAR ADC测试程序
整个测试流程与SD ADC一致,等待SAR ADC转换完成标志位置1,再将标志位清0,然后获取ADC转换结果并将ADC码值缓存,最后通过串口将数据以16进制发送出去,同时通过LCD驱动将ADC码值显示在液晶屏上。
在软件配置中,我们选择了A3作为输入通道,参考电压为AVDDR=2.4V,并且SAR ADC是没有放大倍数的,所以我们用两个电阻分压得到一个AVDDR/2的电压约1.2V,连接到A3作为SAR ADC的输入信号,测试结果如下图5:
图5.SAR ADC转换结果显示
我们按照公式:Vin= DEC*AVDDR/2^12,图上显示07ff为16进制,需要转换为十进制2047,所得结果Vin=2047*2.4/4096=1.199V,计算结果正确,也可以更换其他大小的信号按照上述计算过程验证准确性。
3.开发问题简析
要理解CALEN、SAREN和SAR_ADC_EN三个使能位的功能,必须先使能SAR_ADC_EN,再使能CALEN/SAREN。
当 SAR_ADC_EN=1 且 CALEN/SAREN=0 时,不要同时进行 SAR_ADC_EN 的清零和 CALEN /SAREN的置 1 动作。否则 SAR_ADC_EN 的清零是成功的,CALEN/SAREN 的置 1 是失败的。
若是在使用中途改变了SAR ADC配置,需重新校准。
采样速率的计算需要将采样周期数和转换周期数相加作为一个完整周期,转换周期数固定为12。
4.总结
本章简单介绍了SAR ADC模块功能的使用,应用上可灵活选择输入通道,监测不同信号。