pBuf[u8_ctr]=SPI1_ReadWriteByte(0XFF);

2019-07-20 16:02发布

u8 NRF24L01_Read_Buf(u8 reg,u8 *pBuf,u8 len)
{
  u8 status,u8_ctr;               
  NRF24L01_CSN = 0;           //ê1ÄüSPI′«êä
  status=SPI1_ReadWriteByte(reg);//·¢Ëí¼Ä′æÆ÷Öμ(λÖÃ),2¢¶áè¡×′ì¬Öμ             
  for(u8_ctr=0;u8_ctr<len;u8_ctr++)pBuf[u8_ctr]=SPI1_ReadWriteByte(0XFF);//&#182;á3&#246;êy&#190;Y
  NRF24L01_CSN=1;       //1&#216;±&#213;SPI′&#171;ê&#228;
  return status;        //·μ&#187;&#216;&#182;áμ&#189;μ&#196;×′ì&#172;&#214;μ
}


  有人知道这的for(u8_ctr=0;u8_ctr<len;u8_ctr++)pBuf[u8_ctr]=SPI1_ReadWriteByte(0XFF);中写入0xFF是为什么吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
fankai
1楼-- · 2019-07-20 20:09
 精彩回答 2  元偷偷看……
93035199
2楼-- · 2019-07-21 01:22
 精彩回答 2  元偷偷看……
xxhjxx
3楼-- · 2019-07-21 06:17
fankai 发表于 2017-3-20 20:16
SPI是同步全双工通讯啊,就是 ,写的时候同时在读,读的时候也要写,这里想读一个数据,所以写入0XFF,才会 ...

那它循环8次,放8次0xff是为什么啊
xxhjxx
4楼-- · 2019-07-21 09:39
93035199 发表于 2017-3-20 20:56
SPI1_ReadWriteByte 函数贴出来看下

u8 SPI1_ReadWriteByte(u8 TxData)
{                                          

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET){}//μè′y·¢&#203;í&#199;&#248;&#191;&#213;£Sè·±£SR&#188;&#196;′&#230;&#198;÷&#206;a0
       
        SPI_I2S_SendData(SPI1, TxData); //í¨1yíaéèSPIx·¢&#203;íò&#187;&#184;&#246;byte  êy&#190;Y
               
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET){} //μè′y&#189;óê&#213;íêò&#187;&#184;&#246;byte  

        return SPI_I2S_ReceiveData(SPI1); //·μ&#187;&#216;í¨1ySPIx×&#238;&#189;ü&#189;óê&#213;μ&#196;êy&#190;Y       
                    
}
fankai
5楼-- · 2019-07-21 10:26
xxhjxx 发表于 2017-3-21 19:51
那它循环8次,放8次0xff是为什么啊

说明它要读8个字节啊,所以循环8次,而不是读8个位,读一个字节,在SP1_ReadWriteByte就实现了,其实你的问题应该是  这里为什么要读8个字节,而不是关于SPI本身通讯的问题,不是自己模拟的,用的是库,SPI直接实现了的
fankai
6楼-- · 2019-07-21 11:03
u8 NRF24L01_Read_Buf(u8 reg,u8 *pBuf,u8 len) 这里也输入参数  *pBuf  就是一个指针,就是要存储多个字节的,应该是连续读NRF24L01的多个寄存器

一周热门 更多>