今天第一次调ISD4004,资料上说它用SPI总线驱动,我用STC89C52模拟SPI时序。但是SPI应该是先传输高位的,而用ISD的SPI时,先传输高位不能驱动,只有先传输低位才能驱动。想问下这是怎么回事。
模拟SPI程序如下:
unsigned char SPI_rw_byte(unsigned char dat)
{
unsigned char i;
sclk=0;
for(i=0;i<8;i++)
{
// dat=dat<<1;
dat=dat>>1;
mosi=CY;
sclk=1;
sclk=0;
// dat=dat|miso;
}
return dat;
}
之所以有返回值,是因为之前写这个时是同时读写的,现在不用读数据,无视掉就好了。
现在就是用dat=dat<<1; ISD4004不能工作,而用dat=dat>>1; ISD能工作(当然还改了包含地址的指令的传输顺序)。
希望各位指点一下。
|