【摘 要】本文介紹了CIRRUS LOGIC公司生產(chǎn)的16位A/D轉(zhuǎn)換芯片CS5523的主要特性以及和STC89C52RC單片機(jī)的接口電路,并設(shè)計(jì)了A/D轉(zhuǎn)換程序,供大家參考。
【關(guān)鍵詞】高精度串行A/D;CS5523;單片機(jī)
1.引言
在工業(yè)控制過程、醫(yī)療器械及儀器儀表等許多應(yīng)用中,對(duì)系統(tǒng)的速度、功耗及成本等性能的要求越來越高。為了滿足這些要求,迫使設(shè)計(jì)工程師進(jìn)一步求助數(shù)字電路、尤其是模數(shù)轉(zhuǎn)換器ADC。這些集成化的ADC包括了完整的前端系統(tǒng),保證了低電壓、低功耗方式工作,在更大程度上降低系統(tǒng)成本。下面介紹一種高精度、硬件電路簡單、計(jì)量精確、抗干擾性好、性能穩(wěn)定可靠、性價(jià)比高的A/D轉(zhuǎn)換芯片CS5523。
2.CS5523簡介
CS5523是CIRRUS LOGIC公司生產(chǎn)的16位高精度串行A/D芯片。其內(nèi)部結(jié)構(gòu)框圖如圖1所示。
CS5523芯片內(nèi)集成了一個(gè)儀表放大器、一個(gè)可編程增益放大器、多路開關(guān)、數(shù)字濾波器、自校正和系統(tǒng)校正電路。通過簡單的串行連接,CS5523可方便地由MCU控制,以實(shí)現(xiàn)多通道高精度的A/D轉(zhuǎn)換。主要特性如下:
#61548;底輸入電流(100pA)和用斬波器穩(wěn)定的一儀器放大器;
#61548;可升級(jí)的輸入跨距(雙極/單級(jí));
#61548;寬VREF輸入范圍(+1伏至+5伏);
#61548;4階Delta-Sigma模/數(shù)轉(zhuǎn)換器;
#61548;3線制串行接口;
#61548;系統(tǒng)校準(zhǔn)和自校準(zhǔn);
#61548;8個(gè)可選擇的輸出率;
#61548;單電源+5V供電;
#61548;低功耗;5.5mW;
#61548;24腳SSOP和PDIP兩種封裝。
3.CS5523在MCS-51單片機(jī)系統(tǒng)中的應(yīng)用
3.1 硬件接口
CS5523以串行接口方式與單片機(jī)接口。CS5523的SDI、SDO、SCLK、CS引腳分別和STC89C52RC單片機(jī)的P10~P13口相連。圖2是CS5523與STC89C52RC單片機(jī)接口的硬件原理圖。
單片機(jī)通過P10~P13口來控制CS5523,并讀取轉(zhuǎn)換結(jié)果。圖2中采用32.768KHz外部時(shí)鐘。CS5523的模擬信號(hào)有單端輸入和差分輸入兩種,這里采用單端輸入方式。AIN1-、AIN2-、AIN3-、AIN4-分別接地。外部模擬信號(hào)的調(diào)理和放大電路,以及基準(zhǔn)電壓電路這里不作為重點(diǎn),并未給出。
3.2 軟件設(shè)計(jì)
如圖2所示,單片機(jī)STC89C52RC和CS5523的通信采用采用串行通信方式。STC89C52RC的P10~P13口對(duì)CS5523進(jìn)行控制及數(shù)據(jù)傳輸。圖3為STC89C52RC操作CS5523的總的時(shí)序圖,對(duì)CS5523的操作軟件都是以時(shí)序圖為基礎(chǔ)編寫的。這里,只給出了幾個(gè)基本的讀寫數(shù)據(jù)和命令的子程序,僅供參考。CS5523總的控制程序是在這幾個(gè)子程序基礎(chǔ)上實(shí)現(xiàn)的,這里不做介紹。
uchar SPI_HostReadByte()
{
uchar idata i,rByte;
rByte = 0;
for(i=0;i<8;i++)
{
SPISCK = 0;
SPISCK = 1;
rByte <<= 1;
rByte |= SPISO;
}
return rByte;
}
void
SPI_HostWriteByte(uchar wByte)
{
uchar idata i;
for(i=0;i<8;i++)
{
if(((wByte << i ) 0x80) == 0x80)
{
SPISI = 1;
}
else
{
SPISI = 0;
}
SPISCK = 0;
SPISCK = 1;
}
}
void Cs5523ReadAdData()
{
uchar i;
SPISCK = 0;
NOP;
if (PartSelect == 1)
{
CS1 = 0;
CS2 = 1;
}
else if (PartSelect == 2)
{
CS1 = 1;
CS2 = 0;
}
else
{
CS1 = 1;
CS2 = 1;
}
PerformConver = 0x98;
SPI_HostWriteByte(PerformConver);
SPISO = 1;
while(SPISO == 1);
PerformConver = 0x00;
SPI_HostWriteByte(PerformConver);
for (i = 0;i < 12 ;i++)
{
ReadBuffer[i]=SPI_HostReadByte();
}
}
void Cs5523WriteData(uchar GeShu)
{
uchar i;
for (i = 0;i < GeShu ;i++)
{
SPI_HostWriteByte(ReadBuffer[i]);
}}
void WriteCommand(uchar Commandcs){
SPI_HostWriteByte(Commandcs);}
4.總結(jié)
該芯片以成功應(yīng)用于油田采油現(xiàn)場(chǎng)數(shù)據(jù)采集系統(tǒng)。運(yùn)行一年來,系統(tǒng)穩(wěn)定。
參考文獻(xiàn):
[1]CIRRUS LOGIC公司CS5523芯片數(shù)據(jù)手冊(cè).
[2]馬忠梅等,編著.單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2005.
[3]戴佳,編著.51單片機(jī)C語言應(yīng)用程序設(shè)計(jì)實(shí)力精講[M].電子工業(yè)出版社,2006.
作者簡介:申佳,男,現(xiàn)就讀于西安外事學(xué)院工學(xué)院電子信息工程專業(yè)。