按照芯片资料写的读时序函数,但不知为什么数据输出全是1,是不是得先对AD控制寄存器进行写操作?
用示波器测得读时序和SDO电平如下图
u32 ADC_Read(void)
{
u8 i;
u32 temp = 0;
SCK = 0;
delay_us(5);
FSO = 1;
SCK = 1;
delay_us(5);
SYNC = 0;
SCK = 0;
delay_us(5);
SCK = 1;
delay_us(1);
FSO = 0;
for(i=0;i<32;i++)
{
delay_us(5);
SCK = 0;
temp<<=1;
if(SDO==1)
temp|=0x01;
else
temp =~0x01;
delay_us(5);
SCK = 1;
}
delay_us(1);
FSO = 1;
return temp;
}