芯片制造商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:jianming.tan@foxmail.com