FT-DX10从ACC口获取频谱的方法

这个方法在DX10验证可用,理论上DX101系列也可用。

已在Github同步开源:SLTPLAN/FTDX10_WF: The way to read FTDX_WF without SCU-LAN10

你需要:

1.一个可控制串口设备(STM32、ESP32)【有没有都可以】
2.一个SPI转接设备(比如FT4222HQ的开发板,也可以是ESP32)

工作原理:

第一步:心跳包握手

DX10背后的ACC接口,Pin11(CNT RX)与Pin12(CNT TX)是一对串口,波特率115200。只要电台开机,DX10就会每秒发送一个心跳包,内容是:

alive\0

HEX:

61 6C 69 76 65 00

使用可控制的串口设备,在完整收到上述心跳包的10ms内,通过回复相同的心跳包进行握手。

(经过测试,直接将CNT TX与CNT RX相连也可以)


第二步:SPI数据发送

2-3次握手后,DX10会作为SPI Master发送数据,使用模式1(即CPOL=0, CPHA=1),其中,ACC接口的Pin4为MOSI,输出数据,Pin5为时钟信号(CLK),Pin6为片选信号(CS),频率2MHz。这就需要一个SPI转USB设备(比如FT4222,可以转为USB),或者SPI转网络设备(如ESP32)。

数据格式:

与已知FT710的格式完全相同,单个数据包为4096字节,这些信息来自 wfview :

频道1的瀑布图数据:0-849
频道2的瀑布图数据:850-1699【给DX101系列预留】
频道1的音频FFT数据:1700-1899
频道1的音频波形:1900-2299
频道2的音频FFT数据:2300-2499【给DX101系列预留】
频道2的音频波形:2500-2899【给DX101系列预留】


后续的数据是频率、设定等参数,我就不仔细研究了,因为通过CAT也能获取和控制。


另:我修改了开源的wfview,增加了DX10的设备文件与适合上述情况的FT4222文件,测试可以控制电台与显示频谱。你可以在我的个人网站直接下载:(提醒,前期测试因为不确定协议与主从设备,我依照每个数据包第2955字节处开始产生的acsii字符“dhijgo”作为锚点,它在我这重复出现,我建议使用SPI转接设备的片选信号变化来分割字节。)

下载链接:wfview-release-with-DX10-wf

一些可能的问题与解答:

1.如何分割数据包:一个4096的数据包开始发送时,CS为低电平,发送完成后,CS会变为高电平几毫秒,随后再开始下一轮发送。
2.心跳包要一直维持吗:是的,如果停止回复数据包,会在握手结束后的2-3秒停止传输数据。
3.如果要测试有什么危险点:有的,ACC的Pin8会输出13.8V,内部有一个3.15A的一次性保险丝。如果你像我一样不慎短路烧毁了它,就需要拆机更换了(如果更换建议使用自恢复保险丝)。
4.怎么让程序将SPI的原始数据转换为wfview可用的频谱图:将0~849字节按位取反就是wfview的格式了。
5.我有办法使用SCU-LAN10软件吗:理论上可以搭建一个等效服务器,GITHUB上已有开源的协议可参考:CarrierWaveApp/sculan10-protocol
6.后续我会怎么办:我在做一个ESP32的盒子,配合上位机实现既可以USB有线连接又可以走无线的频谱数据传输。

后续更新

  • ①在wfview里显示频谱【已完成】
  • ②编写ESP32转接板【进行中】
  • ③制作简易例程【进行中】
当前页面URL: https://tylk.cc/archives/1372
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
颜文字
洛天依9周年
洛天依夜航星
洛天依8周年
上一篇