STM32F1硬件SPI驱动nRF24L01通过按键控制数据收发带状态反馈
创始人
2025-05-28 11:41:08
0

STM32F1硬件SPI驱动nRF24L01通过按键控制数据收发带状态反馈


  • 📌相关篇《STM32F1基于STM32CubeMX配置硬件SPI驱动nRF24L01数据收发》

  • 🎬功能演示
    在这里插入图片描述

  • 🌿工程默认配置的是STM32F103VC单片机,其他型号的修改需要修改启动文件startup_stm32f10x_hd.s低容量的选择startup_stm32f10x_ld.s,并在Keil设置里面修改对应的宏STM32F10X_HDSTM32F10X_MD

  • ✨测试该项目需要两块单片机才行,涉及到数据收发端。

  • 🌼nrf24l01模块以及接线说明
    在这里插入图片描述
    在这里插入图片描述

  • 📜接线定义:

	SPI1控制引脚:CLK--->PA5MISO--->PA6MOSI--->PA7CSN-->PB7CE -> PB6IRQ -> PB8
----------------------VCC CSN MOSI IRQGND CE  SCK  MISO

📑功能说明

✨在发射端通过从单片机引出4个IO引脚作为中断(EXTI)按键,用于给接收端发送数据,如果接收端没有在线,或没有收到数据以及重发次数超了,发射端会有状态指示灯亮起,接收端收到数据,会通过串口将数据打印出来。本示例只演示单个字符数据发送。

在这里插入图片描述

  • 🌿发射和接收端在开机或重启时串口会打印nRF24L01自检信息,同时接在PE5引脚上的状态指示灯会闪烁3次,如果设备自检正常,指示灯会熄灭,如果自检不正常,指示灯一直常亮。
    (自检只能检测设备的SPI硬件通讯的3根线(SCKI、MOSI、MISO)接线正确以及nRF24L01模块正常,并不能作为其他接线顺序是否OK,其他接线是否正确需要发送数据是否正常才能进一步确认。)
    在这里插入图片描述
  • 🔰如果接线错误或nRF24L01有问题会打印如下信息:
    在这里插入图片描述
  • 🍁工程架构
    在这里插入图片描述

📝发射端主程序

/*nrf24l01发射端程序*/
/*开机或重启后,指示灯闪烁3次,代表工作支持,按下发射按键如果对方没有收到应答指示灯常量*/
/*配置的是SPI1接口使用软件控制引脚信号:CLK--->PA5MISO--->PA6MOSI--->PA7CSN-->PA8							CE -> PA11						  IRQ -> PA1	(发射端必须接)					PA4用于控制MAX7219VCC	CSN	MOSI IRQGND	CE	SCK	 MISO
*/
#include "stm32f10x.h"  
#include "USART1.h"
//#include "delay.h"
#include "PC13_LED.h"
#include "nrf24l01_spi1.h"
#include "KEY_Send.h"  
#include "stdio.h" void SWID_DISABLE(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
/*  *     @arg GPIO_Remap_SWJ_NoJTRST      : Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST*     @arg GPIO_Remap_SWJ_JTAGDisable  : JTAG-DP Disabled and SW-DP Enabled*     @arg GPIO_Remap_SWJ_Disable      : Full SWJ Disabled (JTAG-DP + SW-DP)	*/GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
}int main(void)
{uint8_t nrf_send_add[TX_RX_ADR_WIDTH] = {0xad,0x3e,0x35,0x45,0xfe};LED0_Config();LED1_Config();USART1_Config();NRF24L01_Init();NRF24L01_Check();NRF_TX_Mode(nrf_send_add);Four_KEY_config();printf("Hello Send \r\n");
//		NRF_Send_TX_Data(nrf_send_add,5);    //开始让NRF发送数据
//		delay_ms(1000);while(1){}}

📝接收端主程序

/*nrf24l01接收端程序*/
/*开机或重启后,指示灯闪烁3次,代表工作支持使用软件控制引脚信号:CLK--->PA5MISO--->PA6MOSI--->PA7CSN-->PA8							CE -> PA11						  IRQ -> PA1
----------------------VCC CSN MOSI IRQGND CE  SCK  MISO							*/
#include "stm32f10x.h"
#include "USART1.h"
//#include "delay.h"
#include "PC13_LED.h"
#include "nrf24l01_spi1.h"void SWID_DISABLE(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
/*  *     @arg GPIO_Remap_SWJ_NoJTRST      : Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST*     @arg GPIO_Remap_SWJ_JTAGDisable  : JTAG-DP Disabled and SW-DP Enabled*     @arg GPIO_Remap_SWJ_Disable      : Full SWJ Disabled (JTAG-DP + SW-DP)	*/GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
}int main(void)
{uint8_t NRF_Stauts;uint8_t nrf_recived_add[TX_RX_ADR_WIDTH] = {0xad,0x3e,0x35,0x45,0xfe};uint8_t receivd_dat[TX_RX_PLOAD_WIDTH];LED0_Config();LED1_Config();NRF24L01_Init();NRF24L01_Check();NRF_RX_Mode(nrf_recived_add,3);	USART1_Config();printf("Hello receivd \r\n");while(1){if((NRF_IRQ_Status() == 0))   //nrf产生中断,且是数据接收函数中判断是否为接收中断{LED1ON;NRF_RX_Data(receivd_dat, TX_RX_PLOAD_WIDTH);if(receivd_dat[0] != 0x0)   //NRF接收到数据,接收函数会清除中断{printf("received dat is %c \r\n",receivd_dat[0]);receivd_dat[0]=0;LED1OFF;
//				LED1_FLASH();}else{NRF_Stauts = Get_NRF_STATUS();/* 清除中断标志*/      SPI_NRF_WriteReg(STATUS,NRF_Stauts);}}}}

📚工程源码

  • ⚡使用须知,本代码功能已验证,不提供技术支持和问题解答!
  • 🌿发射端
链接: https://pan.baidu.com/s/19UHRdOv1mYJeRGEDFcXr9g
提取码: dtc3
  • 🌿接收端
链接: https://pan.baidu.com/s/1dvYlCdfQUvGUtLWnDZj87Q
提取码: wgf8

相关内容

热门资讯

美国非洲司令部司令炒作:中国正... 【文/观察者网 熊超然】中国和非洲国家之间开展正常军事合作,竟让一些美国人又“跳脚”了起来。 据香...
许其亮同志生平照片 2017年10月26日,习近平同志出席军队领导干部会议时与许其亮同志合影留念。新华社发 2000年...
家门口的“法律顾问”,东莞市侨... 近日,东莞市侨联法律服务站(谢岗分点)揭牌启用。服务站由谢岗镇侨联、谢岗司法分局、谢岗新阶联及广东连...
安徽泾县通报游客被打:涉事3人... 6月8日,安徽泾县联合调查组发布情况通报。全文如下: 6月6日,游客蔡某通过网络反映其6月1日到泾县...
因合同款欠付,中成股份孙公司起... 6月6日晚间,中成股份(000151)发布公告,因合同欠款事宜,公司控股子公司新加坡亚德有限公司下属...
中国学者遭美方起诉走私危险菌种... 中国驻芝加哥总领馆发言人就中国学者被起诉走私危险菌种事表示,已就美方执法部门未能履行中美领事条约规定...
预计明天午后,北京有冰雹、雷阵... 今天是高考第二天,京城晴朗少云的天气利于大家交通出行,午后西部山区有分散性雷阵雨,白天最高气温可达3...
利好科技产业!这项政策研究制定... 科技保险将迎新政策。 金融监管总局副局长周亮近日在2025天津五大道金融论坛主论坛致辞时表示,金融监...
突发:俄军攻入第聂伯罗彼得罗夫... 俄罗斯国防部当地时间8日发布通报称,俄军“中央”作战集群下属的第90坦克师部队已经抵达顿涅茨克地区的...