• 基于BasicRF点对点无线开发基础知识


    BasicRF点对点概述

    BasicRF软件包有四大部分:

    <1> 硬件层:Hardware Layer。

    <2> 硬件抽象层:Haware Abstraction Layer。

    <3> 基本无线传输层:Basic RF Layer。

    <4> 应用层:Appliaction。

    BasicRF的特点:

    BasicRF包括了IEEE 802.15.4标准数据包的发送和接收,采用了与IEEE 802.15.4 MAC兼容的数据包结构和ACK结构。在使用中,有如下的功能限制
    <1> 不具备“多跳”、“设备扫描”功能。
    <2> 不提供多种网络设备,如协调器、路由器等。所有的节点为同一等级,只能实现点对点的数据传输。
    <3> 传输时会等待信道空闲,但不会按照IEEE 802.15.4 CSMA-CA的要求进行两次CCA检测。
    <4> 不支持数据重传。

    basic_rf.h文件中,有一个basicRfCfg_t类型的数据结构定义,该结构体包含了无线相关的所有参数。
    在应用开发中,先创建一个该类型的结构体变量,再根据实际情况,把本机地址网络ID通信信道应答信号加密设置填充到该结构体变量中。然后再通过basicRfInit(basicRfCfg_t* pRfConfig)初始化函数将参数写入到无线模块中。
    注意:两个要建立通信的节点,网络ID和通信信道必须一致

    无线模块初始化

    hal_rf.c文件中,有一个halRfInit()函数,该函数初始化射频无线模块,设置默认配置选项,允许自动确认和允许随机数产生。
    在应用开发中,直接调用该函数来初始化无线模块。

    常用API函数

    basicRfInit(basicRfCfg_t *pRfConfig) 无线传输初始化函数

    basicRfSendPacket(uint16 destAddr, uint8 *pPayload, uint8 length);无线数据发送函数  1、目的地址2、发送数据内容的首地址3、发送数据的长度

    在basic_rf.c文件中,有一个basicRfSendPacket()函数,负责无线数据的发送。
    该函数有三个参数,依次是:
    uint16 destAddr———->发送目标的地址
    uint8* pPayload———->发送内容的数组
    uint8 length———->发送数据的长度
    在应用开发中,先创建一个字节数组作为数据发送的缓冲区,将要发送的内容置于数组之中,然后直接调用该无线数据发送函数进行发送即可。
    函数执行成功返回:SUCCESS
    函数执行失败返回:FAILED

    basicRfReceiveOn(void); 开启接收功能

    basicRfReceiveOff(void); 关闭接收功能

    在无线数据的接收中,首先要查询并判断是否接收到新的数据,如果有,则把接收的数据读出去来,因此需要用到basic_rf.c文件中的2API函数

    basicRfPacketIsReady(void) 是否有数据需要接受

    basicRfReceive(uint8 *pRxData, uint16 len, int16 *pRssi); 数据接收函数pRxData指向一个地址,用于存放接收的内容,len接收数据的长度pRssi表示链路传输质量

    首先调用basicRfPacketIsReady()函数来查询是否收到新的数据包,如果有新的数据包,则返回TRUE新的数据包信息会存放在basicRfRxInfo_t类型结构体的rxi成员中。在应用开发中,我们不需要过多关注该结构体。因为当查询到新的数据包后,调用basicRfReceive()函数就可以把新接收到的数据复制到自定义的数据缓冲区中,然后进行应用开发。

    basicRfReceive()函数有三个参数,依次是:
    uint8* pRxData
    ———->数据接收缓冲区
    uint8 len
    ———->要接收的数据长度
    int16* pRssi
    ———->无线信号强度,实际应用中填NULL
    函数执行成功返回:接收的字节数

  • 相关阅读:
    NOIP2010普及组T3 接水问题 ——S.B.S.
    【NOIP提高组2015D2T1】uva 714 copying books【二分答案】——yhx
    【NOIP合并果子】uva 10954 add all【贪心】——yhx
    #include &lt;NOIP2009 Junior&gt; 细胞分裂 ——using namespace wxl;
    #include &lt;NOIP2008 Junior&gt; 双栈排序 ——using namespace wxl;
    NOIP2010普及组 三国游戏 -SilverN
    NOIP2009 提高组T3 机器翻译 解题报告-S.B.S
    NOIP2010提高组乌龟棋 -SilverN
    NOIP2010提高组 机器翻译 -SilverN
    UVa 297 Quadtrees -SilverN
  • 原文地址:https://www.cnblogs.com/yuling520/p/12764432.html
Copyright © 2020-2023  润新知