ADC采样芯片ADS7822使用方法

最近,做项目中使用了一款TI(德州仪器)公司的ADC采样芯片ADS7822。现在把我的电路和程序发出来与大家分享。最重要的是,深入了解ADC芯片的使用方法,达到触类旁通。


在我的项目中,有一个微弱的电流信号,被放大电路放大成了电压信号,范围是0~2500mV,所以,我需要采集这个电压信号到单片机。


在我以前的文章中,我也强调过多次,在使用一款芯片之前,一定要去这款芯片的官方网站,或者在别的可靠的地方也可以,下载到这款芯片的数据手册(datasheet)。有很多电子初学者,不知道这个看似平常却很有效的学习方法,还没有看过芯片的数据手册,就去百度上搜索“XXX芯片电路图”“XXX芯片程序”等,然后看了一堆资料,也不会用。

ADC采样芯片ADS7822使用方法

ADC芯片,首先看三个参数:分辨率、采样率、通信速率。

分辨率:

从这个芯片的首页,可以看到,分辨率是12位,2500mV/4095=0.61mV.

采样率:

采样率是200KHz,换句话说,就是1秒钟,可以转换200000次,再换句话说,就是5微秒可以转换一次数据。(T=1/f 1/200000=0.000005)这个速度已经是很快了。所以,这款芯片的价格不算低。

通信速率:

通信速率在首页中没有写,我们可以在后面找到,如下图:

ADC采样芯片ADS7822使用方法

通信速率可以从10KHz到3.2MHz.

下面,就该看芯片引脚名称和功能了。

ADC采样芯片ADS7822使用方法

电源引脚VCC和GND,SPI通信引脚DCLOCK、Dout、CS/SHDN,基准参考电压引脚Vref,最后,两个电压输入引脚+In和-In.

电源:

从首页中看到,电源可以从2.7V到5.25V,从这个信息中,我们可以得知,这个芯片,可以用在3.3V的单片机系统中,也可以用在5V的单片机系统中。

基准参考电压:

为什么会有基准参考电压呢?举个例子,加入你按照电源电压为参考电压的话,一般电源芯片输出的电压,不是很精确,例如,我们的电源,正常应该是3.3V,所以我们在计算得到的输入电压的时候,会用这个公式Vin=采集值*3300/4095;那么,实际上如果你的电源电压是3.2V,或者是3.4V的话,计算出来的结果,误差就会很大。当然,还有一个解决办法,就是先测一下电源电压,如果测到的电压是3.25V,那么把公式中的3300换成3250,就可以解决。不过,你试想一下,如果你的产品是批量产品的话,每个产品都需要你先测试电源电压,再改程序,那岂不是累死了。所以ADC芯片一般都带有一个Vref基准电压引脚。然后市场上还会有很多的基准电压芯片,在我的项目中,使用的是TI公司的REF3125芯片,它是一个2.5V的基准电压源。


从这段话中,得到,ADC芯片的输入电压范围,就是基准电压设置的。所以,我的电路,输入电压就是0~2.5V。另外,这段话也提示我们,你可以随意使用从50mV到电源电压值的任意基准电压芯片,我们使用的REF3125是2.5V的基准电压,符合这个要求。

ADC采样芯片ADS7822使用方法

电路图中,ADS7822使用3.3V供电,芯片的IN-与GND直接相连,用IN+接输入待检测信号,C23和C24和C26是电源滤波用的。REF3125是2.5V电压基准芯片,使用方法也很简单,3.3V供电,直接输出2.5V。CS,DOUT,DCLK是SPI通信引脚。

采集程序

程序遵循普通的SPI通信协议。单片机带SPI口的话,可以在硬件上连接之后再做好配置即可。不过,作为一个初学者,不建议使用单片机的硬件SPI接口,而直接使用IO口模拟,这样理解的比较透彻。

先看时序图:

ADC采样芯片ADS7822使用方法

根据时序图,就可以写出下面的程序了:

ADC采样芯片ADS7822使用方法
这个程序,是按照芯片数据手册上的时序图写出来的。

CS拉低后,SPI通信开始,让时钟引脚DCLK输出方波,在DCLK的高电平,检测DOUT引脚上的电平,就可以采集到值了。需要注意的是,采集回来的15位值,前两位是不定值,第3位肯定是0,然后后面的12位就是我们要的值。所以最后使用byte&0x0FFF这条语句把采集到的数据只保留后12位(提醒初学者,这里用的是“0与任何数都等于0”的定理