ExpressLRS开源代码之框架结构

ExpressLRS开源代码之框架结构

  • [1. 源由](#1. 源由)
  • [2. Arduino应用框架](#2. Arduino应用框架)
  • [3. ExpressLRS应用框架](#3. ExpressLRS应用框架)
  • [4. 硬件设计框架](#4. 硬件设计框架)
    • [4.1 单天线](#4.1 单天线)
    • [4.2 双天线单PA](#4.2 双天线单PA)
    • [4.3 双天线双PA](#4.3 双天线双PA)
  • [5. 应用软件设计](#5. 应用软件设计)
  • [6. 参考资料](#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

相关推荐
DolphinScheduler社区3 小时前
真实迁移案例:从 Azkaban 到 DolphinScheduler 的选型与实践
java·大数据·开源·任务调度·azkaban·海豚调度·迁移案例
猫头虎4 小时前
昆仑芯 X HAMi X 百度智能云 | 昆仑芯 P800 XPU/vXPU 双模式算力调度方案落地
人工智能·百度·开源·aigc·文心一言·gpu算力·agi
说私域7 小时前
开源AI智能名片链动2+1模式S2B2C商城系统下消费点评的信任构建机制研究
人工智能·开源
福大大架构师每日一题7 小时前
⽬前 主流的开源模型体系 有哪些?
chatgpt·开源
万岳科技系统开发7 小时前
外卖开源系统源码设计思路:商家、骑手、用户三端一体化方案
开源
那些免费的砖8 小时前
Reka UI - 一款免费开源的 Vue 无头 UI 组件库,样式定制开发项目的绝佳选择
vue.js·ui·开源
DolphinScheduler社区9 小时前
Apache DolphinScheduler 3.3.2 正式发布!性能与稳定性有重要更新
大数据·开源·apache·任务调度·海豚调度·发版
SeaTunnel9 小时前
Apache SeaTunnel 支持 Metalake 开发了!避免任务配置敏感信息暴露
大数据·开源·apache·个人开发·数据集成·seatunnel·看开源之夏
CtrlZ学习录12 小时前
笔记:现代操作系统:原理与实现(8)
linux·笔记·架构·开源
GitCode官方12 小时前
GitCode「开源星期六」第三期回顾:鸿蒙 AI 融合开发的新突破与实践路径
开源·gitcode