又一个关于SPI2_ReadWriteByte的问题

2019-07-21 04:30发布

最近在做NRF24L01的收发。如果reg为RD_RX_PLOAD,那么SPI2_ReadWriteByte(reg)的返回值是状态寄存器的值吗?是通过读取状态寄存器的值来判断是否进入读取模式吗?接下来的SPI2_ReadWriteByte(0xFF)返回值则是返回最近接收到的数据对吧。

NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH)

u8 NRF24L01_Read_Buf(u8 reg,u8 *pBuf,u8 len)
{
  u8 status,u8_ctr;       
  NRF24L01_CSN = 0;           
  status=SPI2_ReadWriteByte(reg);
  for(u8_ctr=0;u8_ctr<len;u8_ctr++)pBuf[u8_ctr]=SPI2_ReadWriteByte(0XFF);
  NRF24L01_CSN=1;    
  return status;  
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
正点原子
1楼-- · 2019-07-21 10:08
[mw_shl_code=c,true]//启动NRF24L01接收一次数据 //txbuf:待发送数据首地址 //返回值:0,接收完成;其他,错误代码 u8 NRF24L01_RxPacket(u8 *rxbuf) { u8 sta; SPI1_SetSpeed(SPI_SPEED_8); //spi速度为9Mhz(24L01的最大SPI时钟为10Mhz) sta=NRF24L01_Read_Reg(STATUS); //读取状态寄存器的值 NRF24L01_Write_Reg(NRF_WRITE_REG+STATUS,sta); //清除TX_DS或MAX_RT中断标志 if(sta&RX_OK)//接收到数据 { NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//读取数据 NRF24L01_Write_Reg(FLUSH_RX,0xff);//清除RX FIFO寄存器 return 0; } return 1;//没收到任何数据 } [/mw_shl_code]

一周热门 更多>