杭州晶华微:带32位MCU和高精度ADC的SoC产品 ----SD93F系列开发指南(八)

来源:晶华微 #晶华微# #SD ADC#
9176

1.SD ADC结构框图

在讲解SD ADC之前,我们首先来看一下SD ADC的功能框图如下图1,从图中可以看到整个SD ADC模块包括两个多路选择器IAMUX,用来选择进入 PGIA 的信号 IAINP/IAINN,一个PGIA模块用来进行信号放大,而后PGIA的输出经过简单的RC滤波后,可选择经过BUF1/2输入到SD ADC,根据设置的VREF电压进行AD转换,最后输出24位ADC_D[23:0]。

图1.SD ADC功能框图

2.SD ADC配置

了解SD ADC框架后我们编写简单的测试程序,使用SD ADC模块进行信号的测量计算。

软件的配置如下图2:

图2.SD ADC配置

(1)SD ADC初始化:

第一步先使能SD ADC时钟,然后调用库函数进行初始化配置,滤波器我们一般选择SINC3,采样频率250kHz,过采样率16384,基准电压选择AVDDR-VSS,使能BUF1/2(BUFFER频率默认fb=fs/8)。

(2)PGIA初始化:

内部和外部chopper选择分别为FS/128和FS/256,增益选择256倍,大电流模式,正负输入端分别选择A1和A0。

配置好之后,使能PGIA和SD ADC,等待SD ADC转换完成。

然后我们编写SD ADC测试程序,如下图3:

图3.SD ADC测试程序

由于在ADC转换完成之前读到的数据都是上一笔ADC数据,所以我们需等待SD ADC转换完成标志位置1,再将标志位清0,然后获取ADC转换结果并将ADC码值缓存,最后通过串口将数据以16进制发送出去,同时通过LCD驱动将ADC码值显示在液晶屏上。

在软件配置中,我们选择了A0-A1作为PGIA的输入通道,放大倍数为256倍,基准电压AVDDR=2.4V,现在我们利用AVDDR外接分压电阻为10k-10Ω-10k-GND,从10Ω两端得到一个共模电压约1.2V,差分电压约为1.2mV的信号,接入A0-A1,测试结果如下图 4。

图4.SD ADC测试结果

我们按照应用手册中的计算公式(如下)

计算Vin的电压结果为:

Vin=DEC*Vref/2^23/0.75/GAIN=791220*2.4/2^23/0.75/256=1.179mV

实际应用过程中并不需要计算此电压值,需要根据不同产品进行单独校准,保证测量结果的准确性。

3.开发问题简析

1、相关寄存器无法写入,要注意先打开SD ADC的时钟源,才能对寄存器进行操作。

2、SD ADC转换结果不正确,要检查外围电路、信号输入端口及确定信号的输入范围,是否有开启PGIA和BUFFER等限制输入范围的模块。

3、要及时清除ADC转换完成标志位。

4.总结

本章简单介绍了SD ADC模块功能的使用,应用上的拓展可以调整相应的ADC配置,搭配合适的算法,达到最理想的效果。

责编: 爱集微
来源:晶华微 #晶华微# #SD ADC#
THE END
关闭
加载

PDF 加载中...