一个高精度24位ADC芯片ADS1222的使用方法

电子说

1.3w人已加入

描述

前一段时间,在做单片机、PLC、电路板、控制器/箱、仪器仪表、机电设备或系统、自动化、工控、传感、数据采集、自控系统、控制系统,物联网,电子产品,软件、APP开发设计定制定做开发项目时,有要求用到24位的高精度ADC,用于对外部信号采集。

经查阅,初步获得一款满足要求的芯片:ADS1222,本文就介绍该芯片及其使用方法。

ADS1222是一个2通道、24位、Δ-∑-对数-数字(A/D)转换器。它在TSSOP-14封装中提供了出色的性能和低功耗。这个ADS1222非常适合要求苛刻的高分辨率测量,尤其是在便携式系统以及其他节省空间和功率受限的应用中。

Δ-∑调制器和数字滤波器构成基础A/D转换器。模拟调制器具有±5V差分输入范围。输入多路复用器(mux)是用于在两个单独的差分输入之间进行选择通道。可以选择一个缓冲区来增加输入测量阻抗。一个简单的2线串行接口提供了所有必要的控制。数据检索、自校准和待机模式只需几个简单的波形。

当仅需要单个转换时,ADS1222可以快速关闭(待机模式)在两次测量之间处于空闲状态时降低了整体功耗,ADS1222s可以连接在一起以创建同步采样多通道测量系统,ADS1222设计用于轻松连接诸如MSP430的微控制器。ADS1222支持2.7V至5.5V电源。在3V操作中功耗通常小于1mW,待机模式下为1µW。

主要特点有:

⭕带4MHz时钟的240SPS数据速率;

⭕20位有效分辨率;

⭕双差分输入复用器通道;

⭕引脚可选择,高阻抗输入缓冲器;

⭕±5V差分输入范围,建议在GND+0.05V至VDD−1.5V之间,超出会降低精度;

⭕0.0003%INL(典型值),0.0015%INL(最大值);

⭕自校准;

⭕简单的2线串行接口;

⭕片上温度传感器;

⭕待机模式下的单次转换;

⭕低电流消耗:300µA;

⭕模拟电源:2.7V至5.5V;

应用场景:

⭕手持式仪器;

⭕便携式医疗设备;

⭕工业过程控制;

⭕磅秤等。

1、 封装及引脚说明

微控制器

微控制器

微控制器

2、 参考电路

微控制器

ADS1222支持5V供电电源,将VDD接直流电源正极,GND接直流电源负极。

CLK给予一定频率的脉冲信号给ADS1222,为TTL电平,一般为2MHz.

一般不用片上温度传感器,那么TEMPEN接0 (0V),选择接入外部模拟量通道。

一般需要开启缓冲器以获得高输入阻抗,那么BUFEN接1(5V).

参考电压一般接高精度2.5V。

3、 使用说明

ADS1222输入的模拟量电压在GND + 0.05V to VDD − 1.5V范围内拥有较高的精度,超出这个范围则精度降低。

其一般使用流程如下:

(1) 通道选择

ADS1222是双通道的模数转换器,每个芯片里面有2路模拟量输入通道,在使用时,首先得选择通道,设置引脚MUX则可选择通道。

MUX接0(0V),表示选择通道1,MUX接1(5V),表示选择通道2.

(2)等待转换完成

将SCLK引脚拉低,并监测DRDY/DOUT引脚的电平,当其为0时,表示ADC转换完成。

(3)读取数据

a,只读取数据,需要24个脉冲

数据在串行时钟SCLK的驱动下输出,先输出数据的高位,然后输出数据的低位,直到把全部24位数据输出完。此时需在SCLK的下降沿后读取数据,ADS1222在每个SCLK脉冲时输出一位数据。

在第24个SCLK脉冲时SCLK保持为高,那么ADS1222则进入待机模式。

微控制器

b,读取数据后强制DRDY/DOUT引脚为高,需要25个脉冲

在前面24位数据输出完后,SCLK再给一个脉冲,ADS1222将强制DRDY/DOUT引脚为高。

微控制器

c,ADS1222自校准,需要26个脉冲

微控制器

(4)数据解析

ADS1222的数据采用二进制补码的方式存储的,为24位,传输时高位在前。最高位为符号位,0为正数,1为负数。当获得的数据为正数时,原码即补码,当为负数时,原码等于除符号位以外的数据位全部取反后加一。

微控制器

当模拟量输入电压为2倍参考电压(一般5V)时,输出的数据为(7FFFFFh,二进制为0111 1111 1111 1111 1111 1111),可知符号位为0为正数,正数的补码即原码,其余为全为1表示测量为正电压的最大值5V。

当模拟量输入电压为0V时,输出的数据为(000000h,二进制为0000 0000 0000 0000 0000 0000),可知符号位为0为正数,正数的补码即原码,其余为全为0表示测量为0V。

当模拟量输入电压约为2倍负参考电压时,输出的数据为(800000h,二进制为1000 0000 0000 0000 0000 0000),可知符号位为1为负数,将补码转换为原码,为1 1000 0000 0000 0000 0000 0000(对于此数,负数的补码求原码后,数据变成25位(1位符号位+24位数据位)),表示测量为负电压的最小值约-5V。

ADS1222说的是24位分辨率传感器,但是其最高位是符号位,实际来说只有23位分辨率。业务:3w点yonko-tech点com

4、 参考程序

一个单片机C语言的参考程序如下:

sbit DOUT=P1^0;

sbit SCLK =P1^1;

sbit MUX1222 =P1^2;

unsigned long adc_convert_ch0() //通道0的AD转换程序

{

unsigned long xdata adc_result=0;

unsigned char i=0;

unsigned char j=0;

//复位ADS1222

SCLK1222=0; //拉低SCLK

MUX1222=1;

delayus(1); //软件延时1us,其实延时100ns即可覆盖大部分场景

MUX1222=0; //复位并选择低位的通道(mux由1变为0,表示通道复位+选择通道0.假如是选择通道1,那么mux引脚先0后1即可)

delayus(1);

//等待转换完成。业务:3w点yonko-tech点com,扣扣:二五三一26三七二六

while(DOUT ==1) //当DRDY/DOUT =0时转换完成

{ delayms(1);

j++;

if(j>=20) break;//等了20ms还没转换完成,退出等待

}

if(j<20) //只有转换时间小于20ms的才正确,才读取

{

//获取数据

for(i=0;i<24;i++) //读取数据,0-23共24个数据位

{

SCLK1222=0; //拉低SCLK

delayus(1);

SCLK1222=1; //拉高SCLK

delayus(1);

adc_result=adc_result<<1;

if(DOUT==1)

{adc_result=adc_result | 0x00000001UL;}

else

{adc_result=adc_result & (~0x00000001UL);}

}

//输出第25个脉冲,强制DRDY/DOUT为高

SCLK1222=0; //拉低SCLK

delayus(1);

SCLK1222=1; //拉高SCLK

delayus(1);

SCLK1222=0; //拉低SCLK

delayus(1);

return adc_result;

}

}

//说明:以上程序是按照数据表编写的,还没来得及上芯片验证,仅供参考。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分