DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1643|回复: 2
打印 上一主题 下一主题

[无线] 利用PIC16F877和nRF24L01芯片设计的无线数据传输系统

  [复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:44:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘 要:介绍了一种利用无线数字传输芯片和单片机构成的无线数据传输系统,讨论了系统的硬件电路设计和软件编程,以及无线数字传输芯片在增强式突发传递模式下通过单片机的控制进行无线数据传输的原理,设计了在增强式突发传递模式下可实现半双工通信的通用电路,并讨论了无线数字传输芯片初始配置和数据发送程序开发的关键技术。运行表明,该系统控制方便、工作稳定,能实现可靠的无线数据传输。
关键词:无线数据传输系统;单片机;nrf24l01芯片;spi
1 nRF24L01芯片的介绍
nRF24L01是单片射频收发芯片,工作于2.4~2.5 GHz ISM频段。工作电压为1.9~3.6 V,有多达125个频道可供选择。可通过SPI写入数据,最高可达10 Mb/s,数据传输率最快可达2 Mb/s,并且有自动应答和自动再发射功能。和上一代nRF2401相比,nRF2401数据传输率更快,数据写入速度更高,内嵌的功能更完备。
芯片内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融进了增强式ShockBurst技术,其中输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-6 dBm的功率发射时,工作电流只有9 mA,接收时工作电流只有12.3 mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。
1.1 nRF24L01引脚介绍
芯片引脚排列见图1。


各引脚具体功能如下:CE为发射和接收的使能端;CSN为SPI的使能端;SCK为SPI时钟输入;MOSI为SPI数据主输从人端;MISO为SPI数据主人从输端;IRQ为中断输出;VDD为电源端,接3 V直流电源;VSS为参考接地端;XC1,XC2为晶振端;VDD_PA给功率放大器供电1.8 V;ANT1,ANT2为天线接口端;IREF为参考电流端。 1.2 nRF24L01的指令结构
nRF24L01所有的配置字都由配置寄存器来定义,这些配置寄存器可通过SPI口访问。
1.2.1 SPI接口设置
SPI接口由SCK,MOSI,MISO及CSN组成。
(1)在配置模式下单片机通过SPI接口配置nRF24L01的工作参数。
(2)在发射或接收模式下单片机SPI接口发送或接收数据。

和SPI接口的指令共有8个,使用每个指令时必须使CSN变低,用完后将其变高。单片机的控制指令从nRF24L01的MOSI引脚输入,而nRF24L01的状态信息和数据信息是从其MISO引脚输出并送给单片机的。利用SPI传数时,他是先传低位字节,再传高位字节,并且在传每个字节时是从高位字节传起的。指令分别是;读寄存器指令,格式是000A AAAA;写寄存器指令,格式是001AAAAA(A AAAA代表寄存器在内存中的地址;读Payload指令;写Payload指令;清发射堆栈指令;清接收堆栈指令;发射数据再利用;空操作。
1.2.2 中断 当nRF24L01的中断源(TX_DS,RX_DR,MAX_RT)被置高时(TX_DS为发送成功标志位,RX_DR为接收数据成功标志位,MAX_RT为自动重发超上限标志位),就会使IRQ引脚置低。可以向状态寄存器写1来清这些中断标志位。通过设置CONFIG寄存器的某些位来屏蔽掉这些中断源,默认情况下,这三个中断源都是允许的。
1.2.3 内存区
下面介绍nRF24L01的内存区,一共24个寄存器,以下选取几个重要的加以介绍。
0号寄存器:第7位是保留位;第6位到第4位分别是TX_DS,RX_DR,MAX_RT屏蔽位,置高能屏蔽相应的中断源;第3位是CRC使能位;第2位是选择CRC长度;第1位是PWR_UP位,高电平为使芯片上电;第0位是发射、接收选择位,高电平是发射,低电平是接收。
1号寄存器:第7和第6位是保留位,第5到第0位是使能通道5到通道0的自动应答,高电平有效。
2号寄存器:第7和第6位是保留位,第5到第0位是使能接收通道地址5到地址0,高电平有效。
4号寄存器:第7位到第4位是设置自动重发的时间,第3位到第0位是设置自动重发的次数。
7号寄存器是状态寄存器,第7位是保留位,第6位是RX_DR位(1:接收堆栈中有了数据),第5位是TX_DS位(1:数据成功发送到接收方),第4位是MAX_RT位(1:达到重发射上限,产生超时中断),第3到第1位是标志哪个通道接收数据,第0位是发射堆栈状态位。
1.3 nRF24L01的功能描述
nRF24L01可以通过设置CE和状态寄存器来选择他的工作状态,如表1所示。


[table=98%]
配置为发射模式的nRF24L01将会利用增强式ShockBurst技术来发射数据包。发送设备在发完数据后将自动转为接收状态来等待接收方的应答信号。若发送设备未接收到应答信号,他将自动重发这包数据(自动重发开启的情况下)直到接收这包数据或者重发次数超过了在寄存器SETUP_REtr_ARC设置的所允许的最大重发次数。如果是第二种情况,他将在STATUS寄存器里的MAX_RT位反映出来,并且给出中断。 当nRF24L01收到应答信号时,他将认为该包数据成功发送到接收方,并把这包数据从发射堆栈中清除,同时IRQ变低,STATUS寄存器里的中断标志位TX_DS置高。
用增强式ShockBurst技术来发射数据可以有以下好处:极大地降低了电流损耗;系统开销低;极大地降低了数据在空气中的碰撞率。
2 系统设计
2.1 硬件设计
本系统采用的单片机是PIC16F877,将单片机的PORTC的0~5配置成通用I/O引脚,分别与nRF24L01的IRQ,CE,CSN,SCK,MOSI,MISO连接,控制nRF24L01的工作方式,采用单片机标准的SPI接口。系统上电时,PIC16F877首先对nRF24L01进行写配置寄存器操作,然后使nRF24L01进入发射状态,将要发送的数据写入nRF24L01,激活无线发射。然后检测nRF24L01的IRQ引脚,由于关闭了自动重发射功能,因此如果引脚电平变低,即说明产生发送成功中断,数据发送成功,然后从接收端读出数据即可。
2.2软件设计
程序流程图如图3所示。程序编程的基本思路是,系统上电首先配置nRF24L01的寄存器,本系统只对其中几个寄存器进行了重新配置,关闭自动重发射功能是想对发送失败次数进行统计,其他的均采用默认值,如:通信速率2 Mb/s,输出功率0 dBm等。

nRF24L01写配置子程序如下:

3 结 语
本文介绍了利用PIC16F877和nRF24L01芯片设计的无线数据传输系统,成本低,体积小,传输速率高,具有良好的通用性和可靠性,可供监测和工业控制系统电路设计参考使用。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
沙发
发表于 2012-4-1 08:05:36 | 只看该作者
这个可以回,这个真得回!
板凳
发表于 2012-9-25 03:36:28 | 只看该作者
说的不错!吃了缅甸的野生灵芝吧,这么有才!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-9 11:01 , 耗时 0.087702 秒, 17 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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