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文件中的2个API函数

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
函数执行成功返回:接收的字节数

基于BasicRF点对点无线开发基础知识的更多相关文章

  1. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  2. IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理

    1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...

  3. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...

  4. IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路

    1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...

  5. 3D开发基础知识和简单示例

    引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...

  6. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  7. iOS开发——总结篇&IOS开发基础知识

    IOS开发基础知识 1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断 ...

  8. Ext常用开发基础知识

    Ext常用开发基础知识 组件定义 //这种方法可以缓存所需要的组件 调用起来比较方便(方法一 ) Ext.define('MySecurity.view.home.HomePanel', { //添加 ...

  9. [No0000138]软件开发基础知识

    1. 本文目的 本文目的在于,介绍软件开发的各种基础知识 以实现,看了之后,对于软件开发的很多领域的基础知识有所了解 如此在进行后续的真正的软件开发时,遇到各种细节知识,才会明白由来和背景知识 第 1 ...

随机推荐

  1. 【Server】Windows系统安装Tomcat服务器

    安装Tomcat服务器 Tomcat服务器地址:https://tomcat.apache.org/download-80.cgi 当前版本点选8以上版本,最新的可能不稳定,所以选8或者9版本 直接解 ...

  2. 第九节:os、sys、json、pickle、shelve模块

    OS模块: os.getcwd()获取当前路径os.chdir()改变目录os.curdir返回当前目录os.pardir()父目录os.makedirs('a/b/c')创建多层目录os.remov ...

  3. 让ul li水平居中(任意删除li也能水平居中)

    HTML代码: <div class="box"> <ul class="button-ct"> <li></li&g ...

  4. 5分钟python爬虫案例,手把手教爬取国内外最新疫情历史数据

    俗话说的好,“授之以鱼不如授之以渔”,所以小编今天就把爬疫情历史数据的方法分享给你们. 基本思路:分析腾讯新闻“抗肺炎”版块,采用“倒推法”找到疫情数据接口,然后用python模拟请求,进而保存疫情历 ...

  5. util.Date与sql.Date的异同以及相互转换

    Java中有两个Date类 一个是java.util.Date通常情况下用它获取当前时间或构造时间 另一个是java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分 两个类型的时间 ...

  6. R - Cow and Message CodeForces - 1307C

    思路对了,但是不会写. 等差数列长度不是1就是2,所以不是一个字母就是俩字母,一开始写的时候直接枚举两个字母,然后让次数相乘.这样是不对的,比如abaabb,字母ab的个数应该是3+2+2,因该是每一 ...

  7. Redis入门使用 -- 个人总结

    目录 什么是Redis? Redis 与其他 key - value 数据库的对比 Redis 能干什么 Redis的安装配置 Redis启动和连接 上面开启的是非守护线程下启动(独占模式),下面我们 ...

  8. 杂记三 &#183; CSP-2019-The first step

    update:我终于懂得衰亡的民族之所以沉默的缘由了. 初赛Day -7 虽然我是第一次参加初赛而且到现在为止我还没见过初赛题但我一点也不慌! 真的!一点!也不慌! 初赛Day 1 早上和可s爱b j ...

  9. C/C++,被誉为“最经典的编程语言”,不仅是因为编程入门需要学?

    计算机诞生初期,用机器语言或汇编语言编写程序; 第一种高级语言FORTRAN诞生于1954年; BASIC语言(1964)是由FORTRAN语言的简化而成的是为初学者设计的小型高级语言; C语言是19 ...

  10. 【AspNetCore源码】设计模式 - 提供者模式

    AspNetCore源代码发现日志模块的设计模式(提供者模式),特此记录 学习设计模式的好处是,我们可以容易扩展它达到我们要求,除了要知道如何扩展它,还应该在其他地方应用它 类图 & 分析 角 ...