完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
打算一块探索者STM32F4+2块NRF24L01自发自收,应该是可以实现的吧?只将PG10(FSMC_NE3)拉高了(关掉了SRAM),不知道还有没有其他冲突。现在两个NRF都可以Check(两个Check当然是分开的了)通过,发送端的NRF可以发,但是接收端的NRF就是收不到。
先说一下现在的情况: 硬件: ①一块探索者STM32F4 ②两块NRF24L01模块(找别人试过可以收发) 连接: ①一块NRF(后称TX_NRF)插开发板的专用接口,作发送 ②一块NRF(后称RX_NRF)作接收,用杜邦线将模块与IO口连接起来,连接如下: 1.PG3作IRQ,PG5作CSN,PG7作CE 2.使用PC10~12复用为SPI3 查了开发板的专用接口的原理图和PCB板图,知道了NRF模块每个脚的功能,所以RX_NRF的连接如下: 软件: ①复制原子大哥的24l01.c为RX_NRF24L01.c。里面的RX_NRF24L01_Init负责初始化RX_NRF。 ②24l01.c的NRF24L01_Init改名为TX_NRF24L01_Init。另外还取消了SPI1_Init函数,直接在_NRF24L01_Init里一次过初始化完。 ③所有IO的速度都调低为25MHz,SPI预分频值设置为SPI_BaudRatePrescaler_8 ④在spi.h和spi.c里增加SPI3_ReadWriteByte函数的声明和定义 ⑤main.c去掉了led.h和key.h的使用,并删除了全部led和key的应用代码 main函数(部分,所有省略号的注释都是省略了代码): [C] 纯文本查看 复制代码 int main(void){ // ……这部分代码先省略了TX_NRF24L01_Init(); //初始化NRF24L01 RX_NRF24L01_Init(); //初始化NRF24L01 POINT_COLOR=RED;//设置字体为红色 while(TX_NRF24L01_Check()){// ……这部分代码先省略了} delay_ms(400);while(RX_NRF24L01_Check()){// ……这部分代码先省略了}// 初始化mode=0,进入发送模式mode = 0;// 生成要发送的字符串// ……这部分代码先省略了// 发送端初始化为发送状态TX_NRF24L01_TX_Mode();// 接收端初始化为接收状态RX_NRF24L01_RX_Mode(); while(1) { if(mode==0)//TX模式 { // ... while(1) { if(TX_NRF24L01_TxPacket(tmp_buf)==TX_OK) { //…… mode = 1;// 发送成功改变模式 break; }else { LCD_Fill(0,110,lcddev.width,170+16*3,WHITE);//清空显示 LCD_ShowString(30,110,lcddev.width-1,32,16,"Send Failed"); }; delay_ms(500); } } else//RX模式 { LCD_ShowString(30,170,200,16,16,"RX_Mode"); while(1) { if(RX_NRF24L01_RxPacket(tmp_buf)==0) //一旦接收到信息,则显示出来. { //…… //mode = 0;// 读取成功就改变模式 break; }else { //…… mode = 0;// 读取失败就改变模式 break; } } } }} 完整的代码在附件,要重新生成哦(为了减少体积把OBJ里面的都删了) 原子大神,拜托了,能看看吗?有空的话还可以自己拿两个模块搭来试试,看看我的代码到底为什么收不到呢? 自发自收无线通信.rar (497.72 KB ) |
|
相关推荐
12个回答
|
|
单独测试,ok么?
|
|
|
|
|
|
|
|
|
|
|
|
发现一个问题,RX_NRF的CE使用了PG7,与TX_NRF的CSN重复了,改成PG1。但是还是一样的失败
|
|
|
|
呵呵,孩子,无线芯片自收自发是不能实现的,收发分别是两种模式,所以想测试成功必须有两个模块
|
|
|
|
|
|
|
|
|
|
|
|
实在是没有两块开发板怎么办?总不能为了一个无线通信实验买两块开发板吧,你是赚了,我们亏大了。我有两个模块,就真的不能在一块开发板上做?按我在5楼说的:STM32——>NRF发送 -----> NRF接收——>同一块STM32 |
|
|
|
不知道我这样做算不算是单独测试发送。发送端的自动应答我关掉了,然后进入发送模式,发送一个数据,STATUS寄存器的发送成功位置1了。这算不算是确保了发送是成功的呢?如果不算,为什么,NRF的STATUS寄存器的发送成功位置1了实际却没发送成功是什么情况? |
|
|
|
|
|
|
|
|
|
|
|
建议买多一块小型的STM32开发板,核心板就可以,二三十块而已
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2543 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2331 浏览 5 评论
3156 浏览 3 评论
2801 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2759 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
607浏览 1评论
852浏览 0评论
965浏览 0评论
618浏览 0评论
445浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 03:27 , Processed in 1.180623 second(s), Total 69, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号