SPI接口相当于边缘移位触发器,在SDO管脚写入一位数据,再制造一个边缘(上升沿或下降沿),数据将被移入到目标设备。有的资料上这样说“状态机在SCLK上升沿解释8位命令字”,也就是在上升沿数据将被移入到目标设备。这样理解对吗???????
最近用CS5460A,也是SPI通讯,手册上没有说是哪个边缘用于写入数据,哪个边缘用于读出数据。。。。。看图好像是上升沿写入数据,我在网上找了几个程序,但是有的是下降沿写入数据,有的是上升沿写入数据。。。。。看的我是很郁闷。不知道我对SPI的理解有没有什么问题?????
我想用不同的边缘都能成功移入数据,可能是他们的程序里有多次改变SCLK时钟的引脚,因为那时SDO数据还是保持以前的,所以会移位成功!
不知道大家是这么用模拟SPI的?
程序1:for(i=8;i>0;i--)
{
if(a & 0x80 )
{
Sdics = 1 ;
}else{
Sdics = 0 ;
}
Delay5us();
Clkcs = 1 ;
Delay5us();
Clkcs = 0 ;
Delay5us();
a = a << 1 ;
}
程序2:for(i=0;i<8;i++)
{
SCLK=0;
if(d&0x80)
SDI=1;
else
SDI=0;
SCLK=1;
d<<=1;
SCLK=0;
} |