ATT7022和51的spi通信,只能写进数据,读不到数据

2020-03-07 17:54发布

我想用att7022和51读取电流电压有效值。现在spi能写进去数据和命令,但就是读不到数据 是我spiread函数有问题还是?纠结了一天了 代码如下。示波器测试spiwrite函数正常
  1. SPIRead(unsigned char Cmd)
  2. {
  3.         unsigned char ucI,ucK,datatemp;
  4.         unsigned char SPIData[3];
  5.        
  6.         SPI_SCS_1 ;
  7.           Delay_US(5);                                    
  8.         SPI_SCS_0 ;
  9.         Delay_US(10);   
  10.         SPI_SCK_0 ;
  11.         for(ucI=0;ucI<8;ucI++)  //发送读数据命令,下降沿接收数据,高位在前,低位在后
  12.         {

  13.                 if( Cmd & 0x80 )
  14.                         SPI_MOSI_1;
  15.                 else
  16.                         SPI_MOSI_0;
  17.                 Cmd<<=1;
  18.                 SPI_SCK_1 ;
  19.                 Delay_US(10);
  20.                 SPI_SCK_0 ;
  21.                 Delay_US(10);
  22.         }
  23.         SPI_MOSI_0;
  24.         Delay_US(20);
  25.         for(ucK=0;ucK<3;ucK++)    //==开始接收数据 24bit Data===
  26.         {       
  27.                 SPIData[ucK]=0;
  28.                 for(ucI=0;ucI<8;ucI++)
  29.                 {       
  30.                         SPIData[ucK]<<=1;
  31.                         SPI_SCK_1 ;
  32.                         Delay_US(10);
  33.                         if(SPI_MISO)
  34.                                 SPIData[ucK]=SPIData[ucK]|0X80 ;
  35.                         SPI_SCK_0 ;
  36.                         Delay_US(10);
  37.                        
  38.                        
  39.                 }
  40.         }
  41.         Delay_US(10);
  42.         SPI_SCS_1 ;
  43.         datatemp=ArrayTogether(SPIData,3);
  44.         return datatemp;
  45. }
复制代码

  1. long ArrayTogether(unsigned char *temp,unsigned char len)
  2. {
  3.         long retData;
  4.         unsigned char i;

  5.         retData=0;
  6.         for(i=0;i<len;i++)
  7.         {
  8.                 retData=retData<<8;
  9.                 retData=retData+(unsigned long)temp[i];
  10.         }
  11.         return retData;
  12. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。