STM32
直播中

李萍

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

新手求助基于stm32f030如何去控制NRF24l01射频模块呢

新手求助基于STM32f030如何去控制NRF24l01射频模块呢?

回帖(1)

黄伟

2021-12-20 15:16:02
基于stm32f030控制NRF24l01射频模块,基于库开发,spi总线通讯。
  项目研发流程
  一、查资料,购买开发模块,16块钱的NRF24l01射频模块,stm32f030f4开发小板
  二、参考模块资料的例程,基于stm32f103的程序。
  三、学习stm32f030的开发资料,知道IO功能配置,复用功能配置,基本库函数,和工程文件结构。
  四、移植程序
  1、学会运用硬件SPI控制器,运用库函数。
  2、写一个void SPI__Init(uint8_t a);函数
  里面包括管脚定义SPI接口定义,复用功能定义。SPI初始化定义
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//8bit
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
       SPI_RxFIFOThresholdConfig(SPI1, SPI_RxFIFOThreshold_QF);    //stm32新版的SPI加了FIFO,需清除缓存
SPI_Cmd(SPI1, ENABLE);    //使能
SPIx_ReadWriteByte(0xff);

  3、写MFRC522的初始化程序
  主要包括管脚定义,检测函数,收发功能函数。
  uint8_t NRF24L01_Check(void)
通过读写寄存器,验证值,来检测SPI通讯是否成功。硬件连接是否正常。
  TX_Mode()

  RX_Mode()

  收发模式转换函数
  

  /*****************************************************


中断配置
*********************************************************/

     SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);


     NVIC_InitStruct.NVIC_IRQChannel = EXTI0_1_IRQn;      //中断入口
     NVIC_InitStruct.NVIC_IRQChannelPriority = 0x01;
     NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
     NVIC_Init(&NVIC_InitStruct);
              
     EXTI_ClearITPendingBit(EXTI_Line0);

     EXTI_InitStruct.EXTI_Line = EXTI_Line0;               //NRF24L01 IRQ PA0
     EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;      //中断模式
     EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;  //上升沿中断
     EXTI_InitStruct.EXTI_LineCmd = ENABLE;
     EXTI_Init(&EXTI_InitStruct);
  

  

  中断服务函数
  void EXTI0_1_IRQHandler(void)
  

  通过stm32f0xx.h查找中断向量表,把中断源和中断服务函数对应
  

  只要实现基本的收发数据功能函数,就可以应用了。
举报

更多回帖

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