ADS1251的时序以及各个部分所对应的时间如下图所示,请问我写的读取代码是否有问题?
double GET_DOUT(void)
{
unsigned int temp = 0x00000000;
int i;
SCLK(0);
CLK(0);
while(1)
{
CLK_Toggle();
if(DOUT() == 1)
break;
}
for(i=0;i<23;i++) CLK_Toggle();
CLK_Toggle();
if(DOUT() != 0)
return 1;
for(i=0;i<5;i++) CLK_Toggle();
CLK_Toggle();
if(DOUT() == 0)
return 1;
for(i=0;i<5;i++) CLK_Toggle();
CLK_Toggle();
SCLK(1);
if(DOUT()) temp |= 1;
CLK_Toggle();
SCLK(0);
CLK_Toggle();
CLK_Toggle();
for(i=0;i<23;i++)
{
temp <<= 1;
SCLK(1);
if(DOUT()) temp |= 1;
CLK_Toggle();
CLK_Toggle();
SCLK(0);
CLK_Toggle();
CLK_Toggle();
}
SCLK(1);
CLK_Toggle();
CLK_Toggle();
SCLK(0);
CLK_Toggle();
CLK_Toggle();
for(i=0;i<248;i++) CLK_Toggle();
Sample_Single = (double)temp;
return 0;
}
DATASHEET上面说数据读取频率为f(CLK)/384,采样频率为f(CLK)/6,读取频率远远小于采样频率,那么不会讲寄存器写爆导致读到的数据存在一个时延吗?但是实际读取之中好像并没有出现明显的时延,这又是为什么?
|