ExpressLRS开源代码之框架结构

这篇具有很好参考价值的文章主要介绍了ExpressLRS开源代码之框架结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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不停的切换。

ExpressLRS开源代码之框架结构,DIY Drones,开源,ELRS

4.2 双天线单PA

接收机在该硬件框架下,天线在同一时刻只有一根是激活状态;且在该激活状态下,再进行发射和接收模式的选择。
ExpressLRS开源代码之框架结构,DIY Drones,开源,ELRS

4.3 双天线双PA

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

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

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

ExpressLRS开源代码之框架结构,DIY Drones,开源,ELRS

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文章来源地址https://www.toymoban.com/news/detail-688764.html

到了这里,关于ExpressLRS开源代码之框架结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【开源】SpringBoot框架开发无代码动态表单系统

    基于Vue+SpringBoot+MySQL的无代码平台的表单平台,包括了系统数据中心模块,用来存放管理系统通用的模块,另外分别设计了动态类型模块、动态文件模块、动态字段模块和动态值模块这四大模块,用于实现档案管理系统的核心表单逻辑。 本文设计的无代码平台的表单系统的包

    2024年03月17日
    浏览(49)
  • 基于React的开源低代码框架ToolJet

    什么是 ToolJet ? ToolJet 是一个开源低代码框架,可以用最少的工程工作量快速构建和部署内部工具。 ToolJet 的拖放式前端构建器允许您在几分钟内构建复杂的响应式前端。您还可以连接到数据源,如数据库( PostgreSQL 、 MongoDB 、 Elasticsearch 等)、 API 端点( ToolJet 支持导入 Op

    2024年02月09日
    浏览(37)
  • 最新模块化设计小程序系统源码完整版:开源可二开,支持DIY

    随着互联网的快速发展,小程序已成为各行各业开展业务的重要工具。而模块化设计小程序系统源码完整版则是一种高效、灵活、易维护的解决方案。 分享一个最新的模块化设计小程序系统源码完整版,源码开源可二开,支持自由DIY设计,含完整的前后端和详细的搭建部署教

    2024年02月07日
    浏览(53)
  • C++ 之 一些优质的开源框架和项目代码

    Awesome C++ 一些优质的开源框架和项目代码,学习优秀程序员的代码风格与编程能力

    2024年02月07日
    浏览(39)
  • 【openFrameworks】跨平台的 C++ 开源框架 | oF 文件结构 | 图形基础介绍

      💭 写在前面: 本章我们将介绍一个非常好用的跨平台的 C++ 开源框架 —— openFrameworks。它是一个开源的跨平台的 C++工具包,方便开发者创建出一个更简单和直观的框架,擅长开发图像和动画。     本篇博客全站热榜排名: 8 📜 本章目录: 0x00 openFrameworks 介绍 0x01 开启

    2024年02月02日
    浏览(59)
  • PSP - 开源可训练的蛋白质结构预测框架 OpenFold 的环境配置

    欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132334671 Paper: OpenFold: Retraining AlphaFold2 yields new insights into its learning mechanisms and capacity for generalization OpenFold: 重新训练 AlphaFold2 揭示对于学习机制和泛化能力的新见解 OpenFold 是可训练的开源实

    2024年02月12日
    浏览(37)
  • [开源]一款企业级物联网平台低代码开发框架,代码精简,开箱即用

    基于Go 1.20前后端分离架构,代码精简,开箱即用,前端紧随前沿 Vue3.0 + TypeScript + vite3 + Element-plus技术 对前后端进行了大部分功能的封装,后端自封装go-restful,使用起来更加简洁,功能逻辑清晰,能快速上手学习,并用在生产中。 报表大屏设计器: 我们只需要拖拉拽即可绑定

    2024年02月04日
    浏览(57)
  • 【开源框架】Golang DAG 任务调度框架 Goflow 全解析——源代码模型、使用示例等

    Simply way to control goroutines execution order based on dependencies.

    2024年02月06日
    浏览(56)
  • 初探 qiling ( 麒麟 ):开源的二进制分析、高级代码模拟框架

    官方介绍: 官网:https://qiling.io/ :https://twitter.com/qiling_io github 地址:https://github.com/qilingframework/qiling   qiling 基于 python 开发,是一个开源的、可模拟多种架构和平台的二进制 仿真(模拟) 框架,同时还提供跨架构的调试能力,多种层次的 hook 方法,该工具由 Unicorn 引擎 驱动

    2023年04月24日
    浏览(44)
  • 分享一款嵌入式开源按键框架代码工程MultiButton

    MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块。 Github地址:https://github.com/0x1abin/MultiButton 这个项目非常精简,只有两个文件: (1)可无限扩展按键; (2)按键事件的回调异步处理方式可以简化程序结构,去除冗余的按键处理硬编码,让按键业务逻辑更清晰。 通

    2024年04月15日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包