这个是我刚刚网上找了一份代码,这样写是可以的吧。
AD7608_SETOS(0X00);
AD7608_RESET();
AD7608_CONVST_A_H;
AD7608_CONVST_B_H;
while (1)
{
if(!AD7608_BUSY)
{
AD7608_CS_L;
for(uint8_t i = 0;i < 8;i++)
{
datatemp=ad7606_ReadDATA();
}
AD7608_CS_H;
AD7608_STARTCONV();
while(AD7608_BUSY);
}
}
}
void AD7608_STARTCONV(void)
{
AD7608_CONVST_A_L;
AD7608_CONVST_B_L;
Delay(0xF);
AD7608_CONVST_A_H;
AD7608_CONVST_B_H;
}
uint32_t ad7606_ReadDATA(void)
{
uint32_t usData = 0;
for (uint8_t i = 0; i < 18; i++)
{
AD7608_SCLK_L;
usData = usData << 1;
if(AD7608_DOUTA)
{
usData |= 0x0001;
}
AD7608_SCLK_H;
}
return usData;
}
void AD7608_RESET(void)
{
AD7608_RESET_H;
Delay(0xFF);
AD7608_RESET_L;
}
void AD7608_SETOS(uint8_t osv)
{
switch(osv)
{
case 0://000
AD7608OS0_L;
AD7608OS1_L;
AD7608OS2_L;
break;
case 1://001
AD7608OS0_H;
AD7608OS1_L;
AD7608OS2_L;
break;
case 2://010
AD7608OS0_L;
AD7608OS1_H;
AD7608OS2_L;
break;
case 3://011
AD7608OS0_H;
AD7608OS1_H;
AD7608OS2_L;
break;
case 4://100
AD7608OS0_L;
AD7608OS1_L;
AD7608OS2_H;
break;
case 5://101
AD7608OS0_H;
AD7608OS1_L;
AD7608OS2_H;
break;
case 6://110
AD7608OS0_L;
AD7608OS1_H;
AD7608OS2_H;
break;
}
}
配置
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_11|GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
|