基于AD7190的精密电子称 4.8KHZ超低声24位∑-Δ ADC,内置PGA

芯片制造商ADI。

下载资料,论坛讨论网址:http://www.analog.com/cn/index.html



一:话不多说,先看看一下资料















二、代码如下:


void AD7190_delay (int len)
{
while(len--);

}

void AD7190_Read(u8 len)
{
u8 ar_i,ar_j,ar_temp;

SCLK_HIGH();
AD7190_delay(2);
CS_OFF();
AD7190_delay(2);
CS_ON();
AD7190_delay(2);

if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)==Bit_RESET)
{
//
for(ar_i=len;ar_i>0;ar_i--)
{
ar_temp = 0;

for(ar_j=0;ar_j<8;ar_j++)
{
SCLK_LOW();
ar_temp <<=1;
AD7190_delay(5);
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)>0)
{
ar_temp |= 1;
}
else  
{
ar_temp |= 0;
}
SCLK_HIGH();
AD7190_delay(5);
}
ADReadBuf[ar_i-1] = ar_temp;
}
}
CS_OFF(); 
}


void AD7190_Write(u8 len,u8 *buf)
{
u8 aw_i,aw_j,aw_temp;

SCLK_HIGH();
AD7190_delay(1);
CS_OFF();
AD7190_delay(1);
CS_ON();
AD7190_delay(1);

for(aw_i=len;aw_i>0;aw_i--)
{
aw_temp=*(buf+aw_i-1);
for(aw_j=0;aw_j<8;aw_j++)
{
if(aw_temp&0x80) MOSI_HIGH();
else             MOSI_LOW();

AD7190_delay(1);
SCLK_LOW();
AD7190_delay(1);
SCLK_HIGH();
aw_temp <<= 1;
}
}
CS_OFF();


}


void AD7190_Reset(void)
{
// u8 buf[3];

buf[0]=0xff;
buf[1]=0xff;
buf[2]=0xff;

AD7190_Write(3,buf);
AD7190_Write(3,buf);
AD7190_Write(3,buf);

}


//void AD7190_Configuration(void)
{
// u8 buf[3];

buf[0] = 0x10;
AD7190_Write(1,buf);//写0x10到通讯寄存器,控制下一操作是写配置寄存器

buf[2]=0x00;
buf[1]=0x00;
buf[0]=0x00;
AD7190_Write(3,buf);//写入配置寄存器
// while (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)==Bit_SET);

buf[0]=0x08;
AD7190_Write(1,buf);//写0x08到通讯寄存器,控制下一操作为写模式寄存器

buf[2]=0x08;
buf[1]=0x00;
buf[0]=0x00;
AD7190_Write(3,buf);//写入模式寄存器
// while (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)==Bit_SET);

buf[0]=0x5C;
AD7190_Write(1,buf);//写0x5C到通讯寄存器,控制下一操作为读数据寄存器
}


亲测有数据漂动,具体是温漂、电源等引起有待测试。





欢迎交流学习!

QQ:905420278

E-mail:[email protected]

猜你喜欢

转载自blog.csdn.net/DeMing_0/article/details/79917311
ADC