我想用att7022和51读取电流电压有效值。现在spi能写进去数据和命令,但就是读不到数据 是我spiread函数有问题还是?纠结了一天了 代码如下。示波器测试spiwrite函数正常
SPIRead(unsigned char Cmd)
{
unsigned char ucI,ucK,datatemp;
unsigned char SPIData[3];
SPI_SCS_1 ;
Delay_US(5);
SPI_SCS_0 ;
Delay_US(10);
SPI_SCK_0 ;
for(ucI=0;ucI<8;ucI++) //发送读数据命令,下降沿接收数据,高位在前,低位在后
{
if( Cmd & 0x80 )
SPI_MOSI_1;
else
SPI_MOSI_0;
Cmd<<=1;
SPI_SCK_1 ;
Delay_US(10);
SPI_SCK_0 ;
Delay_US(10);
}
SPI_MOSI_0;
Delay_US(20);
for(ucK=0;ucK<3;ucK++) //==开始接收数据 24bit Data===
{
SPIData[ucK]=0;
for(ucI=0;ucI<8;ucI++)
{
SPIData[ucK]<<=1;
SPI_SCK_1 ;
Delay_US(10);
if(SPI_MISO)
SPIData[ucK]=SPIData[ucK]|0X80 ;
SPI_SCK_0 ;
Delay_US(10);
}
}
Delay_US(10);
SPI_SCS_1 ;
datatemp=ArrayTogether(SPIData,3);
return datatemp;
}
long ArrayTogether(unsigned char *temp,unsigned char len)
{
long retData;
unsigned char i;
retData=0;
for(i=0;i<len;i++)
{
retData=retData<<8;
retData=retData+(unsigned long)temp[i];
}
return retData;
}
|