从datasheet后面的使用知道DIN在SCLK上升沿输入,DOUT在SCLK下降沿输出,而时序图好像显示的是DIN在时钟下降沿输入,DOUT则看不出来,现在只转换IN2,但转换结果都是0,程序如下,请大侠指教,谢谢~
void adc_AI1_AI2_FS5V2(void)
{
unsigned int i, Channel;
unsigned int data_ad;
Channel= 8; //第2通道
data_ad = 0;
GpioDataRegs.GPADAT.bit.GPIO13 = 1; //时钟上升沿准备输入 1
for (i = 0; i < 16; i++)
{
if (i < 8) //0-7八个时钟上升沿输入b7-b0 控制寄存器的8位
{
if((Channel&0x0080)==0)
{
GpioDataRegs.GPADAT.bit.GPIO14=0;
}
else
{
GpioDataRegs.GPADAT.bit.GPIO14=1;
}
Channel <<= 1; //SDI输入数据移位,从b7开始传,最后传b0
}
GpioDataRegs.GPADAT.bit.GPIO13 = 0; //时钟下降沿输出数据 0
TimeDelayProgram(4);
if (i >=4) //第5个时钟周期下降沿输出DB11-DB0为12为AD输出的数字量
{
if(GpioDataRegs.GPADAT.bit.GPIO15==1) //输出数据为1
{
data_ad = (data_ad<<1)+1;
}
else //输出数据为0
{
data_ad = (data_ad<<1);
}
RESULT_FS5V2 = data_ad;
}
GpioDataRegs.GPADAT.bit.GPIO13 = 1; //数据输出完又变为时钟上升沿输入控制寄存器的位
TimeDelayProgram(4);
}
}