源碼我放到Github上面了,刪除了一些無用的代碼,加了一些注釋,進行了格式化。
代碼設計上面沒有使用實時操作系統(tǒng)
里面包含兩套
里面的函數(shù)
引入的頭文件
里面是大量的定時器和中斷
HAL層是封裝了大量的機體函數(shù)
看這個量就知道不簡單了
我們都知道I6X是使用的A7105這個芯片,這個文件就是控制射頻芯片的文件
芯片是使用的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 偵測使用電壓。無線喚醒機制, 從而延長電池使用壽命。
這里是功率的調整
頻道的極值
看她這個寫法,有16個頻道可以放出去
這個是通道的映射,有很多
4x4 16種模式(我好像算錯了)
這里是寫了協(xié)議的遙測給你,其實就是短暫的發(fā)一個小包,這個信息要傳遞出去,所以這里是extern。
16個頻道也可以放出去
協(xié)議的校驗
這個估計是上面已經定義了,這里是被注釋的
協(xié)議的枚舉,就是支持的協(xié)議
芯片的狀態(tài),狀態(tài)機的時候會用
這個怎么說,也是協(xié)議的定義
自動對頻的枚舉
接下來去看具體的實現(xiàn)
初始的一堆
因為我對這個芯片的具體細節(jié)還沒有看完,這段就是憑借經驗了。
看這里應該都是要初始化我們的芯片,都是對寄存器操作的
接著就是執(zhí)行這個
寄存器都寫到枚舉里面
這個函數(shù)被使用的太多,一時之間還沒有被跳轉,我在這里找到了
第一個是位置,第二個是數(shù)據(jù)
這里是封裝了一下宏函數(shù)
在內部看是這樣
這個FPTC外設是啥?
查了一下,是NXP的芯片
標準庫。CMSIC的好處就是這個學習不用換個芯片就得學一次
原來是NXP的芯片
和STM32 大同小異得
關于這個SPI得函數(shù),一次可以讀到兩個
這里終于出現(xiàn)SPI了,一次出現(xiàn)好多的定義
看頭文件
是STM32的
這個是SPI函數(shù)發(fā)送一個小數(shù)據(jù)包
這個NXP的不對,應該是STM的方案,這里把NXP的庫,
這個是讀一個寄存器得值
這個就是先發(fā)現(xiàn)一個命令,給我康康~接著返回一個命令,給你康康。
這里就是把這個我也看不懂的控制數(shù)值,使用數(shù)組寫到芯片里面
就這些
畫圖看看
救命,為啥給芯片里面寫入這種奇怪的信息???
接下來沒有啥說的(關鍵我不知道),就是對芯片的一個校準的過程,每一次的重啟都有校準的過程。
芯片手冊說的
最后是功率的設置
一開始傳入是,什么叫bind功率,啥???
這個SPI的庫我是看不懂了。
所謂去看了看數(shù)據(jù)手冊
我個人是覺得是,上面發(fā)的那個數(shù)組
就是FlySky的協(xié)議
喲,還有震蕩電路
最后給個原理圖
我們先看看這個AFHDS2A的協(xié)議
這不要臉的爬我的文章
投訴都沒有地方
怎么搜都是我。。。我要是有這么高的排名博客就好了
總之是看不見一個靠譜的解說協(xié)議內容的地方。
先找到發(fā)包和收包的大小是37字節(jié)
從上面引入協(xié)議的變量
不知道這里是不是跳頻的協(xié)議代碼
通道之間是5間隔跳的,然后具體通道是按照現(xiàn)在啟用的通道數(shù)算的
FlySky裝逼的跳頻協(xié)議,就這?
我懂拉
眾所周知還有遙測的功能,就是發(fā)送一個小的短報文
報文的數(shù)據(jù)包為40
現(xiàn)在這個函數(shù)是傳感器的更新函數(shù)
兩個發(fā)包的方法
通過分支選擇在裝載內容,這段其實值得細細讀,但是下次一定
在對頻功能里面值得看這個,就是在16個通道里面不停的尋找
我這段代碼就有點看不懂,不知道為什么這個4號就這么特殊。
如果有人知道可以和我討論一下
我覺得這里不可以不求甚解了,我停下來再研究一下代碼。
有人想改裝遙控器,可以看這里
具體的定義
具有 SBUS、IBUS 和擴展 SBUS16、IBUS16 的 AFHDS2A - 16 通道模式
PPM 輸入/輸出
帶有 ExpressLRS 和 Crossfire 模塊的 CRSF:
CRSFshot
高達 1.8M 的兆波特率
ExpressLRS V2 配置(ELRSV2.lua 端口)
St-Link的連接處
基于上面的源碼制作的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 輸出)。
-
固件
+關注
關注
10文章
550瀏覽量
22930 -
源碼
+關注
關注
8文章
632瀏覽量
29111 -
數(shù)據(jù)手冊
+關注
關注
94文章
6087瀏覽量
42258 -
OpenTX
+關注
關注
2文章
2瀏覽量
2811
原文標題:FlySky-i6x源碼-AFHDS 2A
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論