NRF24L01模块 IRQ一直为高电平怎么办

2019-03-24 17:27发布

求大神们帮帮忙,万分感谢。
按照手册,IRQ变低电平有三种情况,为什么我的一直为高。

void TX_Mode(uchar * BUF)
{
CE = 0;

  SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);        //写发送地址
  SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, TX_ADR_WIDTH);    //写接收地址
  SPI_Write_Buf(WR_TX_PLOAD, BUF, TX_PLOAD_WIDTH);                     //写数据到TX FIFO
  SPI_Write_Reg(WRITE_REG + EN_AA, 0x01);                              // 通道0自动应答
  SPI_Write_Reg(WRITE_REG + EN_RXADDR, 0x01);                          // 使能通道0接收
SPI_Write_Reg(WRITE_REG + STATUS, 0x0e);                             //状态寄存器复位
  SPI_Write_Reg(WRITE_REG + SETUP_RETR, 0x05);                         // 自动重发延时,次数
  SPI_Write_Reg(WRITE_REG + RF_CH, 93);                                //射频通道
  SPI_Write_Reg(WRITE_REG + RF_SETUP, 0x0f);                           //传输速率2Mbps,发射功率0dBm
  SPI_Write_Reg(WRITE_REG + NRF_CONFIG, 0x0e);                         // CRC使能,发送模式,上电

  CE = 1;

}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
neie故人
2019-03-25 13:50
SPI时序    单片机频率为22MHZ,所以加入了for循环用于分频,不知道是否有错误
uchar SPI_RW(uchar byte)
{
    uchar i,j;
    for(i=0; i<8; i++)
    {
        MOSI = (byte & 0x80);
        byte <<= 1;
        SCK = 1;
        for(j=1;j<200;j++)
        {
            _nop_();
        }
        byte |= MISO;
        SCK = 0;
        for(j=1;j<200;j++)
        {
            _nop_();
        }
    }
    return(byte);
}

一周热门 更多>