在用模拟SPI和Si4432通讯的时候,从Si4432中读回的数据全是0,这是什么原因啊?unsigned char spi_byte(unsigned char data)
{
unsigned char i;
for (i = 0; i < 8; i++)// 控制SCK 和 SDI,发射一个字节的命令,同事读取1个字节的数据
{ // 没有包括nSEL的控制
if (data & 0x80)
SDI = 1;
else
SDI = 0;
data <<= 1;
SCK = 1;
if (SDO)
data |= 0x01;
else
data &= 0xfe;
SCK = 0;
}
return (data);
}
SCK = 0;
nSEL = 0;
spi_byte(0x7f);
for(i = 0;i<10;i++)
{
rx_buf[i] = spi_byte(0xFF);
}
nSEL = 1;
|