小弟最近在做一个项目,测麦克风输出的正弦波峰峰值。电路图如附件所示。
在通讯端口DCLK DOUT CS都接有上拉电阻至+5V。
现在存在的问题是CS和DCLK两个引脚都有按照datasheet的时序来配置,
DOUT引脚却没有检测到输出的高低电平波形。
请高手帮忙看看问题出在哪里。部分代码如下:
u16 AD7683_Dataread(void)
{
unsigned char i;
unsigned int dataread;
dataread=0x0000;
GPIO_SetBits(GPIOB, GPIO_Pin_15); //CS=1
Delay_Us(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_15); //CS=0
for(i=0;i<5;i++)
{
GPIO_SetBits(GPIOB, GPIO_Pin_13); //DCLK=1
Delay_Us(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_13); //DCLK=0
Delay_Us(100);
}
for(i=0;i<16;i++)
{
GPIO_SetBits(GPIOB, GPIO_Pin_13); //DCLK=1
Delay_Us(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_13); //DCLK=0 采下降沿的数据
Delay_Us(100);
if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)) //read DOUT
{
dataread=dataread&0xfffe;
}
else
{
dataread=dataread|0x0001;
}
dataread<<=1;
// Delay_Us(100);
}
GPIO_SetBits(GPIOB, GPIO_Pin_13); //DCLK=1
Delay_Us(100);
//GPIO_ResetBits(GPIOB, GPIO_Pin_13);
Delay_Us(100);
GPIO_SetBits(GPIOB, GPIO_Pin_15); //CS=1
return (dataread);
} |