基于源码制作的OpenTX固件

描述

源码我放到Github上面了,删除了一些无用的代码,加了一些注释,进行了格式化。

OpenTX

代码设计上面没有使用实时操作系统

OpenTX

里面包含两套

OpenTX

里面的函数

OpenTX

引入的头文件

OpenTX

里面是大量的定时器和中断

OpenTX

HAL层是封装了大量的机体函数

OpenTX

看这个量就知道不简单了

OpenTX

我们都知道I6X是使用的A7105这个芯片,这个文件就是控制射频芯片的文件

OpenTX

芯片是使用的SPI,以及二代的协议这里也有了

A7105是一枚使用于2.4GHz ISM频段低成本无线收发射频集成电路,内含高灵敏度的接收电路(250kbps@-99dBm)和高效率的发射电路,适合于通信距离在30m以内的用场场合。A7105 具有可以编程的工作速率, 最高为500Kbps。在数字接口部份,提供4pin(SPI)或3pin 接口方式, 在RF 数据的处理有两种模式可供选择 : FIFO(先入先出缓冲器,利用RF 内部的memory 先储存要发射和接收的数据), Direct(直接发射及接收)。在FIFO 模式下, 也支援CRC(CRC16), FEC(约可增加灵敏度1~2dbm),data whitening(也即数据加密), 曼切斯特编和解碼。A7105 内建接收信号强度指示RSSI, 温度传感器, 以侦测环境对RF IC 的影响, 同时内含一路 ADC 侦测使用电压。无线唤醒机制, 从而延长电池使用寿命。

OpenTX

OpenTX

这里是功率的调整

OpenTX

频道的极值

OpenTX

看她这个写法,有16个频道可以放出去

OpenTX

这个是通道的映射,有很多

OpenTX

4x4 16种模式(我好像算错了)

OpenTX

这里是写了协议的遥测给你,其实就是短暂的发一个小包,这个信息要传递出去,所以这里是extern。

OpenTX

16个频道也可以放出去

OpenTX

协议的校验

OpenTX

这个估计是上面已经定义了,这里是被注释的

OpenTX

协议的枚举,就是支持的协议

OpenTX

芯片的状态,状态机的时候会用

OpenTX

这个怎么说,也是协议的定义

OpenTX

自动对频的枚举

OpenTX

接下来去看具体的实现

OpenTX

初始的一堆

因为我对这个芯片的具体细节还没有看完,这段就是凭借经验了。

OpenTX

看这里应该都是要初始化我们的芯片,都是对寄存器操作的

OpenTX

接着就是执行这个

OpenTX

寄存器都写到枚举里面

OpenTX

这个函数被使用的太多,一时之间还没有被跳转,我在这里找到了

第一个是位置,第二个是数据

OpenTX

这里是封装了一下宏函数

OpenTX

在内部看是这样

OpenTX

这个FPTC外设是啥?

OpenTX

查了一下,是NXP的芯片

OpenTX

标准库。CMSIC的好处就是这个学习不用换个芯片就得学一次

OpenTX

原来是NXP的芯片

OpenTX

和STM32 大同小异得

OpenTX

关于这个SPI得函数,一次可以读到两个

OpenTX

这里终于出现SPI了,一次出现好多的定义

OpenTX

看头文件

OpenTX

是STM32的

OpenTX

这个是SPI函数发送一个小数据包

OpenTX

这个NXP的不对,应该是STM的方案,这里把NXP的库,

OpenTX

这个是读一个寄存器得值

OpenTX

这个就是先发现一个命令,给我康康~接着返回一个命令,给你康康。

OpenTX

这里就是把这个我也看不懂的控制数值,使用数组写到芯片里面

OpenTX

就这些

OpenTX

画图看看

OpenTX

救命,为啥给芯片里面写入这种奇怪的信息???

接下来没有啥说的(关键我不知道),就是对芯片的一个校准的过程,每一次的重启都有校准的过程。

OpenTX

芯片手册说的 

OpenTX

最后是功率的设置

OpenTX

一开始传入是,什么叫bind功率,啥???

OpenTX

这个SPI的库我是看不懂了。

OpenTX

所谓去看了看数据手册

OpenTX

我个人是觉得是,上面发的那个数组

OpenTX

就是FlySky的协议

OpenTX

哟,还有震荡电路

OpenTX

最后给个原理图

OpenTX

我们先看看这个AFHDS2A的协议

OpenTX

这不要脸的爬我的文章

OpenTX

投诉都没有地方

 

怎么搜都是我。。。我要是有这么高的排名博客就好了

总之是看不见一个靠谱的解说协议内容的地方。

OpenTX

先找到发包和收包的大小是37字节

OpenTX

从上面引入协议的变量

OpenTX

不知道这里是不是跳频的协议代码

OpenTX

通道之间是5间隔跳的,然后具体通道是按照现在启用的通道数算的

FlySky装逼的跳频协议,就这?

 

我懂拉

OpenTX

众所周知还有遥测的功能,就是发送一个小的短报文

OpenTX

报文的数据包为40

OpenTX

现在这个函数是传感器的更新函数

OpenTX

两个发包的方法

OpenTX

通过分支选择在装载内容,这段其实值得细细读,但是下次一定

OpenTX

在对频功能里面值得看这个,就是在16个通道里面不停的寻找

OpenTX

我这段代码就有点看不懂,不知道为什么这个4号就这么特殊。

OpenTX

如果有人知道可以和我讨论一下

我觉得这里不可以不求甚解了,我停下来再研究一下代码。

OpenTX

有人想改装遥控器,可以看这里

OpenTX

具体的定义

具有 SBUS、IBUS 和扩展 SBUS16、IBUS16 的 AFHDS2A - 16 通道模式

PPM 输入/输出

带有 ExpressLRS 和 Crossfire 模块的 CRSF:

CRSFshot

高达 1.8M 的兆波特率

ExpressLRS V2 配置(ELRSV2.lua 端口)

OpenTX

St-Link的连接处

OpenTX

OpenTX

基于上面的源码制作的OpenTX固件。

ErFly6 - 为无线电 FlySky FS-i6、FS-i6x 系列移植 er9X 的新(好被遗忘的旧)项目。构建固件 - 通过 J-Link(克隆)或 ST-Link(用于 FS-i6X)的 Segger Embedded Sudio Flash 固件。要构建固件安装

 

https://www.segger.com/downloads/embedded-studio/

 

在文件菜单中选择打开解决方案,然后从放置它的文件夹中选择 FSI6.emProject。

选择适合你的遥控器的 Active Project - FSI6 或 FSI6X。构建项目。如果构建成功的闪存固件。

RF 模块 A7105 仅支持 AFDHS 2A 协议。现在不支持 AFDHS 协议。支持教练模式(PPM 输入和 PPM 输出)。

  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分