天线|RF射频
直播中

李开英

7年用户 239经验值
私信 关注
[问答]

‘W25QXX’与‘NRF24L01’这里为什么会一直‘NRF24L01_Check无应答?

下面使用到的函数,不清楚是不是PB12复用这里没有处理好。
如果我把  “while(font_init()) //检查字库”   这里注释"NRF24L01 OK!"。
但是‘W25QXX’与‘NRF24L01’整起来,无线模块就无法应答。各位大神,这个该怎么解决,谢谢!
#define    W25QXX_CS         PBout(12)          //W25QXX的片选信号
//24L01操作线
#define NRF24L01_CE   PGout(8) //24L01片选信号
#define NRF24L01_CSN  PGout(7) //SPI片选信号      
#define NRF24L01_IRQ  PGin(6)  //IRQ主机数据输入
//初始化SPI FLASH的IO口
void W25QXX_Init(void)
{   
      GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOB, ENABLE );//PORTB时钟使能
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;  // PB12 推挽
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(GPIOB, &GPIO_InitStructure);
     GPIO_SetBits(GPIOB,GPIO_Pin_12);
      W25QXX_CS=1;                //SPI FLASH不选中
    SPI2_Init();               //初始化SPI
    SPI2_SetSpeed(SPI_BaudRatePrescaler_2);//设置为18M时钟,高速模式
    W25QXX_TYPE=W25QXX_ReadID();//读取FLASH ID.  
}  
//初始化24L01的IO口
void NRF24L01_Init(void)
{     
    GPIO_InitTypeDef GPIO_InitStructure;
      SPI_InitTypeDef  SPI_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOG, ENABLE);     //使能PB,G端口时钟
        
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;                 //PB12上拉 防止W25X的干扰
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //推挽输出
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(GPIOB, &GPIO_InitStructure);    //初始化指定IO
     GPIO_SetBits(GPIOB,GPIO_Pin_12);//上拉   
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8;    //PG8 7 推挽      
     GPIO_Init(GPIOG, &GPIO_InitStructure);//初始化指定IO
  
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;   
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PG6 输入  
    GPIO_Init(GPIOG, &GPIO_InitStructure);
   
    GPIO_ResetBits(GPIOG,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);//PG6,7,8上拉                     
         
      SPI2_Init();            //初始化SPI     
    SPI_Cmd(SPI2, DISABLE); // SPI外设不使能
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //SPI设置为双线双向全双工
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;        //SPI主机
      SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;        //发送接收8位帧结构
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;        //时钟悬空低
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;    //数据捕获于第1个时钟沿
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;        //NSS信号由软件控制
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;        //定义波特率预分频的值:波特率预分频值为16
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;    //数据传输从MSB位开始
    SPI_InitStructure.SPI_CRCPolynomial = 7;    //CRC值计算的多项式
    SPI_Init(SPI2, &SPI_InitStructure);  //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器
    SPI_Cmd(SPI2, ENABLE); //使能SPI外设
            
    NRF24L01_CE=0;             //使能24L01
    NRF24L01_CSN=1;            //SPI片选取消  
                  
}
while(font_init())             //检查字库
{
    LCD_Clear(WHITE);               //清屏
    while(SD_Init())            //检测SD卡
    {
        LCD_ShowString(30,70,200,16,16,"SD Card Failed!");
        delay_ms(200);
        LCD_Fill(30,70,200+30,70+16,WHITE);
        delay_ms(200);            
    }                                                            
    delay_ms(1000);   
    LCD_Clear(WHITE);//清屏           
}     
//初始化字体
//返回值:0,字库完好.
//         其他,字库丢失
u8 font_init(void)
{        
    u8 t=0;
    W25QXX_Init();  
    while(t<10)//连续读取10次,都是错误,说明确实是有问题,得更新字库了
    {
        t++;
        W25QXX_Read((u8*)&ftinfo,FONTINFOADDR,sizeof(ftinfo));//读出ftinfo结构体数据
        if(ftinfo.fontok==0XAA)break;
        delay_ms(20);
    }
    if(ftinfo.fontok!=0XAA)return 1;
    return 0;            
}
{
while(NRF24L01_Check())
{
    LCD_ShowString(40,372,200,16,24,"NRF24L01 Error!");
    delay_ms(200);
    LCD_Fill(40,372,239,130+16,WHITE);
    delay_ms(200);
}
LCD_ShowString(40,372,200,16,24,"NRF24L01 OK!");
}

回帖(4)

冯栋

2020-6-17 16:17:00
自己给自己顶下,原子哥,这一个可以怎么解决啊,求帮助。
举报

王赛

2020-6-17 16:23:19
请问你解决了吗  我也遇到这种问题
举报

尤娟

2020-6-17 16:40:36
够乱。。
举报

王敏

2020-6-17 16:53:15
一年多了,这个帖子,请问LZ怎么解决的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分