站内搜索
发作品签到
专业版

泉盛UVK5-STM32协处理器模块

工程标签

2.3k
0
0
12

简介

用于泉盛UV-K5对讲机的协处理器模块,解放原机MCU算力,实现GNSS定位及复杂算法

简介:用于泉盛UV-K5对讲机的协处理器模块,解放原机MCU算力,实现GNSS定位及复杂算法
复刻成本:98

开源协议

GPL 3.0

创建时间:2024-03-11 00:10:01更新时间:2025-03-07 09:50:07

描述

写在前面

 

UVK5自带的DP32G030性能有点过于恰如其分了,无论是主频还是程序存储空间都是刚好能够实现设备的基本功能,扩展和魔改的空间有限。虽然目前已经有利用片外ROM作为程序存储空间扩展的技术,使之能够实现多种功能,但是一些高级功能依旧受限于MCU的本体性能而无法实现。

 

UVK5改装圈子里已有基于SI4732的短波扩展模块,该模块替换了原厂的BK1080广播接收芯片,使用I2C总线通信。

 

欸,I2C是吧,总线是吧,原厂K5的MCU的I2C总线里挂了一个屏幕、一个BK1080、一个EEPROM,那我再另外挂个劲大的也不是不行。俺寻思这个STM32做个I2C Slave也不是不行。

 

加都加了,看着那块地方的空间还挺大,那我再加一个GNSS模块也不是不行,这样就摇身一变成了打星快乐机。

 

演示视频:https://www.bilibili.com/video/BV1zvRNYdEdj

 

已实现的功能

 

  • GNSS定位
  • 实时卫星位置计算
  • 实时多普勒频移计算
  • 未来2小时的卫星轨迹预测

 

硬件改装

 

底下工程里的板子打出来直接就能用,上面的GNSS模块可以换成别的ATGM336型号。

 

安装步骤

  • 把板载的BK1080拆了

  • 把BK1080焊到模块的SOT-8焊盘上。注意:模块的焊盘比较窄,可能需要把芯片的两侧引脚往中间掰一下

  • 把模块焊回BK1080的位置上,这里需要一点锡焊技巧,要从K5主板的焊盘拉锡桥到PCB的正面。当然你也可以加钱用更薄的板材制板,我选0.8mm是因为这个厚度不用加钱

  • 选择GNSS天线,用尺寸8mm*8mm的,基本是能买到的最小GNSS陶瓷天线了

  • 上热熔胶怼到LED的背面,注意调整方向使得馈线从侧面引出来然后从PCB顶部绕出去(箭头所示)

  • 天线顶端与屏幕排线前端对齐

  • 铝壳开槽,如图所示。基于原来的这个浅坑,两侧挫掉2mm,底部挫到和内侧底面平齐。左边顶部修掉3mm然后再加一个倒角走馈线

天线四周一定要留至少1mm空隙,不然天线收不到信号

  • 馈线焊到GNSS模块的天线和GND引脚
  • 把炒鸡电容焊上。注意:电容要翻过来装(看图,负极在上正极在下),所以别让SMT贴,单独买元件回来自己焊!

 

程序

 

K5端

 

介绍

 

工程源码在uvk5-firmware-cpeval-main.zip中

 

gayhub项目地址:https://github.com/wabulutian/uv-k5-firmware-cpeval

 

基于Fagci的频谱固件,裁剪除了基本功能之外的所有业务代码后能空余出20kB左右的程序存储空间,在其中实现协处理器相关的功能(下称“协处理器应用”)。

 

无论是GNSS消息读取和解码还是利用SGP库计算卫星状态,都无法在K5的处理器中完成,因此协处理器应用仅提供基本的显控与射频部分控制功能,定时通过I2C总线与STM32端通信获得复杂功能的最终处理结果。

 

为了更加精简协处理器应用的程序大小,将尽可能多的计算转移到STM32端。例如对乘除、取余等都在STM32端完成,协处理器应用只接收用于显示的数据(例如:STM32端将浮点数123.456分为123和456两个整数(变成123456的话最后显示依然需要除法和取余)后通过I2C发送)

 

稍微设计了一下UI

 

考虑到主要面向打卫星的场景,主要是调整上下行频率,所以将原来的VFOA+VFOB显示模式变成TX+RX的形式。并且取消了静噪(谁打卫星开静噪啊)。

 

增加了线性转发器频移计算功能,根据常用的线性星通联习惯,提供“固定TX,RX改变”和“固定RX,TX改变”两种多普勒模式,以及“正常转发器”、“反相转发器”两种频率联动模式。原本是用来配合A1A CW功能实现线性卫星CW通联的,但是存储空间放不下A1A CW的代码了,现在就听个响。

 

还是因为存储空间不足,所以协处理器应用只能同时呈现10个卫星的实时信息1个卫星的后续2小时预测信息

 

在协处理器应用之外就是纯净的基础系统,而且因为保留了BK1040且没对EEPROM进行任何修改,所以非常安全,不用担心丢信道或者丢校准或者用不了收音机。

 

存在的问题

 

  • 我对BK4819的寄存器定义和操作方式一窍不通,类似AGC、降噪等参数设置一塌糊涂,接收效果可能不如其他固件
  • 射频接收链路有时候会抽风,大概是某个地方的内存漏到BK4819芯片的寄存器控制代码里去了
  • 协处理器应用和基础系统的CTCSS哑音静噪设置会互相打架,不过我用这个基本就是开机直奔协处理器应用,对我没啥影响
  • 调整频率的时候会有咔哒声,应该是混频器参数修改瞬间的杂波被解调后形成的噪声,在DSB模式尤为明显。但是注意到有些固件能够消除这个噪声,不知道怎么搞,不搞了
  • 一些原版Fagci频谱固件的BUG

 

STM32端

 

介绍

 

工程源码在UVK5-CP-PLUS-GNSS.zip中,是STM32CubeMX+MDKARM的裸机应用

 

主要就俩功能:定位授时、算多普勒

 

定位授时就是读GNSS模块的串口报文,直接能得到UTC时间和经纬度。卫星状态计算用的是一个开源的SGP/SDP解算库,自带从TLE中读取参数的功能。

 

TLE使用串口通过写频线发给K5,然后原封不动地用I2C转到STM32上,协处理器应用主要起一个透传的作用。

 

已有的数据(卫星参数、台站定位、时区等)存在片内flash里,实现掉电不丢,每次上电之后调用保存的数据。

 

时区只是为了显示方便,整个程序里用到的都是UTC时间或者UNIX秒数之类的。

 

每次上电后第一次GNSS成功定位时向flash里存入最新的定位信息,再之后就不管了,反正打卫星对定位精度要求不高

 

程序有两种模式:普通模式、预测模式

 

普通模式下以2秒一个循环的速度遍历10个卫星信息,并计算它们的实时参数(通过200ms定时器中断调度),参数包括实时俯仰角、方位角、速度、上下行频率等

 

预测模式下处理器主频只能支持一个卫星以1Hz的刷新率更新实时参数,并且预测未来2小时的轨道,并并且给出下一个起升/下落事件的倒计时

 

按理说这套应用基于FreeRTOS或者RTT这类的操作系统编写起来会更加高效,但是我懒

 

存在的问题

 

  • 开启预测模式之后就进不了串口中断,无法更新GNSS数据,虽然现在直接在预测模式时禁用了串口而且影响也不大,但总归是一个毛病

 

使用方法

 

切换应用

 

开机后按F+5键进入协处理器应用,在应用主界面按EXIT键返回基础系统

 

界面和操作

主界面

按键 功能
M 进入主菜单;(快捷菜单启用时)退出快捷菜单
增加主要频率;(快捷菜单启用时)修改当前快捷菜单项参数
降低主要频率;(快捷菜单启用时)修改当前快捷菜单项参数
EXIT 退出;(快捷菜单启用时)退出快捷菜单
PTT FM模式下发射
侧键1 使能快捷菜单
侧键2 无功能
1 增加次要频率
2 切换频率控制方式:Tx→Rx→Tx手动Rx随动→Rx手动Tx随动
3 无功能
4 切换频率调整步进:100k→10k→1k→100Hz
5 进入频率输入模式
6 切换AF BW:25k→12.5k→6.25k
7 降低次要频率
8 无功能
9 无功能
0 切换解调模式:FM→AM→DSB
* 无功能
F 无功能

 

主菜单

按键 功能
M 进入当前选择的子菜单
移动光标
移动光标
EXIT 返回主界面

 

GNSS信息子菜单

按键 功能
M 保存当前时区
时区+1
时区-1
EXIT 返回主菜单

 

卫星信息子菜单

按键 功能
M 以当前卫星开启预测/多普勒模式→退出预测/多普勒模式
移动光标
移动光标
EXIT 返回主菜单
* 跳转到当前卫星对应栏位号的TLE子菜单

 

TLE导入子菜单

按键 功能
M (数据有效时)导入当前TLE;(删除模式时)删除该栏位的卫星数据
增加栏位编号
降低栏位编号
EXIT 返回主菜单
* 跳转到当前栏位号对应的卫星信息子菜单
F 切换TLE导入、删除模式

 

我只想打个卫星

  • 开机
  • F+5进入协处理器应用
  • MENU进入主菜单

如果还没有定位和授时,或上次定位/授时数据已经失效

  • 到户外开阔地带等待GNSS定位和授时(冷启动定位时间约3分钟)
  • 确认预测/多普勒模式没有开启,否则无法接受GNSS模块的消息
  • 定位和授时成功后GNSS信息子菜单会显示对应数据,屏幕上方的状态栏也会出现“G”标识

如果还没导入卫星信息

  • 选择TLE,进入TLE导入子菜单
  • 插上写频线,打开电脑的串口助手,设置波特率600000,按以下格式发送卫星参数

    TLE+

    卫星名称

    第一行TLE

    第二行TLE

    转发器上行频率(单位Hz)

    转发器下行频率(单位Hz)

    $

    例如

    TLE+
    ASRTU-1
    1 61781U 24199AY  24350.96869213  .00004303  00000-0  17741-3 0 00002
    2 61781 097.3789 215.1172 0019342 097.4012 322.3356 15.23939602000014
    145850000
    436210000
    $

  • 按上下键选择待保存的栏位编号,按1~5键检查屏幕显示的信息是否与串口传输的一致
  • 若屏幕显示VALID,按MENU键保存该条卫星数据

如果已经导入了卫星信息

  • 进入卫星信息子菜单,选择要打的卫星,按MENU键开启预测/多普勒模式,此时该卫星名字左侧出现>符号
  • 返回协处理器应用主界面,按侧键1进入快捷菜单,多次按侧键1选择菜单项,按上下键修改菜单值
  • 将快捷菜单第一项(跟踪模式)设置为FM,第三项根据转发器哑音设置,设置完成后按MENU或EXIT退出快捷菜单
  • 当跟踪模式设置为FM后,RX和TX频率就会变成该卫星的实时频率
  • 可在界面下方中部查看卫星名称、方位、下一次起升/下落倒计时,在界面右下角查看雷达图和轨迹预测

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
UVK5-CP-PLUS-GNSS.zip
5
2
uv-k5-firmware-cpeval-main.zip
6
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航