0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于源码制作的OpenTX固件

云深之无迹 来源:云深之无迹 作者:云深之无迹 2022-08-22 09:12 次阅读

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

66ad8ee6-2152-11ed-ba43-dac502259ad0.png

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

66d43b9a-2152-11ed-ba43-dac502259ad0.png

里面包含两套

66f9a330-2152-11ed-ba43-dac502259ad0.png

里面的函数

671386b0-2152-11ed-ba43-dac502259ad0.png

引入的头文件

6735b870-2152-11ed-ba43-dac502259ad0.png

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

675a7372-2152-11ed-ba43-dac502259ad0.png

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

678438f6-2152-11ed-ba43-dac502259ad0.png

看这个量就知道不简单了

67ab9eb4-2152-11ed-ba43-dac502259ad0.png

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

67cfa5f2-2152-11ed-ba43-dac502259ad0.png

芯片是使用的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 侦测使用电压。无线唤醒机制, 从而延长电池使用寿命。

67e84d46-2152-11ed-ba43-dac502259ad0.png

6806fa52-2152-11ed-ba43-dac502259ad0.png

这里是功率的调整

6832b11a-2152-11ed-ba43-dac502259ad0.png

频道的极值

6857263a-2152-11ed-ba43-dac502259ad0.png

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

68792b86-2152-11ed-ba43-dac502259ad0.png

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

689818c0-2152-11ed-ba43-dac502259ad0.png

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

68afbb56-2152-11ed-ba43-dac502259ad0.png

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

68cdd618-2152-11ed-ba43-dac502259ad0.png

16个频道也可以放出去

68e5f400-2152-11ed-ba43-dac502259ad0.png

协议的校验

6907fece-2152-11ed-ba43-dac502259ad0.png

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

69216bf2-2152-11ed-ba43-dac502259ad0.png

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

69476528-2152-11ed-ba43-dac502259ad0.png

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

6965db70-2152-11ed-ba43-dac502259ad0.png

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

69823ffe-2152-11ed-ba43-dac502259ad0.png

自动对频的枚举

69a0f3fe-2152-11ed-ba43-dac502259ad0.png

接下来去看具体的实现

69d9f4f6-2152-11ed-ba43-dac502259ad0.png

初始的一堆

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

6a109e5c-2152-11ed-ba43-dac502259ad0.png

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

6a2b49be-2152-11ed-ba43-dac502259ad0.png

接着就是执行这个

6a61f55e-2152-11ed-ba43-dac502259ad0.png

寄存器都写到枚举里面

6a8aefc2-2152-11ed-ba43-dac502259ad0.png

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

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

6ab23d02-2152-11ed-ba43-dac502259ad0.png

这里是封装了一下宏函数

6ad1a8cc-2152-11ed-ba43-dac502259ad0.png

在内部看是这样

6af5644c-2152-11ed-ba43-dac502259ad0.png

这个FPTC外设是啥?

6b181f82-2152-11ed-ba43-dac502259ad0.png

查了一下,是NXP的芯片

6b4a8774-2152-11ed-ba43-dac502259ad0.png

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

6b68df58-2152-11ed-ba43-dac502259ad0.png

原来是NXP的芯片

6b846318-2152-11ed-ba43-dac502259ad0.png

STM32 大同小异得

6baec932-2152-11ed-ba43-dac502259ad0.png

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

6bc6a1d8-2152-11ed-ba43-dac502259ad0.png

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

6be8f6b6-2152-11ed-ba43-dac502259ad0.png

看头文件

6c015bde-2152-11ed-ba43-dac502259ad0.png

是STM32的

6c18ae56-2152-11ed-ba43-dac502259ad0.png

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

6c3eacbe-2152-11ed-ba43-dac502259ad0.png

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

6c5af9e6-2152-11ed-ba43-dac502259ad0.png

这个是读一个寄存器得值

6c7a54da-2152-11ed-ba43-dac502259ad0.png

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

6c99f36c-2152-11ed-ba43-dac502259ad0.png

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

6cbcc130-2152-11ed-ba43-dac502259ad0.png

就这些

6ce86132-2152-11ed-ba43-dac502259ad0.png

画图看看

6d130db0-2152-11ed-ba43-dac502259ad0.png

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

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

6d3b26f6-2152-11ed-ba43-dac502259ad0.png

芯片手册说的

6d5da30c-2152-11ed-ba43-dac502259ad0.png

最后是功率的设置

6d88697a-2152-11ed-ba43-dac502259ad0.png

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

6dab836a-2152-11ed-ba43-dac502259ad0.png

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

6dcee878-2152-11ed-ba43-dac502259ad0.png

所谓去看了看数据手册

6dec8aae-2152-11ed-ba43-dac502259ad0.png

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

6e128c04-2152-11ed-ba43-dac502259ad0.png

就是FlySky的协议

6e30183c-2152-11ed-ba43-dac502259ad0.png

哟,还有震荡电路

6e4c2fea-2152-11ed-ba43-dac502259ad0.png

最后给个原理图

6e76214c-2152-11ed-ba43-dac502259ad0.png

我们先看看这个AFHDS2A的协议

6e9769f6-2152-11ed-ba43-dac502259ad0.png

这不要脸的爬我的文章

6ebcb292-2152-11ed-ba43-dac502259ad0.png

投诉都没有地方

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

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

6f2976ac-2152-11ed-ba43-dac502259ad0.png

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

6f41a740-2152-11ed-ba43-dac502259ad0.png

从上面引入协议的变量

6f5cd434-2152-11ed-ba43-dac502259ad0.png

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

6f7f3c04-2152-11ed-ba43-dac502259ad0.png

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

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

我懂拉

6fcc09b2-2152-11ed-ba43-dac502259ad0.png

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

709cfe28-2152-11ed-ba43-dac502259ad0.png

报文的数据包为40

70b9445c-2152-11ed-ba43-dac502259ad0.png

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

70db3abc-2152-11ed-ba43-dac502259ad0.png

两个发包的方法

70f663c8-2152-11ed-ba43-dac502259ad0.png

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

711b976a-2152-11ed-ba43-dac502259ad0.png

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

7137bdaa-2152-11ed-ba43-dac502259ad0.png

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

715e73fa-2152-11ed-ba43-dac502259ad0.png

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

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

7182d254-2152-11ed-ba43-dac502259ad0.png

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

71cc77ce-2152-11ed-ba43-dac502259ad0.png

具体的定义

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

PPM 输入/输出

带有 ExpressLRS 和 Crossfire 模块的 CRSF:

CRSFshot

高达 1.8M 的兆波特率

ExpressLRS V2 配置(ELRSV2.lua 端口

71ef6df6-2152-11ed-ba43-dac502259ad0.png

St-Link的连接处

7237b200-2152-11ed-ba43-dac502259ad0.png

72949bfa-2152-11ed-ba43-dac502259ad0.png

基于上面的源码制作的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 输出)。

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

    关注

    9

    文章

    517

    浏览量

    22230
  • 源码
    +关注

    关注

    8

    文章

    569

    浏览量

    28506
  • 数据手册
    +关注

    关注

    91

    文章

    6081

    浏览量

    40926
  • OpenTX
    +关注

    关注

    2

    文章

    2

    浏览量

    2765

原文标题:FlySky-i6x源码-AFHDS 2A

文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    DshanMCU-R128s2 烧写固件

    编译系统源码后,打包后生成的系统文件称之为固件固件一般为.img格式。把固件下载到开发板或者产品上的过程称之为 烧写固件
    的头像 发表于 12-22 15:08 541次阅读
    DshanMCU-R128s2 烧写<b class='flag-5'>固件</b>

    寻找apm2.8飞控固件源码

    请问apm飞控固件源码在哪里下载,知道的朋友请麻烦告知。谢谢!
    发表于 06-30 16:33

    怎样去设计一种基于Python的OpenTX无线遥控器呢

    如何利用树莓派3B去制作一个无线遥控器呢?怎样去设计一种基于Python的OpenTX无线遥控器呢?
    发表于 12-20 07:41

    有官方at固件源码吗?求分享

    有官方at固件源码
    发表于 04-24 07:14

    OpenTX for Taranis Manual CN_v1.

    传说中非常强大的er9x升级版opentx说明书
    发表于 11-12 15:08 24次下载

    自制ASP ISP下载器电路固件和AVR单片机源码

    描述:自制ASP ISP下载器电路固件和AVR单片机源码固件等。
    发表于 12-21 10:16 83次下载

    实例图文讲解bootloader固件源码及在线升级

    本文将为大家介绍ATMEL系列MCU在线升级bootloader固件源码及操作过程,笔者在mage和xmage上都实现过,不过使用的RS485,所以固件里面也是RS485的,大家使用RS232的话,把RS485的控制去掉就可以了
    的头像 发表于 09-19 10:05 1.1w次阅读
    实例图文讲解bootloader<b class='flag-5'>固件</b><b class='flag-5'>源码</b>及在线升级

    Telink8266BLE固件源码程序下载

    Telink8266BLE固件源码程序
    发表于 03-13 16:08 6次下载

    fireflyAIO-3288C定制 Android 固件介绍

    定制 Android 固件,有两种方法: 改源码,然后编译生成固件。 在现有固件的基础上进行裁剪。
    的头像 发表于 12-16 14:28 813次阅读

    fireflyAIO-3399J定制Android 固件介绍

    定制 Android 固件,有两种方法: 改源码,然后编译生成固件。 在现有固件的基础上进行裁剪。
    的头像 发表于 12-24 10:50 924次阅读

    STM32单片机网络远程升级固件源码下载

    STM32单片机网络远程升级固件源码下载
    发表于 04-17 09:27 68次下载

    足球世界杯HTML网页制作源码下载

    足球世界杯HTML网页制作源码下载
    发表于 06-08 10:22 14次下载

    制作 NodeMCU ESP32 自定义固件

    最近尝试在 Mac 下制作 nodemcu ESP32 的自定义固件。本文就来介绍nodemcu ESP32 自定义固件的编译、烧写、测试的全部过程。准备固件
    发表于 10-28 09:40 20次下载
    <b class='flag-5'>制作</b> NodeMCU ESP32 自定义<b class='flag-5'>固件</b>

    基于Labview制作的音乐播放器源码分享

    基于Labview制作的音乐播放器源码分享
    发表于 12-01 10:07 67次下载

    如何为BleuIO加密狗制作自己的固件

    电子发烧友网站提供《如何为BleuIO加密狗制作自己的固件.zip》资料免费下载
    发表于 06-14 09:56 0次下载
    如何为BleuIO加密狗<b class='flag-5'>制作</b>自己的<b class='flag-5'>固件</b>