单片机与电脑无线通信用NRF24L01无线通信与电脑连接

能不能通过NRF24L01让单片机与电脑进行通信_百度知道
能不能通过NRF24L01让单片机与电脑进行通信
我有更好的答案
可以,但必须都通过单片机,电脑串口-单片机-NRF24L01
NRF24L01-单片机
采纳率:88%
来自团队:
可以啊!NRF24L01就是无线通信。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
中国电子DIY
科技成就未来
亲爱的游客,欢迎!
已有账号,请
如尚未注册?
在线时间:8:00-16:00
000-000-0000
电子DIY手机版
随时随地掌握网站动态
扫描二维码
免费获取邀请码
<div class="mn"
stm32用nrf24l01与上位机通讯??
我在stm32开发板上接nrf24l01无线模块,电脑端通过一个串口模块接一个nrf24l01,开发板接收数据问题不大,发送数据怎么修改还是有问题,请问有人有代码吗,或者弄过24l01和电脑通讯的吗????急求!!!!
先搜索本坛相关的帖子 看看!
先搜索本坛相关的帖子 看看!
就是没找到所以发帖的。。。
默默地聪地板爬过,感谢楼主
[音箱DIY论坛]
[拆机乐园/修机达人]
[音源/DAC/系统调校]
[拆机乐园/修机达人]
智能小车/机器人/电赛
一周热帖排行最近7x24小时热帖
客服电话:000-000-0000
客服邮箱:
周一至周五 9:00-18:00
公司地址:深圳市南山区美丽湾大厦B座
Powered by温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
爱生活等于爱自己
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
今天刚调试好,先看图吧!这张是AT89C2051控制NRF24L01+做发射调试。&看看NRF24L01细节吧!&这是LCD屏显示:&&AT89S52做接收测试:&正在接收时的显示:&接收到数据后显示32个数据值:&&&无线模块NRF24L01+应用上篇结束,敬请期待NRF24L01+下篇的调试部分。。。。
阅读(1151)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'51单片机应用之............无线通讯模块NRF24L01+(一)基础知识篇',
blogAbstract:'',
blogTag:'51单片机应用',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:1,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'爱生活等于爱自己',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}查看: 56385|回复: 28
nRF24L01单片机通信的总结--看了就会用了
  1周时间,我从一个没用过STC单片机,不知道什么叫SPI接口的“文盲”,把nRF24L01的整个通信过程弄到完全没有bug.。兴奋之余来小屁一下。给那些正在奋斗着这个牛逼的芯片的小牛们小炫一下。希望有所帮助。屁话少说。正题:
  基本的东西我理解了,那就是:1.用5根线的SPI接口向2401发送数据或指令。2.芯片在每次上电的时候都需要进行一番配置。这些配置数据,就是所谓的指令了。3.配置完成后知道芯片处在哪个模式。并且知道它将要转向哪个模式。4.通讯协议。5.观察现象。
  好了,小牛们一定急切想知道自己的程序问题出在哪里了,再小白一点的一定想急切的知道如何配置才能让它工作。更小白一点的一定想知道这个芯片的各个模式之间是怎么联系的。又是如何进行相互转化的。别急,一个一个说。
  要说什么最重要,你们不会想到其实是4.通讯协议。 
  为什么呢,你们又知道在这里的通讯协议是作什么用的呢。 举个简单的例子,我刚开始设计的时候,一心想让一个作为发送模块,每隔一秒发送一次数据,而另一个则作为接收模块,不间断的检测收到数据没有。 这就是一个简单的通讯协议,它是我们的目标。是我们的方向。当然真正的通讯协议绝对不会这么简单的几句话。它告诉你,你理想中的模块应该充当什么角色。是接收?是发送?还是接收完了马上发送。作为开发阶段,当然是越简单的协议,正确性就越容易验证,废话不说,那就按我说的“通讯协议”来设计吧。
  先说发送模式吧。
  要到发送模式,要经历几个变化。第1,上电,上电完了芯片其实还是在powerDown模式,因为芯片为了省电,它需要通过软件来控制开机或关机。powerDown模式就是所谓的待机模式了。这个模式理所当然是最省电的。它除了省电以外还能干吗呢?配置!对最重要的配置。就是可以通过 SPI口向它发送数据,它是可以接收到的,并且可以正确写入到指定的寄存器中的。一般我们在初始化中一开始就可以配置了,而此时芯片正是处在这个模式。
  第2.我们的目标是要把它配置的能发送出去数据,而且能被目标设备正确接收。所以这中间涉及的寄存器(当然是2401里自带的寄存器区了)有:
     1@发送到的目标地址。 说地址其实是虚的,它就相当于一个钥匙和一把锁一样。当你在接收设备里边规定了一个地址以后,那么接收到的数据只有带了这个地址的包才会被正确接收。所以说这里的发送目标地址就是接收设备里的本机地址。只要设计时两个地址相同,就不会接收不到。
     2@接收到的地址。 这个名字起的不是很好哈,有点误导人。说白了就是一个本机地址了。在纯发射机里,它并不是必要的。因为它从来不接收数据~~~这里写上,是因为:发射模式还有个东西,就是自动应答功能,(当然也是通过配置才能启用的,不配置则不会自动应答,也就不需要知道本机地址了)。
     3@说到自动应答,那就先说它吧。一般我们会想,发送出一帧数据后是不是应该等待另一方回应个数据呀?想法是好的,但我说了,有通讯协议在控制。因为我们这里只想设计成一直发送而不管对方是否收到。所以自动应答可以不去配置,让它开机默认即可。但实际上我们的通讯协议可能很复杂,肯定不会是一直在发送。并且,它发送完一帧后,确实应该转为接收模式来等待对方发送应答数据过来。我们人为的当然可以自己来个模式跳转,但是有自动应答了,也就是说,当你设定开启自动应答了,那么在它发送完一包数据后,芯片会立即转为接收模式了。 《在这里我也仍有一点没理解,就是,当它收到应答后会变成什么模式呢,是自动再回到发送模式还是停留在接收模式。》 
     4@有自动应答了,那么就不能少了自动重发功能了。为什么呢。首先理解为什么会自动重发,就因为它处在自动应答模式时,通过接收数据来判定上次的数据是否有接收者成功接收了,就像我送出了一封信,如果你没有回信我是不是会想你可能没收到信,我需要再发一次。就是这个道理 。自动重发寄存器8位被分成两个4位的小区域,高4位存的是重发间隔时间,也就是说总共可以设定为16种不同的间隔,在这个间隔时间过后仍没有回应才再次重发。低4位好说,就是存一个最大重发次数。则最大可以设为15,即重发15次后仍然没回应那就不理你了,不再重发了。并且还会产生一个中断呢。最后再讲中断部分。 这里应该注意的是,当自动应答功能禁止时,就没有自动重发了,不管你设了重发多少次都不管用了。所以是互相影响的。还有就是重发次数设为0次,则相当于禁自动重发了,这不是显然的么。嘿嘿。
     5@最基本的配置,,频率。这个芯片不光能以2.4Ghz的载波发射呢,它的带宽为2.4G----2.512G呢。这中间有一百多M的频带,可以划分成2M一个的信道。这个寄存器中的值就标明你想工作在哪个信道上啦,只有设置为同频的设备才能接收的到很容易理解吧。比如你设为10信道,则10*2=20M即发送时所用的载波频率就是0MHz。当然也只有设为2420M的接收设备才能接收的到了。
     6@功率,数据速率。这是什么呢?原来2401里边也有自动增益控制部分,我们可以设定一个合适的功率来发射数据,第一可以在能耗上有利,另一方面对通信距离的控制也是很重要的。比如我只想在2米内能够通信,但2401最大的通信距离可以达到上百米,显然需要降发射功率来降低通信距离。可选的功率值有 0Dbm,-6dBm, -12dBm,-18dBm, 显然0在这里是最大的发射功率了。开发时尽可能设为0.如果设为0时,接收者都接收不到数据,那肯定是芯片坏了,就不用考虑降低功耗来通信了。这四档功率,通信距离从远到近,从几十米到几cm.并且在通信过程中还可以动态更改这个功率值,以达到最佳匹配的效果。数据速率是什么呢,刚开始我跟SPI接口的速率搞混了,想着,一个4M的单片机跟芯片通信速率怎么可能到这么高的。其实不是,这个速率就是加在载波上的数据的码率了。有两个可选值,1Mb/s,2Mb/s.也就是说,1秒钟能发送出去多少个高低电平。
     以上这些配置命令之后就可以通过简单的指令转向发送模式了。下面就看一下,配置的伪指令吧:
    1. sendCommand(TxAddress_5) .因为地址是3到5字节可选的,这里选择了5字节的地址
    2. sendCommand(LocalAddress_5),本机地址如果想要开启自动应答则必需与发射地址相同,即LocalAddress==TxAddress..不开启则不需要相等。
    3. sendCommand(EnableAutoAck_0),因为芯片自带了6个通道,可以同时工作同时接收不同的数据,所以这里的自动应答也有相应的6个bit位来分别控制。这里只允许通道0自动应答。
    4. sendCommand(EnableAutoTransmit) .只要上边一句配置开了自动应答,这句就应答生效。即自动重发.
    5.&&sendCommand(RF_CH). 这一句设置发射频率。即设定信道。一般默认的就是0信道了,也即2.4G的载波。
    6.sendCommand(RF_Power). 设定发射速率,还有发射功率就设成0dBM吧。
    以上这些是发射模式的必要配置了。如果不涉及接收,那么现在就可以转向发射模式。
    7.sendCommand(Config); 通过 config寄存器中的开机控制位 powerup=1,转向空闲模式,config^0=0.转向发射模式。
    8.sendCommand(TxBuffer);  填充发送数据到缓冲区里边。
    8.CE=1;  这是一个引脚,用来控制从空闲模式向发送或接收模式跳转的.仅将相应位设为发送或接收模式不行,芯片现在只欠东风了,就是CE=1并保持最少10us时间后。就会开始发送数据了。
    一个帧数据发送完成后会产生中断。这些中断是可以屏蔽的,就像单片机的中断允许控制一样。控制位在config寄存器中。
    这里还可能产生另一个中断,就是重发次数达到上限了,你设了重发3次,那么重发3次以后还没收到应答就产生中断了。同样也是可屏蔽的。
 下面说接收模式配置吧。
  待续一下。
还在设计硬件,来看看nrf24l01好调不,看你们写的都脑大了,楼主继续啊,请问你的手册也是英文的吗?求一个中文的手册。。谢谢
楼主,想问一下NRF24L01和5V单片机相连要串电阻吗?串多大?
可以学习下。
楼主,想问一下NRF24L01和5V单片机相连要串电阻吗?串多大?
nrf最大承受电压只有3.6v,建议还是用一个3.3v的恒压芯片吧,电路也简单,加两个电容就行了
挺深入浅出的科普帖子,赞一个!
不知道为啥,没有续帖了?
期待下文。
很好的总结!
谢谢楼主分享
楼主你好,我用51单片机控制2401,要设置1Mbps,发射功率为4dBm,请问怎么写程序。
哇哇。楼主很好,很好的经验!
没有其他程序?
挺深入浅出的科普帖子,赞一个!
不知道为啥,没有续帖了?
期待下文。
请问下文在哪?我找不到
感谢有思路
亲,有没有两个51之间通信的程序
楼主快点更啊,我很需要您这种详细的讲解
讲的很明白,兄弟,上个代码分享就完美了
下一集呢楼主坐等更新啊
**** 作者被禁止或删除 内容自动屏蔽 ****
24L01最高发射功率只能有0dBm
总结的很好,我还像看看& &前导码、同步字这些,怎么就没什么人问呢?
14年的帖子,作者还没续贴!
Powered by

我要回帖

更多关于 单片机如何连接电脑 的文章

 

随机推荐