NRF24L01模块 IRQ一直为高电平,求大神帮忙

2019-07-15 12:38发布

求大神们帮帮忙,万分感谢。
按照手册,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;
}
void CHECKFASONG(uchar DATA)
{
         TX_BUF[0] = DATA;
         TX_Mode(TX_BUF);        
         Check_ACK();        
}

uchar Check_ACK()
{
         while(IRQ);
         sta = SPI_RW( NOP );           
         if(MAX_RT)
                 SPI_RW(FLUSH_TX);        
         SPI_Write_Reg(WRITE_REG + STATUS, sta);         
         IRQ = 1;
         if(TX_DS)
                 return(0x00);
         else
                 return(0xff);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
neie故人
1楼-- · 2019-07-15 14:50
我理解的是NRF模块存在三种情况时(1.接收到ACK信号,2.达到最大重发次数,3.用于接收端,接收到数据),自动给IRQ引脚置零,不知道理解有误么,请大神们指点下。
neie故人
2楼-- · 2019-07-15 15:18
 精彩回答 2  元偷偷看……
扎马尾的女孩
3楼-- · 2019-07-15 20:00
问题解决了么??
扎马尾的女孩
4楼-- · 2019-07-15 21:22
问题解决了么??

一周热门 更多>