完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
用了好几天时间把发送调好,可是接收怎么也调不好,求指导啊
NRF24L01肯定是好的 发送部分的mcu是15L204EA 每次发送后STATUS=0X2E FIFO_STATUS=0X11; 寄存器配置是 EN_AA =0X00; EN_RXADDR=0X01; SETUP_RETR=0X00;自动无限循环重发 接收部分是89c52 贴程序啊 void main(void) { unsigned char tf =0; init_io(); init_lcd(); LED1 = 0; LED2 = 0; Delay(6000); LED1 = 1; LED2 = 1; while(1) { KEY2=1; KEY1=1; while(KEY2==0||KEY1 ==0) { IRQ=1; SPI_RW_Reg(WRITE_REG+STATUS,0xff); if(KEY1 ==0) { TxBuf[0] = 0xAA ; } else if(KEY2 ==0 ) { TxBuf[0] = 0x55 ; } nRF24L01_TxPacket(TxBuf); mark_tx(); tf = 1; } //以上是发送部分 正常 if(tf) { tf=0; SetRX_Mode(); //接收模式 IRQ=1; while(IRQ==0); inerDelay_us(400); } IRQ=1; if(IRQ==0) //现在就是卡在这里了 IRQ永远不等于0, { LED2=0; sta=SPI_Read(STATUS); //读取状态寄存器 display(); //1602用16进制显示状态寄存器 SPI_RW_Reg(WRITE_REG+STATUS,0xff); //清楚状态寄存器 if(sta&0x40) //判断状态寄存器是不是的RX_DR是不是置1 { SPI_Read_Buf(RD_RX_PLOAD,RxBuf,TX_PLOAD_WIDTH); //数据读到RxBuf if( RxBuf[0]==0xAA) { LED2=0; Delay(6000); LED2=1; } else if( RxBuf[0]==0x55) { LED2=0; Delay(6000); LED2=1; } RxBuf[0]=0; } else //如果Rx_DR没有置1 则清除所有状态和FLUSH { CLR_ALL(); SetRX_Mode(); IRQ=1; while(IRQ==0); } } display(); } } |
|
相关推荐
8个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
现在就是卡在这里了 IRQ永远不等于0 这句上一行IRQ=1;干什么的,不卡那就不正常了
|
|
|
|
|
|
这个IRQ是检测有没有收到信息,如果收到会置0 我修改掉这个也收不到信息 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
请问楼主,设定发射端寄存器EN_AA =0X00; EN_RXADDR=0X01; SETUP_RETR=0X00,但是每次发送完读取寄存器STATUS读到的不是0x2E而是0x1F是什么情况...楼主能指教一下吗?用的MCU是C8051f41 |
|
|
|
|
|
我也想知道为什么。。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
435 浏览 0 评论
464 浏览 0 评论
450 浏览 0 评论
806 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
748 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
17011 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 05:19 , Processed in 0.859950 second(s), Total 86, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1940