nRF24L01单片机通信的总结

发布者:数据梦行者最新更新时间:2018-07-14 来源: eefocus关键字: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即发送时所用的载波频率就是2400+20=2420MHz。当然也只有设为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单片机通信的总结

上一篇:单片机中的几种通信方式
下一篇:上位机与单片机的通信问题

推荐阅读最新更新时间:2024-03-16 16:08

单片机多机通信系统稳定性的研究
摘 要: 列举单片机多机通信系统在使用MAX485芯片作为通信接口时的常见问题;分析传输数据不稳定的因素;介绍提高通信稳定性的有效方法。其中包括RS485芯片的硬件分析和通信协议的软件设计。 关键词: 通信协议 异步通信 噪声 概 述   单片机在当今的仪表及工业测控设备上应用非常广泛。其功能强大、外围接口电路简单,在构成分布式系统时,其优越性更显突出。在分布式系统中,分机常采用多机通信方式,由于RS-485(以下简称485)通信接口的传输距离远,连线少,所以被认为是一种很好的通信模式。然而,在实际应用过程中,若使用不当,485接口会出
[工业控制]
一种单片机多机通信系统的设计
1 引言 随着单片机和计算机技术的不断发展,单片机的应用也从独立的单机向网络发展,由计算机和单片机构成的多机网络系统已成为单片机技术发展的一个方向。二者的结合,充分发挥了单片机在实时数据采集和数据管理上的优点。单片机在计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理等都有广泛地应用,已渗透到我们生活的各个领域。许多应用都涉及到单片机多机通信。然而,单片机对网络数据的处理方式不同于通用计算机系统,尤其是有的单片机只提供8 位的数据收发接口,这在一定程度上阻碍了单片机在网络方面的应用。因此,采用单片机技术与计算机网络技术相结合的办法,对单片机多机通信系统进行研究,在设计单片机网络的通信协议的基础上,系统网络拓扑结构采用
[单片机]
一种<font color='red'>单片机</font>多机<font color='red'>通信</font>系统的设计
用ZHX1010实现单片机之间的红外通信
摘要:ZHX1010是ZiLOG公司的红外收发芯片,该芯片在1米范围内的最高速度可达115.2kbps,2.4V~5.5V的宽电源范围可使其与各种电压的CPU进行方便的接口。文中介绍了ZHX1010的特点、结构和使用方法,并给出了它与AT89C51的接口应用。 关键词:红外通信 单片机 ZHX1010 引言 目前的单片机应用系统之间一般都使用UART进行通信,通过电平转换口将信号变成RS232或RS485信号来进行直接通信。这种有线通信的好处是通信误码率比较低,受干扰的机率相对较少,但对于要经常插拔通信 线的系统来说,有线通信反而容易出现故障。笔者在开发织机控制系统时,要用一个手持式编程器来修改控制系统的工作参数。在实际使用
[单片机]
STC89C52RC单片机NRF24L01无线通信程序,收发一体
本设计由两块STC89C52RC单片机组成,通过NRF24L01实现最廉价的无线通信。 每块单片机都是集收发于一体,先初始化会在OLED上显示是否初始化成功, 然后通过按键可选择收发模式,并在OLED屏幕上显示出来 最后选择串口调试助手,打开串口给单片机发送信息,单片机接收到后再通过NRF24L01向另一块单片机发送 接收成功后会将接收到的信息显示在OLED上。 OLED显示屏较1602液晶显示屏清楚,可现实的内容丰富,可以建立自己的字库 并且占用的引脚较少 单片机源程序如下: #include reg52.h #include oled.h #include bmp.h #include nrf24l01.h #incl
[单片机]
基于单片机的可视对讲门禁系统通信设计
   本文设计了一种楼宇无线可视对讲电路,该电路以单片机为控制器核心,再连接外围电路,通过无线数字传输电路来传输视频信号,可以达到 50~200 m的无线传输距离。该设计优点是在单张拍摄的基础上,获得图像的连续显示,它真正意义上实现了图像信号的无线数字传输。   1 整体设计方案   系统结构主要由3部分组成:上位机系统、下位机系统和通信系统。这三部分共同完成了主控制器与分控制器的信息交换,达到楼宇监控的目的。主控制器和分控制器通过无线数字传输模块SRWF进行数据和命令的传输。该通信模型属于一对多的通信模式,其整体方框图如图1所示。      主控制器的主控芯片为AT89C51,通过键盘获得访问的房间
[单片机]
PIC单片机内部SPI通信接口的使用方法
#include pic.h #define uchar unsigned char #define uint unsigned int #define cs RC2 #define dout RC4 #define nop() asm( nop ) __CONFIG(0x3B31); const uchar table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar da ta_temp; void delay(uint x); void init(); void didi
[单片机]
利用89C51单片机实现红外线通信接口电路控制
  在通信系统中,常利用非电信号来传递控制信号和数据,以实现遥控或遥测的功能红外通信,具有控制简单、实施方便,传输可靠性高的特点,是一种较为常用的通信方式。红外通信利用950 nm近红外波段的红外线作为传递信息的媒体,发送端采用脉时调制方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送,接收端将收到的光脉冲转换成电信号。再经过放大、滤波处理后送给解调电路,还原为二进制数字信号后输出。   1 系统的总体构成   红外通信系统采用红外光传输及无限工作机制,其组成结构主要包括:红外发射器,通信信道,红外接收器三大部分组成。   (1)完成信号的电光变换并向空间发射红外脉冲   红外发射器的关键是红
[单片机]
利用89C51<font color='red'>单片机</font>实现红外线<font color='red'>通信</font>接口电路控制
单片机多机通信的交通灯设计
由于微机技术的飞速发展和控制系统的复杂化,多机通信的应用越来越广泛,特别在一些对工业过程的控制中,多机通信已经成为通信控制领域的主流通信方式。 本文针对目前单片机书籍(包括教材)很少介绍多机通信的实现技术的情况,在交通灯控制系统的基础上设计了一个交通灯控制网络系统,以此为实例给出了单片机多机通信的解决方案。 1 单片机多机通信的基本原理 计算机之间的通信除了点对点通信外,还有一机对多机或多机之间的通信,构成计算机网络,其中主从式多机通信是比较常用的一种方式。在主从式多机通信系统中,只有一台主机,但可以有多台从机。主机发送的信息可以传送到各个从机或指定从机,从机发送的信息只能为主机所接收,各从机之间不能直接通信。主机通常
[单片机]
<font color='red'>单片机</font>多机<font color='red'>通信</font>的交通灯设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved