nRF2401三点通信设计(5)

2020-02-21 13:37

沈阳航空航天大学电子信息工程学院毕业设计(论文)

第4章 软件设计

基于nRF2401无线传感器节点机的设计采用的是模块化的思想,这样软件实现模块化、标准化,易于理解和移植。传感器节点上的软件是无线传感器网络进行有效工作的灵魂,负责完成现场数据的采集以及通过无线通信模块将采集数据包无线传送。

节点机的软件设计主要包括三个部分,分别是发送数据、路由转发数据和接收数据。

4.1 nRF2401的配置

nRF2401的所有配置工作都是通过SPI完成,共有30字节的配置字。

我们推荐nRF2401工作于Shock Burst收发模式,这种工作模式下,系统的程序编制会更加简单,并且稳定性也会更高。因此,下文着重介绍把nRF2401配置为Shock Burst收发模式的器件配置方法。

Shock Burst的配置字使nRF2401能够处理射频协议,在配置完成后,在nRF2401工作的过程中,只需改变其最低一个字节中的内容,以实现接收模式和发送模式之间切换。

Shock Burst的配置字可以分为以下四个部分:

数据宽度:声明射频数据包中数据占用的位数。这使得nRF2401能够区分接收数据包中的数据和CRC校验码;

地址宽度:声明射频数据包中地址占用的位数。这使得nRF2401能够区分地址和数据;

地址:接收数据的地址,有通道0到通道5的地址; CRC:使nRF2401能够生成CRC校验码和解码。

当使用nRF2401片内的CRC技术时,要确保在配置字中CRC校验被使能,并且发送和接收使用相同的协议。

- 21 -

沈阳航空航天大学电子信息工程学院毕业设计(论文)

4.2 收发模式

nRF2401的收发模式操作是通过CE、CLK和DATA三个引脚完成的。当nRF2401要采用Shock Burst发射数据时,首先将CE脚置高,把接收节点的地址和要发送的数据按时序送入nRF2401,然后将CE脚置低,激发nRF2401发射。当采用Shock Burst接收数据时,首先配置本节点地址和要接收的数据包大小,将CE脚置高,等待200us后,nRF2401进入监听状态,等待数据的到来。当接收到正确的数据包后,将DR脚置高,通知MCU取走数据。待MCU取走数据后,nRF2401将DR置低,此时,如果CE脚为高,则等待下一个数据包,否则开始其它的工作流程。

4.2.1发送模式

首先要配置寄存器PRIM_RX为低;当MCU有数据要发送时,接收节点地址和有效数据通过SPI接口写入nRF2401芯片。发送数据的长度以字节计数,从MCU写入TX_ FIFO。当CSN为低时数据被不断地写入。发送端发送完数据后,将通道0设置为接收模式来接收应答信号,其接收地址(RX_ADDR_P0)与接收端地址(TX_ADDR)相同;设置CE为高,启动发射。CE高电平持续时间最小为10us;nRF2401设置为Shock Burst模式,无线系统上电、启动内部16MHz时钟、无线发送数据打包、高速发送数据;如果启动了自动应答模式无线芯片立即进入接收模式。如果在有效应答时间范围内收到应答信号,则认为数据成功发送到了接收端,此时状态寄存器的TX_DS位置高并把数据从TX _FIFO中清除掉。如果在设定时间范围内没有接收到应答信号,则重新发送数据。如果自动重发计数器(ARC_CNT)溢出,则状态寄存器的MAX_RT位置高。不清除TX _FIFO中的数据,当MAX_RT或TX_DS为高电平时,IRQ引脚产生中断。IRQ中断通过写状态寄存器来复位。如果重发次数在达到设定的最大重发次数时还没有收到应答信号的话,在MAX_RX中断清除之前不会重发数据包。数据包丢失计数器(PLOS_CNT)在每次产生MAX_RT中断后加一。

在发射模式下,首先要将nRF2401端口与单片机的I/O口连接,设置为待机模式、禁止SPI协议启动、SPI时钟置低、中断复位、同时将LED全部关闭流,然后,初始化为发射模式,具体步骤为:定义发射信号按键,将信号给到单片机并放到单片机的缓存中去,将nRF2401设置为发射模式,当有按键按下的时候,发送数据,发送完毕后

- 22 -

沈阳航空航天大学电子信息工程学院毕业设计(论文)

清空TX FIFO寄存器程。初始化完毕后,进行数据发送。流程图如图4.1下所示。

开始 nRF2401初始化端口 判断按键是否按下 是 nRF2401发送初始化 数据发送到单片机的缓存中 设置nRF2401为发射模式 数据到LED显示 清楚nRF2401寄存器数据 LED关闭 图 4.1 发送端流程图

4.2.2接收模式

否 - 23 -

沈阳航空航天大学电子信息工程学院毕业设计(论文)

Shock Burst接收模式是通过设置寄存器中PRIM_RX位为高来选择的。准备接收数据的通道必须被使能。所有工作在增强型Shock Burst模式下的数据通道的自动应答功能是由EN_AA寄存器来使能的,有效数据宽度是由RX_PW_Px寄存器来设置的;接收模式由设置CE为高来启动;130us后nRF2401开始检测数据信息;接收到有效的数据包后(地址匹配、CRC检验正确)数据存储在RX_FIFO中,同时RX_DR位置高,并产生中断。状态寄存器中RX_P_NO位显示数据是由哪个通道接收到的;如果使能自动确认信号,则发送确认信号,MCU设置CE脚为低,进入低功耗模式,MCU将数据以合适的速率通过SPI口将数据读出,芯片准备好进入发送模式、接收模式或掉电模式。

在发射模式下,首先要将nRF2401端口与单片机的I/O口连接,设置为待机模式、禁止SPI协议启动、SPI时钟置低、中断复位、同时将LED全部关闭流。然后,将nRF2401设置为接收模式。首先读取nRF2401寄存器状态,判断是否接收到数据,如果接收到数据,将数据从RX_FIFO寄存器中读出来,同时设置一个读出数据标志,当读出数据成功以后,清除RX_DX中断标志,当读出数据的时候,数据发送到LED显示,然后将LED全部关闭。接收端流程图如图4.2所示。

- 24 -

沈阳航空航天大学电子信息工程学院毕业设计(论文)

开始 nRF2401端口初始化 nRF2401设置为接收模式 读取转改寄存器 否 是否接收到数据 是 读出数据 读取标志至1 否 是否完成接收数据 是 读取标志至0 LED显示数据发送成功 LED关闭

图4.2 接收端流程图

4.2.3 路由转发

- 25 -


nRF2401三点通信设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学数学二年级下册练习题暑假日日练(每日20道口算、5道笔算、

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: