MPDU最后一个数据被接收完后, FI-FOP引脚输出高电平。如果接收的数据长度大于门限值,则在接收到的数据长度等于门限值时, FIFOP引脚变成高电平。一旦从RXFIFO缓冲区中读出数据时,FIFOP引脚变成低电平。为了防止ARM7在CC2420的地址识别完成前读取那些可能无效的数据,当CC2420的地址识别功能
图2ARM7和CC2420的链接
使能时,FIFOP引脚只有到地址识别成功后才会发挥作用。在给定的时间内,RXFIFO最多能保存128个字节的数据。如果RXFIFO缓冲区溢出,则FIFO引脚变成低电平,同时FIFOP引脚变成高电平。处理器可以通过查询FIFO引脚和
FIFOP引脚的状态来判断CC2420是否处于溢出状态。为了尽量避免RXFIFO缓冲区溢出,可将FIFOP引脚与ARM7处理器的一个外部中断引脚连接,使ARM7处理器及时读取CC2420的RXFIFO中的数据。
3.2. 3能量供应模块
电能是无线传感器网络中非常宝贵的资源,节点电能一旦耗尽,即宣布其寿命终止并退出网络,剩余的节点需要重新组网。因此,在系统设计中要充分考虑到功耗的最小化。为节约能源,延长电池的寿命,节点上所有工作模块没有必要一直保持正常的工作状态[14]。当无数据发送、接收及转发时,无线传感器网络节点会调
9
整为休眠状态,而处于休眠状态时芯片的能耗极低。CC2420芯片采用低电压供电(2. 1V-3.6V)和休眠模式,且从休眠模式被激活的时延短,因此有更多的时间处于休眠状态。同时,ARM7也是一款采用低电压供电的芯片。
4 实验程序流程图
本次开发环境是ADSL1. 2集成开发环境。使用LPC2138专门工程模板的ARM Executable forLPC2138建立工程。图3所示的是CC2420芯片的初始化
图3 CC2430初始化流程图
流程。CC2420内部有33个16位配置寄存器,初始化CC2420时需要对这些寄存
10
进行设置,这些寄存器在芯片复位时都已设置了一些初始值,在实际使用时,根据需要对初始值进行修改。
图4所示的是节点发送数据的流程图。数据包类型有信标帧、数据帧、ACK帧和MAC命令帧。发送数据时,需要先通过微控制器的SPI接口把需要传送的数据发送到CC2420的缓冲区中存储起来,这里根据IEEE 802.15. 4的帧格式来发送,缓存好数据后就可以启动发送数据;同时发送节点要表明要不要接收节点返回ACK信息以便判断本次传输是否成功。
图4发送节点流程图
11
图5所示的是节点接收数据的流程图。接收数据时,会把数据存入到接收缓存区RXFIFO中,并改变FIFO和FIFOP引脚的状态,处理器通过FIFOP的引脚中断读RXFIFO寄存器来依次读取整个数据包,同时由于CC2420的RXFIFO缓冲区只有128字节,为防止接收数据长度大于128字节,所以要判断RXFIFO缓冲区是否溢出。
图5 接收节点流程图
12
相关推荐: