|
用DSP的GPIO模拟AD7280的SPI通讯,一直没检查出来下面这段程序错误在哪?
下面是程序和ad7280的时序图,求好心人指点迷津![]()
Uint16 SPI(Uint16 byte)//byte:待写入的数据
{
Uint16 i;
Uint16 read=0,write=0;// read读取的数据,write要写入的数据
write=byte;
AD7280A_SCLK = 0x01;//时钟初始为低,拉高
for (i=0;i<8;i++)
{
read=read<<1;
delay1us(10);
if ((write&0x80)==0x80)
AD7280A_SDI = 0x01;
else
AD7280A_SDI = 0x00;
write=write<<1;
delay1us(10);
AD7280A_SCLK = 0x00;//下降沿write中的数据写入芯片
delay1us(10);
if ((AD7280A_SDO)!=0)
read|=0x01;
else
read&=0xfe;
delay1us(10);
AD7280A_SCLK = 0x01;//上升沿芯片数据读入read
}
delay1us(20);
AD7280A_SCLK = 0x00;//拉低
return read;
}
|
|