完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
[C] 纯文本查看 复制代码 while(1) { numm(); if(num==1) { Delay(10); //去抖if(num==1) { TxBuf[0] =1 ; tf = 1 ;} while(num==0); Delay(10); while(num==0); } if (tf==1) {nRF24L01_TxPacket(TxBuf);// Transmit Tx buffer dataTxBuf[0] = 0x00; GPIO_ResetBits(GPIOB, GPIO_Pin_5);//TxBuf[2] = 0x00;tf=0;Delay(1000); } // GPIO_SetBits(GPIOB, GPIO_Pin_5);//***********************************************************************************************SetRX_Mode();nRF24L01_RxPacket(RxBuf); if(RxBuf[0]){ GPIO_ResetBits(GPIOB, GPIO_Pin_5);if(RxBuf[0]==1){ //GPIO_SetBits(GPIOB, GPIO_Pin_5);GPIO_ResetBits(GPIOB, GPIO_Pin_5);}Delay(100);}RxBuf[0] = 0x00;//RxBuf[2] = 0x00; }/****************************************************************************************************//函数:void SetRX_Mode(void)//功能:数据接收配置 ****************************************************************************************************/void SetRX_Mode(void){MODE_CE(0);SPI_RW_Reg(WRITE_REG1 + CONFIG, 0x0f); // IRQ收发完成中断响应,16位CRC,主接收MODE_CE(1); Delay1(130);}/***********************************************************************************************************//函数:void nRF24L01_TxPacket(unsigned char * tx_buf)//功能:发送 tx_buf中数据**********************************************************************************************************/void nRF24L01_TxPacket(unsigned char * tx_buf){MODE_CE(0);//StandBy I模式SPI_Write_Buf(WRITE_REG1 + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); //SPI_Write_Buf(WRITE_REG1 + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 装载接收端地址SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据//SPI_RW_Reg(WRITE_REG1 + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送SPI_RW_Reg(WRITE_REG1 + CONFIG, 0x0e);MODE_CE(1); //置高CE,激发数据发送Delay1(10);}/******************************************************************************************************//函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)//功能:数据读取后放如rx_buf接收缓冲区中******************************************************************************************************/unsigned char nRF24L01_RxPacket(unsigned char* rx_buf){ unsigned char revale=0;u8 status;//sta=SPI_Read(STATUS);// 读取状态寄存其来判断数据接收状况status=SPI_Read(READ_REG1+STATUS);// 读取状态寄存其来判断数据接收状况if(status & 0x40)// 判断是否接收到数据{ MODE_CE(0);//SPI使能//SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO bufferSPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH); //从接收缓冲区里读出数据 //rx_buf[1]=1;revale =1;//读取数据完成标志}//SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志SPI_RW_Reg(WRITE_REG1+STATUS, status); //清除07寄存器标志return revale;} |
|
相关推荐
9个回答
|
|
|
慢慢调试。。。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
接收部分; unsigned char nRF24L01_RxPacket(unsigned char* rx_buf) { unsigned char revale=0; u8 status; status=SPI_Read(READ_REG1+STATUS); // 读取状态寄存其来判断数据接收状况 //status读出的值老是0x0e,发送部分没有问题。 if(status & 0x40) // 判断是否接收到数据 { MODE_CE(0); //SPI使能 SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH); //从接收缓冲区里读出数据 revale =1; //读取数据完成标志 } SPI_RW_Reg(WRITE_REG1+STATUS, status); //清除07寄存器标志 return revale; } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
我也是遇到发射能够检测到状态寄存器的值是0x2e,接收模式就一直是0x0e
|
|
|
|
|
|
请问解决的了么,我跟你情况一样
|
|
|
|
|
|
请问解决了么
|
|
|
|
|
只有小组成员才能发言,加入小组>>
925 浏览 0 评论
如何使用STM32+nrf24l01架构把有线USB设备无线化?
3087 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2986 浏览 5 评论
3845 浏览 3 评论
3310 浏览 8 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
1266浏览 1评论
1212浏览 0评论
882浏览 0评论
973浏览 0评论
925浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:25 , Processed in 1.117003 second(s), Total 93, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2605