
泉盛UVK5-STM32协处理器模块
简介
用于泉盛UV-K5对讲机的协处理器模块,解放原机MCU算力,实现GNSS定位及复杂算法
简介:用于泉盛UV-K5对讲机的协处理器模块,解放原机MCU算力,实现GNSS定位及复杂算法开源协议
:GPL 3.0
描述
写在前面
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
克隆工程

评论