完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我最近在做一个近距离监控装置 用nrf24l01 模块 一个2.4G模块需要在接受和发送消息之间相互切换。
我的遇到的问题是 当我从接收模式RX_Mode()切换到发送模式TX_Mode()后,程序一直停在这个函数NRF24L01_TxPacket(tmp_buf)里面,主要是停在while(NRF24L01_IRQ!=0)//等待发送完成这个函数里面 而我直接使用发送模式就没有这个问题,有人碰到过这样的问题吗??我用的是发烧友的代码 这个是NRF24L01_TxPacket()函数 u8 NRF24L01_TxPacket(u8 *txbuf) { u8 sta; SPIx_SetSpeed(SPI_BaudRatePrescaler_8); Clr_NRF24L01_CE; NRF24L01_Write_Buf(NRF24L01_WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH); Set_NRF24L01_CE; while(NRF24L01_IRQ!=0); //程序就停在这里了!!!! sta=NRF24L01_Read_Reg(STATUS); NRF24L01_Write_Reg(NRF24L01_WRITE_REG+STATUS,sta); if(sta&MAX_TX) { NRF24L01_Write_Reg(NRF24L01_FLUSH_TX,0xff); return MAX_TX; } if(sta&TX_OK) { return TX_OK; } return 0xff; } |
|
相关推荐
6个回答
|
|
自己做沙发~~~~
|
|
|
|
|
|
我们的例程是要检测ACK的,开启自动ACK,请问你这个切换到TX以后,另外一个板子会同时切换到RX么?
|
|
|
|
|
|
|
|
如果开了RX_DR中断,接收到数据后,IRQ引脚会变为低电平。配置为发射模式之前,得让IRQ引脚变为高电平:1. 掉电;2. 清空RX FIFO;3. 清除STATUS寄存器内的中断标志。
NRF24L01_Write_Reg(WRITE_nRF_REG + CONFIG, 0x00); /* 掉电 */ NRF24L01_Write_Reg(FLUSH_RX,0xFF); /* 清空RX FIFO */ status = NRF24L01_Read_Reg(NRFRegSTATUS); /* 读取状态寄存器的值 */ NRF24L01_Write_Reg(WRITE_nRF_REG+NRFRegSTATUS, status); /* 清除中断标志 */ 执行以上代码后,IRQ会变为高电平,然后再配置为发射模式。 |
|
|
|
发送模式切换为接受呢? 需要怎么修改
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2568 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2360 浏览 5 评论
3207 浏览 3 评论
2836 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2787 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
662浏览 1评论
898浏览 0评论
1020浏览 0评论
665浏览 0评论
494浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 15:05 , Processed in 1.016845 second(s), Total 59, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号