OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7791|回复: 6

求助‘W25QXX’与‘NRF24L01’这里为什么会一直‘NRF24L01_Check()’无应答。 液晶屏显示的是‘NRF24L01 Error!...

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
34
金钱
34
注册时间
2015-9-16
在线时间
3 小时
发表于 2016-5-7 21:31:52 | 显示全部楼层 |阅读模式

下面使用到的函数,不清楚是不是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!");
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
34
金钱
34
注册时间
2015-9-16
在线时间
3 小时
 楼主| 发表于 2016-5-8 21:37:42 | 显示全部楼层
自己给自己顶下,原子哥,这一个可以怎么解决啊,求帮助。
回复 支持 反对

使用道具 举报

10

主题

21

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2015-9-15
在线时间
6 小时
发表于 2016-10-25 21:49:47 | 显示全部楼层
请问你解决了吗  我也遇到这种问题
回复 支持 反对

使用道具 举报

5

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2016-8-5
在线时间
158 小时
发表于 2016-10-25 22:23:15 | 显示全部楼层
够乱。。
回复 支持 反对

使用道具 举报

4

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2016-1-25
在线时间
75 小时
发表于 2017-1-7 11:23:48 | 显示全部楼层
一年多了,这个帖子,请问LZ怎么解决的
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-11-25
在线时间
3 小时
发表于 2020-3-13 19:01:58 | 显示全部楼层
我也遇到了一样的问题,请问怎么解决的
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2020-5-11
在线时间
10 小时
发表于 2020-10-3 20:44:47 | 显示全部楼层
我也遇到了,大佬有没有解决
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表