基于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文件中的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点对点无线开发基础知识的更多相关文章
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...
- IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...
- IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...
- IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路
1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...
- 3D开发基础知识和简单示例
引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...
- IOS开发基础知识碎片-导航
1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...
- iOS开发——总结篇&IOS开发基础知识
IOS开发基础知识 1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断 ...
- Ext常用开发基础知识
Ext常用开发基础知识 组件定义 //这种方法可以缓存所需要的组件 调用起来比较方便(方法一 ) Ext.define('MySecurity.view.home.HomePanel', { //添加 ...
- [No0000138]软件开发基础知识
1. 本文目的 本文目的在于,介绍软件开发的各种基础知识 以实现,看了之后,对于软件开发的很多领域的基础知识有所了解 如此在进行后续的真正的软件开发时,遇到各种细节知识,才会明白由来和背景知识 第 1 ...
随机推荐
- java实现图片的上传和展示
一.注意事项: 1,该项目主要采用的是springboot+thymeleaf框架 2,代码展示的为ajax完成图片上传(如果不用ajax只需要改变相应的form表单配置即可) 二.效果实现: 1,页 ...
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十三)之Strings
Immutable Strings Objects of the String class are immutable. If you examine the JDK documentation fo ...
- 我是如何一步步的在并行编程中将lock锁次数降到最低实现无锁编程
在并行编程中,经常会遇到多线程间操作共享集合的问题,很多时候大家都很难逃避这个问题做到一种无锁编程状态,你也知道一旦给共享集合套上lock之后,并发和伸缩能力往往会造成很大影响,这篇就来谈谈如何尽可能 ...
- 基于netty实现rpc框架-spring boot服务端
demo地址 https://gitee.com/syher/grave-netty RPC介绍 首先了解一下RPC:远程过程调用.简单点说就是本地应用可以调用远程服务器的接口.那么通过什么方式调用远 ...
- 5. class--extends
ES5: function article(x,y){ this.x = x; this.y = y; } article.prototype.say = function() { return (t ...
- 关于synergy的问题
报错信息主要集中在以下两条: ERROR: ssl error occurred (system call failure) ERROR: eof violates ssl protocol 通过查找 ...
- JS - Promise使用详解
参考:https://www.cnblogs.com/developer-ios/p/10510564.html
- wait,waitpid的学习使用
man wait man waitpid 从中可知 函数原型 pid_t wait(int* status); pid_t waitpid(pid_t pid, int* status, int op ...
- How to permit SSH root Login in Ubuntu 18.04
https://www.ubuntu18.com/ssh-permitrootlogin/ SSH root login is disabled by default in Ubuntu 18.04. ...
- Linux磁盘修复命令----fsck
使用fsck命令修复磁盘时 一定要进入单用户模式去修复 语 法fsck.ext4[必要参数][选择参数][设备代号] 功 能fsck.ext4 命令: 针对ext4型文件系统进行检测 参数 -a 非 ...