硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5232|回复: 10
收起左侧

[有问必答] NRF24L01+模块

[复制链接]

2

主题

8

回帖

14

积分

新手上路

积分
14
发表于 2014-9-7 10:56:47 | 显示全部楼层 |阅读模式
哪里有armfly2401模块的例程,光盘里好象没有
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107681
QQ
发表于 2014-9-7 13:49:16 | 显示全部楼层
楼主,你买的是STM32-V2或者V3开发板吗,如果是的话这个板子上面没有专门引脚插座的,需要楼主自己用杜邦线连接了。

相应的代码和说明文档需要你找我们的客服要即可,会发到您的邮箱
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-12-27 11:05:59 | 显示全部楼层
V5的板子,配置SPI后,老是无法和24L01+模块正常通信。请问哪里有例程?

内容来自[短消息]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107681
QQ
发表于 2014-12-27 11:18:26 | 显示全部楼层

回 cdcdty 的帖子

cdcdty:V5的板子,配置SPI后,老是无法和24L01+模块正常通信。请问哪里有例程?

内容来自[短消息] (2014-12-27 11:05)
我们没有针对V5板子的24L01+例子,不好意思啊。
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-12-27 17:54:12 | 显示全部楼层
V5群号码是多少?

用示波器观察,CSN,CE,电源、地正常,但是SPI时钟线上没有数据。我只有怀疑SPI排线插槽有问题了。
贵公司的技术支持能否测试一下。或者发个测试程序给我。谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107681
QQ
发表于 2014-12-27 19:32:49 | 显示全部楼层

回 cdcdty 的帖子

cdcdty:V5群号码是多少?

用示波器观察,CSN,CE,电源、地正常,但是SPI时钟线上没有数据。我只有怀疑SPI排线插槽有问题了。
贵公司的技术支持能否测试一下。或者发个测试程序给我。谢谢 (2014-12-27 17:54)
STM32-V5开发板售后群欢迎V5客户加入:70385160
加入方法:运行开发板的出厂程序,串口会打印CPU ID,添加的时候提供CPU ID即可。
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-12-27 22:47:20 | 显示全部楼层
void NRF_GPIO_Init(void)
{  
    GPIO_InitTypeDef  GPIO_InitStructure;


    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOH, ENABLE);//使能GPIOB,G时钟
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOI|RCC_AHB1Periph_GPIOC, ENABLE);   
  //GPIOB14初始化设置:推挽输出
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化PF8
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_Init(GPIOI, &GPIO_InitStructure);//初始化PF8
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化PF8
   
    //GPIOF7推挽输出   CSN
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化PF7
   
        //GPIOA4推挽输出  CE
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化PA4   
   
    //GPIOH7上拉输入   IRQ
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//输入
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOH, &GPIO_InitStructure);//初始化PG8

  GPIO_SetBits(GPIOF,GPIO_Pin_8);//PB14输出1,防止SPI FLASH干扰NRF的通信
  GPIO_SetBits(GPIOI,GPIO_Pin_10);
    GPIO_SetBits(GPIOC,GPIO_Pin_2);
   
     SPI1_Init();            //初始化SPI1  

    Clr_NRF24L01_CE;             //使能24L01
    Set_NRF24L01_CSN;            //SPI片选取消                  
}
void SPI1_Init(void)
{     
  GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef  SPI_InitStructure;
   
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);//使能SPI1时钟

  //GPIOFB3,4,5初始化设置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;//PB3~5复用功能输出   
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
   
    GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1); //PB3复用为 SPI1
    GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); //PB4复用为 SPI1
    GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); //PB5复用为 SPI1


    //这里只针对NRF口初始化
     SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;        //设置SPI工作模式:设置为主SPI
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;        //设置SPI的数据大小:SPI发送接收8位帧结构
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;        //串行同步时钟的空闲状态为低电平
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;    //串行同步时钟的第1个跳变沿(上升或下降)数据被采样
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;        //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;        //定义波特率预分频的值:波特率预分频值为256
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;    //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
    SPI_InitStructure.SPI_CRCPolynomial = 7;    //CRC值计算的多项式
    SPI_Init(SPI1, &SPI_InitStructure);  //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器

    SPI_Cmd(SPI1, ENABLE); //使能SPI外设

}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107681
QQ
发表于 2014-12-27 23:38:24 | 显示全部楼层
加售后群,现在v5的群里面有几百人呢,你看看有使用这个模块的网友不,交流下
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-12-27 23:49:48 | 显示全部楼层
NRF 的SPI插槽没有工作
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107681
QQ
发表于 2014-12-28 12:22:03 | 显示全部楼层
楼主,你应该先保证你的GPIO引脚,时钟,还是用SPI配置正确,看你的代码应该是从F1移植多来的,比如GPIO部分,这里就配置错了:
//GPIOH7上拉输入   IRQ
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//输入
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOH, &GPIO_InitStructure);//初始化PG8                     

IRQ引脚是PH7,而你这里配置的却是PH8

还有就是加下售后群,看看群里有用的兄弟不,跟他们交流下。我已经在5楼提供了QQ群号和加入方法了。
回复

使用道具 举报

1

主题

33

回帖

36

积分

新手上路

积分
36
发表于 2015-1-7 08:22:53 | 显示全部楼层
2401算比较简单了,把硬件连接好,配置好IO口,找找网上的驱动例程移植下就行了,多动动手,多思考,这样才能更快的提升
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-11 18:50 , Processed in 0.184063 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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