如果你的没调通可能下面几个地方需要注意一下。
1.NRF24L01供电要稳定。
2.SPI通讯必须要先测试好,可以先试着把接收地址写进,在读出来验证一下。
3.如果开了自动应答请注意,发送方的发送地址和第一通道接收地址是同为发送地址。
4.如果发送失败,此时的发送fifo里面的数据是不会清空的,发送成功会自动清空。
5.接收到数据后,接收FIFO需要清空。并且清除接收到数据的中断标志位。
- /*******************************************************************************
- * @brief SPI交换数据
- * @param None
- * @retval None
- ****************************************************************Author:Liming**/
- #ifdef HARD_SPI
- unsigned char SPI_RW(unsigned char byte) // 硬件SPI
- {
- SPDAT = byte; //触发SPI发送
- while (!(SPSTAT & SPIF)); //等待SPI数据传输完成
- SPSTAT = SPIF | WCOL; //清除SPI状态
-
- return SPDAT;
- }
- #else
- unsigned char SPI_RW(unsigned char byte) // 模拟SPI
- {
- unsigned char i;
- for(i=0;i<8;i++) // output 8-bit
- {
- SPI_MOSI = (byte & 0x80); // output 'uchar', MSB to MOSI
- byte = (byte << 1); // shift next bit into MSB..
- SPI_SCK = 1; // Set SCK high..
- byte |= SPI_MISO; // capture current MISO bit
- SPI_SCK = 0; // ..then set SCK low again
- }
- return(byte); // return read uchar
- }
- #endif
复制代码 |