发 帖  
原厂入驻New
[问答] 请问NRF24L01的应用有哪些?
84 nRF24L01
分享
<span style="widows:2;text-transform:none;text-indent:0px;display:inline !important;font:18px 微软雅黑;white-space:normal;orphans:2;float:none;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;">好,还有发一个包和收一个包数据的代码,给大家帖出来.</span> <div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"><br />
</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;">
<div>//启动NRF24l01发送一次数据</div>
<div>//txbuf:待发送数据首地址</div>
<div>//返回值:发送完成状况</div>
<div>u8 NRF24L01_TxPacket(u8 *txbuf)</div>
<div>{</div>
<div>u8 sta;</div>
<div><br />
</div>
<div><span style="color:#ff0000;">NRF24L01_CE=0;</span></div>
<div><br />
</div>
<div> <span class="Apple-converted-space"> </span><span style="white-space:pre;" class="Apple-tab-span"> </span>NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//写数据到TX BUF  32个字节</div>
<div><br />
</div>
<div> <span style="white-space:pre;" class="Apple-tab-span"> </span><span style="color:#ff0000;">NRF24L01_CE=1;//启动发送</span></div>
<div><span class="Apple-converted-space"> </span>  </div>
<div><span style="color:#ffa500;">while(NRF24L01_IRQ!=0);//等待发送完成</span></div>
<div><br />
</div>
<div>sta=NRF24L01_Read_Reg(STATUS);  //读取状态寄存器的值</div>
<div><br />
</div>
<div>   </div>
<div>NRF24L01_Write_Reg(WRITE_REG+STATUS,sta); //清除TX_DS或MAX_RT中断标志</div>
<div><br />
</div>
<div>IF(sta&MAX_TX)//达到最大重发次数</div>
<div>{</div>
<div>NRF24L01_Write_Reg(FLUSH_TX,0xff);//清除TX FIFO寄存器 </div>
<div>return MAX_TX; </div>
<div>}</div>
<div>if(sta&TX_OK)//发送完成</div>
<div>{</div>
<div>return TX_OK;</div>
<div>}</div>
<div>return 0xff;//其他原因发送失败</div>
<div>}</div>
<div><br />
</div>
</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;">记住要记住<span style="color:#ff0000;">有颜色</span>的这几行.</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;">然后是收一包数据.</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"><br />
</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;">
<div>u8 NRF24L01_RxPacket(u8 *rxbuf)</div>
<div>{</div>
<div>u8 sta,sta1;</div>
<div><span class="Apple-converted-space"> </span>   <span style="white-space:pre;" class="Apple-tab-span"> </span><span class="Apple-converted-space"> </span>  </div>
<div>sta=NRF24L01_Read_Reg(STATUS);  //读取状态寄存器的值</div>
<div><br />
</div>
<div><span class="Apple-converted-space"> </span>   <span style="white-space:pre;" class="Apple-tab-span"> </span> </div>
<div><span style="color:#ff0000;">NRF24L01_Write_Reg(WRITE_REG+STATUS,sta); //清除TX_DS或MAX_RT中断标志</span></div>
<div><br />
</div>
<div>Clear_line(18,0,30);</div>
<div>sta1=NRF24L01_Read_Reg(STATUS);</div>
<div>Bit_show(18,11,sta1);</div>
<div><br />
</div>
<div><br />
</div>
<div>if(sta&RX_OK)//接收到数据</div>
<div>{</div>
<div>NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//读取数据</div>
<div>NRF24L01_Write_Reg(FLUSH_RX,0xff);//清除RX FIFO寄存器 </div>
<div>return 0; </div>
<div>}<span style="white-space:pre;" class="Apple-tab-span"> </span><span class="Apple-converted-space"> </span>  </div>
<div>return 1;//没收到任何数据</div>
<div>}<span style="white-space:pre;" class="Apple-tab-span"> </span></div>
</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"><br />
</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"><br />
</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;">看到没有,和发数据不同,这里不用 <span class="Apple-converted-space"> </span><span style="color:#ff0000;">NRF24L01_CE=0</span>和<span style="color:#ff0000;">NRF24L01_CE=1.</span></div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"><span style="color:#ff0000;"><br />
</span></div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"><span style="color:#ff0000;"><br />
</span></div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"><span style="color:#ff0000;">如下几点在调试的时候总结出来的:</span></div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;">
<ol>
<li><span style="color:#ff0000;">如果 TX FIFO 刚好够32个数时,状态寄存器都会显示 0 未满.如再丢进去就会说满了.</span></li>
<li><span style="color:#ff0000;">重启计算机时要记住重起一下NRF24 因为里边的数据还是之前的,除非重写一次.</span></li>
<li><span style="color:#ff0000;">中断位是要写1清0的.</span></li>
<li><span style="color:#ff0000;">如果地址都相同,读出来数据的是频道号数最大的那个频道.就是接收5通道. 大家可以做下实验,看对不对.</span></li>
<li><span style="color:#ff0000;">频道2~5只需写一个8位的地址就行.</span></li>
<li><span style="color:#ff0000;">有时中断产生了,但RX_FIFO会为0,要重读一次.</span></li>
</ol>
</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;">好了.大家如还发现什么都发到帖上去吧.</div>
<div style="widows:2;text-transform:none;text-indent:0px;font:18px 微软雅黑;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;">我丢上两个代码给大家试试.压缩的文件.</div>
TX_COM_NRF2401_TEXT.rar (634.36 KB )
RX_COM_NRF2401_TEXT.rar (635.46 KB )
0
2020-4-23 16:51:43   评论 分享淘帖 邀请回答
24个回答
我的代码如大家只有一台机,可以玩玩读写里边的寄存器.玩这玩意要两台机的,要不也能用现成的51搞个.
2020-4-24 04:53:34 评论

举报

我在室内试过,十多米内没有墙是没有问题的.有墙就不行了,拐个弯都不行.
<br>
2020-4-24 05:04:51 评论

举报

要远点的就玩NRF905吧.有空我帖代码给大家玩玩.
<br>
靠呀,升到两钻级了.祝贺一下.
2020-4-24 05:23:12 评论

举报

2020-4-24 05:32:09 评论

举报

现在玩<span style="font-family:Simsun;line-height:normal;background-color:#d1d9e2;">nrf24l01,借鉴一下楼主的好东西<img src="/static/image/smiley/kindeditor/13.gif" border="0" alt="" /></span>
2020-4-24 05:37:49 评论

举报

<br>楼主&nbsp;在接收函数里
<br>Clear_line(18,0,30);
<br>sta1=NRF24L01_Read_Reg(STATUS);
<br>Bit_show(18,11,sta1);
<br>
<br>这段是什么意思&nbsp;
<br>
<br>Clear_line(18,0,30);
<br>Bit_show(18,11,sta1);
<br>这两个是干什么的?
2020-4-24 06:18:31 评论

举报

还有
<br>程序一直卡在while(NRF24L01_IRQ!=0);//等待发送完成
<br>这里&nbsp;换了引脚后可以是可以运行了&nbsp;第二天又卡在这了
<br>是发射模块的问题还是什么问题&nbsp;
<br>请大神指教
2020-4-24 06:37:46 评论

举报

支持支持,我获益良多
2020-4-24 06:52:37 评论

举报

2020-4-24 07:01:43 评论

举报

2020-4-24 07:08:16 评论

举报

楼主精神可嘉,还学不会的朋友看下我写的帖子:<a href="http://www.openedv.com/posts/list/22270.htm" target="_blank">http://www.openedv.com/posts/list/22270.htm
                                         
                                                                            </a>
2020-4-24 07:16:12 评论

举报

楼主调试时关注得比较细致
2020-4-24 07:33:14 评论

举报

2020-4-24 07:45:19 评论

举报

近来我在用这个二块多钱的东东写个小小的路由代码。又发现很多木有人知道的东东。
2020-4-24 07:50:39 评论

举报

2020-4-24 08:03:32 评论

举报

<br>大神,请问一下有用过NRF24L01做过多机通信方面的应用吗,类似于这样的一个局域网中有几个发射端和接收端,现在要实现每个设备和其他设备交换信息,假入两个设备交换信息完成后,及时以后碰在一起也不会交换数据,这个设备可以自动切换发送和接收模式,大神有做过类似这方面的应用吗?求指导
2020-4-24 08:20:30 评论

举报

只有小组成员才能发言,加入小组>>

12下一页

104个成员聚集在这个小组

加入小组

热门话题

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表