0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于源碼制作的OpenTX固件

云深之無跡 ? 來源:云深之無跡 ? 作者:云深之無跡 ? 2022-08-22 09:12 ? 次閱讀

源碼我放到Github上面了,刪除了一些無用的代碼,加了一些注釋,進行了格式化。

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

代碼設計上面沒有使用實時操作系統(tǒng)

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

里面包含兩套

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

里面的函數(shù)

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

引入的頭文件

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

里面是大量的定時器和中斷

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

HAL層是封裝了大量的機體函數(shù)

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

看這個量就知道不簡單了

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

我們都知道I6X是使用的A7105這個芯片,這個文件就是控制射頻芯片的文件

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

芯片是使用的SPI,以及二代的協(xié)議這里也有了

A7105是一枚使用于2.4GHz ISM頻段低成本無線收發(fā)射頻集成電路,內含高靈敏度的接收電路(250kbps@-99dBm)和高效率的發(fā)射電路,適合于通信距離在30m以內的用場場合。A7105 具有可以編程的工作速率, 最高為500Kbps。在數(shù)字接口部份,提供4pin(SPI)或3pin 接口方式, 在RF 數(shù)據(jù)的處理有兩種模式可供選擇 : FIFO(先入先出緩沖器,利用RF 內部的memory 先儲存要發(fā)射和接收的數(shù)據(jù)), Direct(直接發(fā)射及接收)。在FIFO 模式下, 也支援CRC(CRC16), FEC(約可增加靈敏度1~2dbm),data whitening(也即數(shù)據(jù)加密), 曼切斯特編和解碼。A7105 內建接收信號強度指示RSSI, 溫度傳感器, 以偵測環(huán)境對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

這里是寫了協(xié)議的遙測給你,其實就是短暫的發(fā)一個小包,這個信息要傳遞出去,所以這里是extern。

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

16個頻道也可以放出去

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

協(xié)議的校驗

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

這個估計是上面已經定義了,這里是被注釋的

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

協(xié)議的枚舉,就是支持的協(xié)議

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

芯片的狀態(tài),狀態(tài)機的時候會用

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

這個怎么說,也是協(xié)議的定義

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

自動對頻的枚舉

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

接下來去看具體的實現(xiàn)

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

初始的一堆

因為我對這個芯片的具體細節(jié)還沒有看完,這段就是憑借經驗了。

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

看這里應該都是要初始化我們的芯片,都是對寄存器操作的

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

接著就是執(zhí)行這個

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

寄存器都寫到枚舉里面

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

這個函數(shù)被使用的太多,一時之間還沒有被跳轉,我在這里找到了

第一個是位置,第二個是數(shù)據(jù)

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

這里是封裝了一下宏函數(shù)

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得函數(shù),一次可以讀到兩個

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

這里終于出現(xiàn)SPI了,一次出現(xiàn)好多的定義

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

看頭文件

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

是STM32的

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

這個是SPI函數(shù)發(fā)送一個小數(shù)據(jù)包

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

這個NXP的不對,應該是STM的方案,這里把NXP的庫,

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

這個是讀一個寄存器得值

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

這個就是先發(fā)現(xiàn)一個命令,給我康康~接著返回一個命令,給你康康。

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

這里就是把這個我也看不懂的控制數(shù)值,使用數(shù)組寫到芯片里面

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

所謂去看了看數(shù)據(jù)手冊

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

我個人是覺得是,上面發(fā)的那個數(shù)組

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

就是FlySky的協(xié)議

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

喲,還有震蕩電路

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

最后給個原理圖

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

我們先看看這個AFHDS2A的協(xié)議

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

這不要臉的爬我的文章

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

投訴都沒有地方

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

總之是看不見一個靠譜的解說協(xié)議內容的地方。

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

先找到發(fā)包和收包的大小是37字節(jié)

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

從上面引入協(xié)議的變量

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

不知道這里是不是跳頻的協(xié)議代碼

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

通道之間是5間隔跳的,然后具體通道是按照現(xiàn)在啟用的通道數(shù)算的

FlySky裝逼的跳頻協(xié)議,就這?

我懂拉

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

眾所周知還有遙測的功能,就是發(fā)送一個小的短報文

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

報文的數(shù)據(jù)包為40

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

現(xiàn)在這個函數(shù)是傳感器的更新函數(shù)

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

兩個發(fā)包的方法

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 協(xié)議?,F(xiàn)在不支持 AFDHS 協(xié)議。支持教練模式(PPM 輸入和 PPM 輸出)。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 固件
    +關注

    關注

    10

    文章

    550

    瀏覽量

    22930
  • 源碼
    +關注

    關注

    8

    文章

    632

    瀏覽量

    29111
  • 數(shù)據(jù)手冊

    關注

    94

    文章

    6087

    瀏覽量

    42258
  • OpenTX
    +關注

    關注

    2

    文章

    2

    瀏覽量

    2811

原文標題:FlySky-i6x源碼-AFHDS 2A

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    尋找apm2.8飛控固件源碼

    請問apm飛控固件源碼在哪里下載,知道的朋友請麻煩告知。謝謝!
    發(fā)表于 06-30 16:33

    怎樣去設計一種基于Python的OpenTX無線遙控器呢

    如何利用樹莓派3B去制作一個無線遙控器呢?怎樣去設計一種基于Python的OpenTX無線遙控器呢?
    發(fā)表于 12-20 07:41

    有官方at固件源碼嗎?求分享

    有官方at固件源碼
    發(fā)表于 04-24 07:14

    OpenTX for Taranis Manual CN_v1.

    傳說中非常強大的er9x升級版opentx說明書
    發(fā)表于 11-12 15:08 ?25次下載

    自制ASP ISP下載器電路固件和AVR單片機源碼

    描述:自制ASP ISP下載器電路固件和AVR單片機源碼、固件等。
    發(fā)表于 12-21 10:16 ?83次下載

    實例圖文講解bootloader固件源碼及在線升級

    本文將為大家介紹ATMEL系列MCU在線升級bootloader固件源碼及操作過程,筆者在mage和xmage上都實現(xiàn)過,不過使用的RS485,所以固件里面也是RS485的,大家使用RS232的話,把RS485的控制去掉就可以了
    的頭像 發(fā)表于 09-19 10:05 ?1.2w次閱讀
    實例圖文講解bootloader<b class='flag-5'>固件</b><b class='flag-5'>源碼</b>及在線升級

    fireflyAIO-3399J定制Android 固件介紹

    定制 Android 固件,有兩種方法: 改源碼,然后編譯生成固件。 在現(xiàn)有固件的基礎上進行裁剪。
    的頭像 發(fā)表于 12-24 10:50 ?1121次閱讀

    fireflyAIO-3288J主板定制Android固件簡介

    定制 Android 固件 前言 定制 Android 固件,有兩種方法: 改源碼,然后編譯生成固件。
    的頭像 發(fā)表于 12-26 14:35 ?1603次閱讀

    STM32單片機網絡遠程升級固件源碼下載

    STM32單片機網絡遠程升級固件源碼下載
    發(fā)表于 04-17 09:27 ?77次下載

    足球世界杯HTML網頁制作源碼下載

    足球世界杯HTML網頁制作源碼下載
    發(fā)表于 06-08 10:22 ?14次下載

    制作 NodeMCU ESP32 自定義固件

    最近嘗試在 Mac 下制作 nodemcu ESP32 的自定義固件。本文就來介紹nodemcu ESP32 自定義固件的編譯、燒寫、測試的全部過程。準備固件
    發(fā)表于 10-28 09:40 ?22次下載
    <b class='flag-5'>制作</b> NodeMCU ESP32 自定義<b class='flag-5'>固件</b>

    NodeMCU學習筆記(1)--- 硬件介紹、固件制作、燒錄

    NodeMCU學習筆記(1)— 硬件介紹、固件制作、燒錄提示:作者使用 ESP8266 進行開發(fā)學習。文章目錄NodeMCU學習筆記(1)--- 硬件介紹、固件制作、燒錄前言一、硬件介
    發(fā)表于 11-01 16:25 ?18次下載
    NodeMCU學習筆記(1)--- 硬件介紹、<b class='flag-5'>固件</b><b class='flag-5'>制作</b>、燒錄

    基于Labview制作的音樂播放器源碼分享

    基于Labview制作的音樂播放器源碼分享
    發(fā)表于 12-01 10:07 ?70次下載

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

    電子發(fā)燒友網站提供《如何為BleuIO加密狗制作自己的固件.zip》資料免費下載
    發(fā)表于 06-14 09:56 ?0次下載
    如何為BleuIO加密狗<b class='flag-5'>制作</b>自己的<b class='flag-5'>固件</b>

    MCUXpresso IDE下將源碼制作成Lib庫方法及其與IAR,MDK差異

    MCUXpresso IDE下將源碼制作成Lib庫方法及其與IAR,MDK差異
    的頭像 發(fā)表于 11-07 17:13 ?1125次閱讀
    MCUXpresso IDE下將<b class='flag-5'>源碼</b><b class='flag-5'>制作</b>成Lib庫方法及其與IAR,MDK差異