完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
请教一下,想用51单片机实现NRF24L01之间的无线通信,主机上有按键按下时,将按键对应的数字发出去,从机收到数字判断是否和自身编号相同,若相同则对应从机将测量得到的某数据发送给主机,即实现主机到从机,从机到主机的无线通信。。。。。。该设想在最简单的无线通信程序中可以实现(即不加入其他测量数据的函数,仅仅是发送固定数据),但一旦加入测量数据的函数,从机发送给主机的数据信息主机就无法接收到,不知道是为什么,求教诸路大神指点一下。
主机主函数: void main() { uint i = 0; uint key; CE = 0; SCK = 0; CSN = 1; Serial_Init(); //初始化串口 while(1) { uint flag=1,flag1=1; //先检测是否有按键按下,若有则发送该按键对应的数字给从机 while(flag) { key=keyscan(); if((key==1)|(key==2)) flag=0; } TX_Mode(); Delay(100); if(key==1) { LED0=0; Transmit(Tx_Buf1); Serial_SendString(Tx_Buf1); } if(key==2) { LED1=0; Transmit(Tx_Buf2); Serial_SendString(Tx_Buf2); } while(CheckACK()); Delay(100); //****************接收模式************// RX_Mode(); Delay(100);//防止编译警告 while(flag1) { if(nRF24L01_RxPacket(Rx_Buf)) { Serial_SendString(Rx_Buf); flag1=0; } else { LED2=0; continue; } } } } 从机主函数: void main( ) { uchar status; uchar flag=1; uchar k; //初始化NRF24L01 CE = 0; SCK = 0; CSN = 1; Serial_Init(); //串口初始化 Init_ADXL345(); //初始化ADXL345 #if MODE PcdReset(); PcdAntennaOff(); PcdAntennaOn(); #endif while(flag) //若有卡刷卡则读出卡号并跳出循环,若无卡,则一直循环,后面的程序不执行 { for(i=0;i<8;i++) { Tx_Buf=1; } status = PcdRequest(PICC_REQALL, g_ucTempbuf); if(status != MI_OK) { continue; } status = PcdAnticoll(g_ucTempbuf); if(status != MI_OK) { continue; } //读出卡号,前4个字节 for(i=0;i<2;i++ ) { CardNum = g_ucTempbuf; Tx_Buf=g_ucTempbuf; } flag=0; } //LED=0; while ( 1 ) { //先处于接收模式,收到主机发出的按键操作对应的数对比之后再转化为发送模式,对比不相等则后续操作不执行 RX_Mode(); Delay(100);//防止编译警告 if(nRF24L01_RxPacket(Rx_Buf1)) { if((Rx_Buf1[0]==0x01)|(Rx_Buf1[0]==0x02)) // if(Rx_Buf1[0]==0x02) { LED=0; Serial_SendString(Rx_Buf1); } // else // LED=0; } else continue; #if MODE Multiple_Read_ADXL345(); //调用该函数,九轴读取姿态数据存放在BUF中 //LED=~LED; Delay(100); for(i=0;i<6;i++) { if(BUF==0) { BUF=1; } Tx_Buf[2+i] = BUF; } //发送 模式代码 让从机发送10000次,因为找不到退出循环的条件所以没有用while TX_Mode(); Delay(100); for(k=0;k<10000;k++) { Transmit(Tx_Buf); Serial_SendString(Tx_Buf); while(CheckACK()); //LED=0; Delay(100); LED=1; } #endif } } |
|
相关推荐
3个回答
|
|
网上类似的程序一大片,多找几个看看
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
物联网工程师必备:怎么选择不同的无线连接技术,本指南帮你忙!
3291 浏览 1 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】WIFI功能测试
3943 浏览 0 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】Arduino的替代SublimeText3+STino
3448 浏览 0 评论
使用端口扩展器轻松高效地向IIoT端点添加具有成本效益的子节点
4014 浏览 1 评论
20689 浏览 11 评论
模组有时候复位重启后输出日志为“REBOOT_CAUSE_SECURITY_PMU_POWER_ON_RESET”的原因?
811浏览 2评论
1041浏览 2评论
1041浏览 1评论
1154浏览 1评论
387浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 04:55 , Processed in 1.449217 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号