完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
//发送程序
void NRFSetTxMode(u8*TxDate) { CE=0; NRFWriteTxDate(WRITE_REG+TX_ADDR,TxAddr,5); //发送地址设置 NRFWriteTxDate(WRITE_REG+RX_ADDR_P0,TxAddr,5); NRFWriteTxDate(W_TX_PAYLOAD,TxDate,4); //写入数据 NRFWriteReg(WRITE_REG+EN_AA,0x01); //设置为0X00就能发送成功,返回0X2E NRFWriteReg(WRITE_REG+EN_RXADDR,0x01); //使能接受通道0应答 NRFWriteReg(WRITE_REG+SETUP_RETR,0x0a); //自动重发设置 NRFWriteReg(WRITE_REG+RF_CH,0x40); //射频通道设置 NRFWriteReg(WRITE_REG+RF_SETUP,0x07); //传输设置速率 NRFWriteReg(WRITE_REG+CONFIG,0x0e); //上电,发射模式 CE=1; delay_ms(100); } u8 CheckACK() { sta=NRFReadReg(STATUS); UART1_sendchar(sta); //打印状态值 if(sta&0x30) // STATUS寄存器的4、5位置1 { NRFWriteReg(WRITE_REG+STATUS,0xff); // 清除TX_DS或MAX_TR中断标志 CSN=0; NRFSPI(FLUSH_TX);//清空FIFO CSN=1; return(0); } else return(1); } void main() { unsigned char i=0; gpio_init(); Init_UART1(); delay_ms(100); NRF24L01Int(); //初始化引脚 delay_ms(10); NRF24L01Int(); while (1) { NRFSetTxMode(TxDate);//发送数据 while(CheckACK()); //检测是否发送完毕 } } //接受程序 void NRFSetRXMode() { CE=0; NRFWriteTxDate(WRITE_REG+RX_ADDR_P0,TxAddr,5); //接受通道0使用 NRFWriteReg(WRITE_REG+EN_AA,0x01); //使能通道0应答 NRFWriteReg(WRITE_REG+EN_RXADDR,0x01); //使能接受通道0 NRFWriteReg(WRITE_REG+RF_CH,0x40); //选择射频通道 NRFWriteReg(WRITE_REG+RX_PW_P0,4); //通道的有效数据宽度 NRFWriteReg(WRITE_REG+RF_SETUP,0x07); //数据传输数率 NRFWriteReg(WRITE_REG+CONFIG,0x0f); //上电、接受模式 CE = 1; delay_ms(10); } void GetDate() { u8 i; sta=NRFReadReg(STATUS); if(sta%0x40) //是否接受到数据 { CE=0; NRFReadRxDate(R_RX_PAYLOAD,rx_buf,4); //读数据 for(i=0;i<4;i++) UART1_sendchar(rx_buf); //打印给串口 NRFWriteReg(WRITE_REG+STATUS,0xff); //清状态寄存器 CSN=0; NRFSPI(FLUSH_RX); //清空FIFO CSN=1; } } void main() { u8 i=0; gpio_init(); Init_UART1(); delay_ms(100); NRF24L01Int(); delay_ms(100); while (1) { NRFSetRXMode();//设为接收模式 GetDate();//接收数据 } } 现象:1:2个模块写在某一寄存器写数据,再读出来是一样的(说明读写时序和24L01模块是好的,对吧?) 2:2个模块都烧写发射程序,改这句 "NRFWriteReg(WRITE_REG+EN_AA,0x00); //不使能通道0应答”,改为0x00,取消自动应答后都能发射出去,状态值为0x2e. 问题: 烧写上面的发射程序和接受程序“NRFWriteReg(WRITE_REG+EN_AA,0x01);”都使能自动应答,发射端:发射状态值1E,接受端:接受不到数据。请问我的代码有问题么?该怎么调试?我的方法没错吧? |
|
相关推荐
1个回答
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2550 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2335 浏览 5 评论
3166 浏览 3 评论
2807 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2768 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
620浏览 1评论
863浏览 0评论
981浏览 0评论
632浏览 0评论
458浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 00:03 , Processed in 1.013085 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号