| 
 
初级会员 
 
	积分65金钱65 注册时间2016-10-13在线时间16 小时 | 
 
10金钱 
| 本帖最后由 雷雷 于 2016-11-18 21:00 编辑 
 
 | u8 NRF24L01_Check(void) {
 u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};
 u8 i;
 SPI2_SetSpeed(SPI_SPEED_4);
 NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,buf,5);
 NRF24L01_Read_Buf(TX_ADDR,buf,5);
 for(i=0;i<5;i++)if(buf!=0XA5)break;
 if(i!=5)return 1;
 return 0;
 }
 
 u8 NRF24L01_Write_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++)SPI2_ReadWriteByte(*pBuf++);
 NRF24L01_CSN = 1;
 return status;
 }
 
 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;
 }
 
 
 SPI通信不是写一个数据,然后要读出一个数据吗??这样写,为何前面的4个0X5A不会丢掉呢??能连续写入5个?然后他用pBuf[u8_ctr]=SPI2_ReadWriteByte(0XFF);读出存进去的数据,这个数据5次出来为何都是0X5A?  当然肯定是在第一个问题的基础上才有第二个问题,那么如果能连续不丢失的写入,那么根据读一个数据,出来一个数据,怎么保证这个地址已经存满了,然后输入0XFF一个个把数据移位出来
 | 
 
 | 
 |