前一段時間,在做單片機、PLC、電路板、控制器/箱、儀器儀表、機電設備或系統、自動化、工控、傳感、數據采集、自控系統、控制系統,物聯網,電子產品,軟件、APP開發設計定制定做開發項目時,有要求用到24位的高精度ADC,用于對外部信號采集。
經查閱,初步獲得一款滿足要求的芯片:ADS1222,本文就介紹該芯片及其使用方法。
ADS1222是一個2通道、24位、Δ-∑-對數-數字(A/D)轉換器。它在TSSOP-14封裝中提供了出色的性能和低功耗。這個ADS1222非常適合要求苛刻的高分辨率測量,尤其是在便攜式系統以及其他節省空間和功率受限的應用中。Δ-∑調制器和數字濾波器構成基礎A/D轉換器。模擬調制器具有±5V差分輸入范圍。輸入多路復用器(mux)是用于在兩個單獨的差分輸入之間進行選擇通道?梢赃x擇一個緩沖區來增加輸入測量阻抗。一個簡單的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;
}
}
//說明:以上程序是按照數據表編寫的,還沒來得及上芯片驗證,僅供參考。
本文來自于對手冊的解析,可能有誤,詳細的使用說明可查閱ADS1222的原版手冊(ADS1222_datasheet)。
沙鷗 于 成都
參考文獻:
[1] ADS1222數據表(ADS1222_datasheet)
|