完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
原子的四轴飞行器很棒!最近买了一个玩的很开心。想用原子的遥控器控制自己DIY的小车。遇到了问题。首先为了熟悉一下NRF24L01,使用MiniSTM32光盘里的NRF24L01源码,淘宝上1100米NRF24L01+PA+天线模块,使用两个STM32是可以通信的。
进一步我想用Minifly遥控器控制一个自己设计的小车。 用MiniSTM32写了NRF24L01,使用的是遥控器程序中的24L01库(为了和遥控器配对,更容易些),使用的是淘宝上1100米NRF24L01+PA+天线模块,但是无法和遥控器连接,在此想请教各位大神: 1:遥控器,NRF24L01+ 经过巴伦芯片 经过RFX2401C 经过2450BP14D0100 发送, 接收方是否还必须 经过2450BP14D0100 经过RFX2401C 经过巴伦芯片 才能接收,直接NRF24L01+模块是否可以接收呢??? 2:Minifly遥控器的地址为什么那么复杂呢?看了半天没看懂,真心请教各位大神? u32 addressHigh = ((uint64_t)RADIO_ADDRESS >> 32); u32 addressLow = (RADIO_ADDRESS & 0xFFFFFFFFULL); uint64_t addr = (uint64_t)addressHigh<<32 | addressLow; 3:使用的是遥控器程序中的24L01库,是否设置了地址,通道,速率就可以了呢? 希望大神能指点一二,不胜感激!!! |
|
相关推荐
3个回答
|
|
回答:
1.NRF24L01模块也是可以和minifly遥控器通讯的。 2.nrf24l01的通讯地址通常是5个字节,使用u64类型,实际有用字节数为低5字节。 3.看你的代码配置上没有问题,但是在主函数中不是使用nrf_rxPacket(u8 *rx_buf)调用接收。应该使用下图函数来接收数据包。当接收到数据包后,你还需要发送回一个数据包给遥控器,不然遥控器等不到应答包就不会再发送数据下来了。(具体原理你看一下遥控器开发指南中NRF24L01+和PA接口一章) [AppleScript] 纯文本查看 复制代码 /*发送和接收队列信息个数*/#define RXQ_LEN 10atkp_t rxPackets[RXQ_LEN];u8 rxq_head = 0;u8 rxq_tail = 0;atkp_t tx_p;bool isRev = false;u32 failRxcountTime = 0;u32 failStatus;/*nrf外部中断回调函数*/static void nrf_interruptCallback(void){ isRev = true; LED0(1);LED1(1); failRxcountTime = getSysTick(); failStatus = failRxcountTime;}/*无线配置初始化(地址、通道、速率)*/static void radioInit(void){ uint64_t addr = (uint64_t)configParam.radio.addressHigh<<32 | configParam.radio.addressLow; if(nrf_check() == SUCCESS) { nrf_setIterruptCallback(nrf_interruptCallback); nrfInit(PRX_MODE); } else { while(1) { LED0(0);LED1(0);// delay_ms(100); LED0(1);LED1(1);// delay_ms(100); } } nrf_setAddress(addr); nrf_setChannel(configParam.radio.channel); nrf_setDataRate(configParam.radio.dataRate);}/*无线连接初始化*/void radiolinkInit(void){ radioInit(); tx_p.msgID = DOWN_RADIO; tx_p.dataLen = 1; tx_p.data[0] = D_RADIO_HEARTBEAT; nrf_txPacket_AP((u8*)&tx_p, 32);//装载应答包,当接收成功后,nrf会自动发送这个应答包}/*无线发送atkpPacket*/bool radiolinkSendPacket(const atkp_t *p){}/*无线接收atkpPacket*/bool radiolinkReceivePacket(atkp_t *p){ if(rxq_head != rxq_tail) { memcpy(p, &rxPackets[rxq_tail], sizeof(rxPackets[rxq_tail])); rxq_tail = (rxq_tail+1)%RXQ_LEN; return true; } return false;}/*无线连接任务*/void radiolinkTask(void){ u8 ack_len; if(isRev == true) { isRev = false; nrf_txPacket_AP((u8*)&tx_p, 32); u8 status = nrf_checkEventandRxPacket((u8*)&rxPackets[rxq_head], &ack_len); LED0(1);LED1(0); if(status == RX_DR)//发送成功 { if((rxq_head+1)%RXQ_LEN != rxq_tail) { rxq_head = (rxq_head+1)%RXQ_LEN; } } } if(getSysTick() >= failStatus+500)/*500ms没收到中断说明通讯失败*/ { } if(getSysTick()>=failRxcountTime+10)/*10ms没收到中断说明通讯失败,亮红灯*/ { failRxcountTime = getSysTick(); LED0(0);LED1(1); } } |
|
|
|
感谢感谢,我尝试一下!!!
|
|
|
|
你好 请问你的遥控器成功了吗 本人最近有学期项目 也有这个想法 但不知道怎么做
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2571 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2366 浏览 5 评论
3212 浏览 3 评论
2839 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2791 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
669浏览 1评论
907浏览 0评论
1029浏览 0评论
673浏览 0评论
501浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 15:20 , Processed in 1.337473 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号