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. 应用软件设计
从设备应用的角度,软件设计上至少需要考虑如下内容:
- 设备初始化
- 业务应用任务
- RF接收任务
从代码实现的角度,可能会用到的内容:
setup
例程loop
例程- 任务、信号量
- 中断,定时器
- 软件狗(异常)
具体内容,将会更加针对性的在以下笔记中介绍:
【1】ExpressLRS开源代码之接收机代码结构 – 待补充
【2】ExpressLRS开源代码之发射机代码结构 – 待补充
6. 参考资料
【1】[ExpressLRS开源之接收机固件编译烧录步骤](https://blog.csdn.net/lida2003/article/details/132518813)
【2】ExpressLRS开源之RC链路性能测试
【3】ExpressLRS开源之基本调试数据含义
【4】Arduino Sketches