新聞中心

AD7705程序

作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
AD7705應(yīng)用注意要點(diǎn):
(1)DRDY邏輯不要搞反,高電平時(shí)等待轉(zhuǎn)換狀態(tài),低電平為可以讀取轉(zhuǎn)換數(shù)據(jù)
(2)系統(tǒng)校準(zhǔn)時(shí)輸入信號(hào)要大于所選量程的4/5,否則校準(zhǔn)不到32767。
(3)校準(zhǔn)時(shí)要等待一定的時(shí)間,讀取數(shù)據(jù)也一樣,不能超過(guò)轉(zhuǎn)換速率。
(4)一般的應(yīng)用只要內(nèi)部校準(zhǔn),這個(gè)很簡(jiǎn)單,只要初始化就可以。如果測(cè)量范圍不是芯片的范圍,可以通過(guò)系統(tǒng)校準(zhǔn)來(lái)實(shí)現(xiàn),滿(mǎn)量程校準(zhǔn)電壓要大于量程的4/5

#include
#include
#include"ad7705.h"
#include"main.h"
#include"crc16.h"
#include"Usart.h"

//針對(duì)四個(gè)量程的設(shè)置寄存器的設(shè)置內(nèi)容
//(1)對(duì)于單極性V級(jí)別輸入0-5V、0-20mA、0-10V這三個(gè)量程,輸入范圍為0-2V,無(wú)極性,增益為1,緩沖模式--0-2V
//(2)對(duì)于雙極性V級(jí)別輸入+-2.5V、+-5V這兩個(gè)量程,輸入范圍為+-1V,雙極性,增益為2,緩沖模式--+-2V
//(3)對(duì)于雙精度mV級(jí)別輸入+-500mV,增益為4,雙極性,緩沖模式--+-2V
//(4)對(duì)雙精度mV級(jí)別+-50mV,增益為32,雙極性,緩沖模式--+-1.6V
//------MD1(0)MD0(0)G2(0)G1(0)G0(0)B/U(0)BUF(0)FSYNC(0)--------------------------//
constunsignedchartext_of_setup[4]={0X04,0X08,0X10,0X28};//非緩沖模式,數(shù)字濾波同步
//constunsignedchartext_of_setup[4]={0X06,0X0A,0X12,0X2A};//緩沖模式,數(shù)字濾波同步

externvolatileunsignedcharcommand[7];//校準(zhǔn)命令全局?jǐn)?shù)組
externvolatileunsignedcharscale;//記錄系統(tǒng)量程
externvolatileunsignedcharNO_CALI_TYPE;//未校準(zhǔn)類(lèi)型
externvolatileunsignedlongintZS,GS;//當(dāng)前量程的校準(zhǔn)系數(shù)
externvolatileunsignedchartime_count;//超時(shí)標(biāo)志

//----------------------------------------------------------------------------
//函數(shù):reset_AD7705
//功能:AD7705串行接口失步后將其復(fù)位。復(fù)位后要延時(shí)500us再訪問(wèn)
//參數(shù):無(wú)
//返回:無(wú)
//變量:無(wú)
//備注:無(wú)
//----------------------------------------------------------------------------
voidreset_AD7705(void)
{
unsignedchari;

AD_DIN1;
for(i=0;i<36;i++)
{
AD_CLK0;
asm("nop");
asm("nop");
asm("nop");
AD_CLK1;
asm("nop");
asm("nop");
asm("nop");
}

_delay_ms(1);
}

//------------------------------------------------------------------------------------------
//函數(shù):read_AD7705_byte
//功能:從AD7705讀一個(gè)字節(jié)的數(shù)據(jù)
//參數(shù):無(wú)
//返回:讀到的一字節(jié)數(shù)據(jù)
//變量:無(wú)
//備注:無(wú)
//------------------------------------------------------------------------------------------
unsignedcharread_AD7705_byte(void)
{
unsignedchardata=0;
unsignedchari=0;

for(i=0;i<8;i++)
{
data<<=1;
AD_CLK0;
asm("nop");
asm("nop");
asm("nop");
if(AD_DOUT)
{
data++;
}
AD_CLK1;
asm("nop");
asm("nop");
asm("nop");
}

returndata;
}

//------------------------------------------------------------------------------------------
//函數(shù):read_AD7705_word
//功能:從AD7705讀一個(gè)字的數(shù)據(jù),共16bit
//參數(shù):無(wú)
//返回:讀到的一字節(jié)數(shù)據(jù)
//變量:無(wú)
//備注:無(wú)
//------------------------------------------------------------------------------------------
unsignedintread_AD7705_word(void)
{
unsignedintdata=0;
unsignedchari=0;

for(i=0;i<16;i++)
{
data<<=1;
AD_CLK0;
asm("nop");
asm("nop");
asm("nop");
if(AD_DOUT)
{
data++;
}
AD_CLK1;
asm("nop");
asm("nop");
asm("nop");
}

returndata;
}


//------------------------------------------------------------------------------------------
//函數(shù):read_AD7705_dword
//功能:從AD7705讀一個(gè)24的數(shù)據(jù)
//參數(shù):無(wú)
//返回:讀到的一字節(jié)數(shù)據(jù)
//變量:無(wú)
//備注:AD7705是一個(gè)24位AD,選定刷新頻率在16.7HZ下,有效位是19位,暫時(shí)讀出全部24位數(shù)據(jù)
//------------------------------------------------------------------------------------------
unsignedlongintread_AD7705_dword(void)
{
unsignedlongdata=0;
unsignedchari=0;

for(i=0;i<24;i++)
{
data<<=1;
AD_CLK0;
asm("nop");
asm("nop");
asm("nop");
if(AD_DOUT)
{
data++;
}
AD_CLK1;
asm("nop");
asm("nop");
asm("nop");
}

returndata;
}


//------------------------------------------------------------------------------------------
//函數(shù):write_AD7705_byte
//功能:往AD7705寫(xiě)8位數(shù)據(jù)
//參數(shù):IN-uint8_tdata,要寫(xiě)入AD7705的數(shù)據(jù)
//返回:無(wú)
//變量:無(wú)
//備注:無(wú)
//------------------------------------------------------------------------------------------
voidwrite_AD7705_byte(unsignedchardata)
{
for(unsignedchari=0;i<8;i++)
{
AD_CLK0;
if(data&0x80)
AD_DIN1;
else
AD_DIN0;
asm("nop");
asm("nop");
asm("nop");
AD_CLK1;
asm("nop");
asm("nop");
asm("nop");
data<<=1;
}

AD_DIN1;
}

//------------------------------------------------------------------------------------------
//函數(shù):write_AD7705_dword
//功能:往AD7705寫(xiě)24位數(shù)據(jù),因?yàn)锳D7705是24位的器件
//參數(shù):IN-int32_tdata,要寫(xiě)入AD7705的數(shù)據(jù)
//返回:無(wú)
//變量:無(wú)
//備注:無(wú)
//------------------------------------------------------------------------------------------
voidwrite_AD7705_dword(unsignedlongintdata)
{
for(unsignedchari=0;i<24;i++)
{
AD_CLK0;
if(data&0x800000)
AD_DIN1;
else
AD_DIN0;
asm("nop");
asm("nop");
asm("nop");
AD_CLK1;
asm("nop");
asm("nop");
asm("nop");
data<<=1;
}

AD_DIN1;
}

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: AD7705轉(zhuǎn)換數(shù)

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉