完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
NRF24L01+的模块所有问题在这个帖子讨论吧。我为你们解答。
毕竟玩了有段时间了。 我重新修改了 C 文件和 H 文件,你们下载后,稍微移植下,就可以用了。不会有什么大的问题。 //这次加入了半双工模式 //24L01操作线 #define NRF24L01_GND 0 //24L01电源0v #define NRF24L01_VCC 3.3 //24L01电源3.3v #define NRF24L01_CE CE //24L01天线使能(高电平有效) #define NRF24L01_CSN CSN //spi传输使能(低电平有效) #define NRF24L01_SCK SCK //spi时钟(上升沿有效) #define NRF24L01_MOSI MOSI//spi输入脚(上位机MO输出,下位机SI输入) #define NRF24L01_MISO MISO//spi输出脚(上位机MI输入,下位机SO输出) #define NRF24L01_IRQ IRQ //中断脚输出(拉低电平) ////////////////////////////////////////////////////////////////////////////////// // 写一个字节,同时读出一个字节 u8 SPI_ReadWriteByte(u8 byte)//[D7:D0][D15:D8] { u8 i,data;//循环8次 // SCK=0;//时钟准备 // CSN=0;//使能spi传输 data=byte;//数据准备 for(i=0;i<8;i++)// output 8-bit { if(data & 0x80)MOSI = 1;// 输出高位逻辑值 else MOSI = 0; delay_us(1);//nrf24l01要>40ns; data = (data<<1); // 丢弃高位,低位补0 SCK = 1; // SCK 上升沿有效 delay_us(1); if((MISO&0x01)==0x01)data|=0x01; SCK = 0; // ..then set SCK low again } return(data); // 输出读取的8位 } //////////////////////////////////////////////////////////////////////#include "STM32f4xx.h" #include "stm32f4xx_conf.h" #include "delay.h" #include "spi.h" #include "nrf24l01plus.h"//nrf24L01+无线模块 void HardFault_Handler() { }//硬件故障 int main(void) { static u8 rxbuf[32]={0};//接收包 static u8 txbuf[32]={0};//发送包 static u8 P,i=0x0f;//P通道地址 static u8 temp;//0x07寄存器的值 // SystemInit();//时钟初始化 delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 //////////////////////////////////////////////////////////// //A.tx-B.p1 B.tx-A.p1 NRF24L01_bilateral_A_Init();//初始化NRF24L01为上位机A, // NRF24L01_bilateral_B_Init();//初始化NRF24L01 为下位机B ////////////////////////////////////////////////// for(i=0;i<32;i++) txbuf=0x41+i; //字母A开始//写数据包 i=0; while(1)//循环发送 { ///////////////////////// //写数据包 txbuf[0]=0x41+(i++);//写数据包//A.B.C.D.... if(txbuf[0]>0x41+26-1){txbuf[0]=0x41;i=0;}//Z->A // txbuf[0]=0x00;//没有数据要发送 //////////////////////////// //数据 发送成功一次就跳出一次 while(1)//发送成功一次跳出 { temp=NRF24L01_bilateral_Pack(rxbuf,txbuf);//接收包优先,后TX数据包 if(temp&1<<6 )//收到数据 { P=temp>>1; P=P&0x07;//取出接收通道的编号; switch(P)//通道 { case 0: break;//通道P0 case 1: break;//通道P1 case 2: break;//通道P2 case 3: break;//通道P3 case 4: break;//通道P4 case 5: break;//通道P5 default: break;//无效 } } if(temp&1<<5)break;//发送成功才跳出; } } } temp.zip (2.66 MB ) 51的2401双通讯.zip (132.73 KB ) |
|
相关推荐
26个回答
|
|
收发数据ce使能之前必须保证0x07寄存器的值是0x0e。如果上次为重发最大次数,这个状态没清除,会导致故障。
|
|
|
|
方不方便发份代码。邮箱:dongxianghd@qq.com
|
|
|
|
您好,有没有F7的一对多的nrf24l01通讯代码,我这边做一个项目,可以付费的
|
|
|
|
请问如果想用nrf发送一个浮点型的数组 该如何操作
|
|
|
|
请教一下,如果想实现发送端不停的发送数据,以下的代能够实现吗? 芯片设置为,关闭了自动应答功能,自动重发,允许接收地址零
while(1) { nRF24L01_TxPacket(Tx_Buf1); // 发送命令数据 LED=0; delay_ms(2000); LED=1; } 目前能实现按51发和stm32收,但是stm32似乎只能收到一次数据 |
|
|
|
大佬 可以加个好友吗?
|
|
|
|
你好,问一下我的自动应答一直不成功,请指导一下,谢谢,用的stm32f103 与 407通信我的贴子是:http://www.openedv.com/forum.php ... d=282971&extra=
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2568 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2361 浏览 5 评论
3208 浏览 3 评论
2836 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2787 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
663浏览 1评论
900浏览 0评论
1022浏览 0评论
666浏览 0评论
496浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 14:16 , Processed in 1.093808 second(s), Total 57, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号