ExpressLRS开源代码之框架结构

ExpressLRS开源代码之框架结构

  • 1. 源由
  • 2. Arduino应用框架
  • 3. ExpressLRS应用框架
  • 4. 硬件设计框架
    • 4.1 单天线
    • 4.2 双天线单PA
    • 4.3 双天线双PA
  • 5. 应用软件设计
  • 6. 参考资料

1. 源由

最近为了理解《ExpressLRS开源之基本调试数据含义》,做了一些源代码的研读。
概念、文档、代码或多或少都存在一些变数,代码不仅仅从数值,量纲,以及出处可以了解的非常清晰,从而对于数据的含义达到更深的认识。

当然,也有一些困难的地方,首先刚开始看ardunio的代码,非常的不太习惯。另外加之,其代码里面实际上是两个工程:接收机和发射机,一些函数的调用关系以及函数名称都非常类似甚至一致。

正因为如此,也对这个代码框架或多或少多了一些理解,趁这次机会就简单的整理下。

2. Arduino应用框架

Arduino Sketches提供了非常简便的应用开发方式。

有两个特殊的功能函数作为代码框架setup()loop():

  • setup():启动后调用一次。这是一个很好的地方来完成设置任务,如设置引脚模式或初始化。
  • loop():函数被反复调用,是大多数核心应用例程。

3. ExpressLRS应用框架

基于该Arduino代码框架,ExpressLRS开源代码提供了发射机和接收机的工程:

  • 接收机应用
rx_main.cpp├──> setup└──> loop
  • 发射机应用
tx_main.cpp├──> setup└──> loop

4. 硬件设计框架

概念上:MCU + RF + PA

4.1 单天线

要完成接收和发射两个工作,需要Tx/Rx不停的切换。

在这里插入图片描述

4.2 双天线单PA

接收机在该硬件框架下,天线在同一时刻只有一根是激活状态;且在该激活状态下,再进行发射和接收模式的选择。
在这里插入图片描述

4.3 双天线双PA

该模式硬件配置,可以比较好的解决同一时刻单一天线激活的情况。

从接收机和发射机的角度来说其组合方式会比较多,当然实际情况可能是一个并行的单天线设计。

注:关于这部分双天线的问题,可以详细参考:ExpressLRS开源之RC链路性能测试

在这里插入图片描述

5. 应用软件设计

从设备应用的角度,软件设计上至少需要考虑如下内容:

  1. 设备初始化
  2. 业务应用任务
  3. RF接收任务

从代码实现的角度,可能会用到的内容:

  1. setup例程
  2. loop例程
  3. 任务、信号量
  4. 中断,定时器
  5. 软件狗(异常)

具体内容,将会更加针对性的在以下笔记中介绍:
【1】ExpressLRS开源代码之接收机代码框架结构
【2】ExpressLRS开源代码之发射机代码框架结构

6. 参考资料

【1】[ExpressLRS开源之接收机固件编译烧录步骤](https://blog.csdn.net/lida2003/article/details/132518813)
【2】ExpressLRS开源之RC链路性能测试
【3】ExpressLRS开源之基本调试数据含义
【4】Arduino Sketches

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/120444.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二进制搭建kubernetes(K8S)

二进制搭建kubernetes(K8S) 一、常见的K8S部署方式1.Minikube2.Kubeadmin3.二进制安装部署 二、二进制搭建K8S(单台master)1.部署架构规划2.系统初始化配置3.部署 docker引擎4.部署 etcd 集群4.部署 Master 组件5.部署 Worker Node 组件6.部署网络组件 三…

数据可视化工具中的显眼包:奥威BI自带方案上阵

根据经验来看,BI数据可视化分析项目是由BI数据可视化工具和数据分析方案两大部分共同组成,且大多数时候方案都需从零开始,反复调整,会耗费大量时间精力成本。而奥威BI数据可视化工具别具匠心,将17年经验凝聚成标准化、…

【juc】ReentrantReadWriteLock之缓存(仅当学习)

目录 一、说明二、代码示例2.1 pom依赖2.2 示例代码2.3 实体类 三、示例截图 一、说明 1.针对于读多写少的情况 2.先查缓存&#xff0c;没有再去查库 二、代码示例 2.1 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"h…

文心一言api接入如何在你的项目里使用文心一言

文心一言api接入在项目里接入文心一言 一、百度文心一言API二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、百度文心一言API 基于百度文心一言语言大模型的智能文本对话AI机器人…

Linux代码初试__进度条

前言 在我们的日常生活中&#xff0c;进度条是十分常见的&#xff0c;比如在软件下载中&#xff0c;应用加载中等等~~~那么进度条有什么特点&#xff1f;他又如何实现。 下面我们将结合下面的图展开讲解 一、前置理论知识 1.1回车和换行的区别 在我们的日常生活中&#x…

Android Studio新版本New UI及相关设置丨遥遥领先版

1、前言 俗话说工欲善其事必先利其器嘛&#xff0c;工具用不好怎么行呢&#xff0c;借着Android Studio的更新&#xff0c;介绍一下新版本中的更新内容&#xff0c;以及日常开发中那些好用的设置。 2、关于新版本 2.1、最新正式版本 Android Studio Giraffe | 2022.3.1 Pat…

FreeRTOS中断与任务之间同步(Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,422 )

前言&#xff1a; FreeRTOS中&#xff0c;中断需要注意几点&#xff1a; 何时使用中断&#xff1b;中断服务函数&#xff08;ISR&#xff09;要处理的数据量有多大&#xff0c;通常我们希望中断的切换越快越好&#xff0c;也就是说&#xff0c;ISR尽量采用耗时较少的处理方式…

YOLO目标检测——赛马数据集下载分享

目标检测赛马数据集在马匹竞赛、马匹健康监测、马匹行为研究、马匹安全监控和马匹图像检索等应用场景中具有广泛的应用潜力&#xff0c;可以为马匹产业的发展和管理提供有力支持 数据集点击下载&#xff1a;YOLO赛马数据集640图片标框.rar 更多数据集下载和效果展示&#x…

论文研读|生成式跨模态隐写发展综述

前言&#xff1a;本文介绍近5年来生成式跨模态隐写领域的相关工作。 相关阅读&#xff1a;生成式文本隐写发展综述 不同于文本隐写&#xff0c;跨模态隐写需要考虑不同模态间的相关性&#xff0c;常见的跨模态场景有&#xff1a;Image-to-Text&#xff08;如图像描述&#xff…

安全编程:初始化那些你忽略掉的东西

对于黑客来说&#xff0c;特权提升漏洞是令他感到非常兴奋的事情&#xff0c;而有时候这种漏洞的来源仅仅是因为开发者忘记将内存缓冲区中的垃圾数据进行初始化。此话怎讲&#xff1f; 我想&#xff0c;现在每个人都应该熟悉 SecureZeroMemory 函数的使用&#xff0c;它用来擦…

【TypeScript】一直提示 :无法重新声明块范围变量

【TypeScript】一直提示 &#xff1a;无法重新声明块范围变量 问题描述&#xff1a;在VSCode中编写ts代码时&#xff0c;编写保存完之后&#xff0c;通过tsc 文件名.ts编译就会看到变量名下面出现了红色的波浪线&#xff0c;提示的内容是无法重新声明块范围变量。 解决方法&am…

基于RabbitMQ的模拟消息队列之五——虚拟主机设计

文章目录 一、创建VirtualHost类二、初始化三、API1.创建交换机2.删除交换机3.创建队列4.删除队列5.创建绑定6.删除绑定7.发送消息转发规则 8.订阅消息1.消费者管理2.推送消息给消费者 3.添加一个消费者管理ConsumerManager9.确认消息 创建VirtualHost类。 1.串起内存和硬盘的数…

安全基础 --- js的闭包和this属性

js闭包 简介 一个函数和对其周围状态&#xff08;lexical exviroment&#xff0c;词法环境&#xff09;的引用捆绑在一起&#xff08;或者说函数被引用包围&#xff09;&#xff0c;这样的组合就是闭包&#xff08;closure&#xff09; 在js中&#xff0c;通俗来讲&#xff0c…

uni-app 之 安装uView,安装scss/sass编译

uni-app 之 安装uView&#xff0c;安装scss/sass编译 image.png image.png image.png 点击HBuilder X 顶部&#xff0c;工具&#xff0c;插件安装&#xff0c;安装新插件 image.png image.png 安装成功&#xff01; 注意&#xff0c;一定要先登录才可以安装 image.png 1. 引…

【数据分析】用Python秒懂概率分布!(附完整Python代码实现)

本文涉及的概念分布包括&#xff1a; 随机变量(Random Variable) 密度函数(Density Functions) 伯努利分布(Bernoulli Distribution) 二项式分布(Binomial Distribution) 均匀分布(Uniform Distribution) 泊松分布(Poisson Distribution) 正态分布(Normal Distribution) …

ChatGPT AIGC 完成动态堆积面积图实例

先使用ChatGPT AIGC描述一下堆积面积图的功能与作用。 接下来一起看一下ChatGPT做出的动态可视化效果图: 这样的动态图案例代码使用ChatGPT AIGC完成。 将完整代码复制如下: <!DOCTYPE html> <html> <head><meta charset="utf-8"><tit…

阿里云大数据实战记录9:MaxCompute RAM 用户与授权

文章目录 问题来源&#xff1a;maxcompute 管理员无法访问敏感列&#xff1f;主线问题&#xff1a;如何提高用户等级衍生问题1&#xff1a;怎么知道自己的等级和表单的等级衍生问题2&#xff1a;为什么 dataworks 空间管理员也没有设置等级的权限&#xff1f;衍生问题3&#xf…

模板和STL简介

模板和STL简介 一、泛型编程1、通用交换函数的实现&#xff08;1&#xff09;代码&#xff08;2&#xff09;总结 2、泛型编程的概念3、模板的概念 二、函数模板1、概念2、格式3、代码4、原理 三、函数模板实例化1、概念2、隐式实例化&#xff08;1&#xff09;概念&#xff08…

[unity]三角形顶点顺序

序 详见官方文档&#xff1a;Unity - Manual: Mesh data (unity3d.com) Topology&#xff1a;拓扑结构 翻译&#xff1a; 拓扑描述网格具有的面类型。 网格的拓扑定义了索引缓冲区的结构&#xff0c;索引缓冲区又描述了顶点位置如何组合成面。每种类型的拓扑都使用索引数组中…

医院安全(不良)事件上报系统源码 不良事件报告平台源码 前后端分离,支持二开

医院安全&#xff08;不良&#xff09;事件上报系统源码 系统定义&#xff1a; 规范医院安全&#xff08;不良&#xff09;事件的主动报告&#xff0c;增强风险防范意识&#xff0c;及时发现医院不良事件和安全隐患&#xff0c;将获取的医院安全信息进行分析反馈&#xff0c;…