返回文章列表

国产 GD32 无人机信标接收机:接收、寻向与上位机联调记录

国产 GD32 无人机信标接收机:接收、寻向与上位机联调记录

这是我们科研训练团队参与完成的一套无人机信标接收机。项目围绕国产 GD32F450ZGT6 展开,目标是把天线接收到的信标信号转换为可用于寻向的 RSSI 数据,并完成扫描、粗定位、精定位、锁定、上位机显示和日志记录这一整条链路。

项目当前已经具备硬件原理图、引脚分配、软件设计方案和 Qt 上位机。下位机 GD32 与 FPGA 的完整固件仍需要继续补齐,因此下面会明确区分已经落地的软件功能、已经确定的硬件接口,以及后续真机联调需要验证的指标。

系统由三部分协同完成

接收机按照实时性划分为高速采样、实时控制和上位机交互三部分。

模块主要器件或软件主要职责
高速采样射频前端、ADC、FPGA完成射频通道控制、I/Q 或 RSSI 采样、功率计算与数据缓冲
实时控制GD32F450ZGT6周期读取采样结果,执行寻向状态机,控制舵机或电机,发送状态数据
交互与记录Qt 6 上位机串口通信、命令下发、RSSI 极坐标显示、信标解析、地图定位与日志保存

这种划分把不同时间尺度的工作隔离开来:采样时序由 FPGA 保持稳定,GD32 只处理固定周期内需要做出的控制决策,上位机则专注于交互、可视化和数据追溯。这样既避免 MCU 被高速采样任务占满,也能让后续调试从“射频采样—控制逻辑—界面显示”三个方向分别进行。

GD32 核心板与外设连接

主控选择 GD32F450ZGT6。核心板除了常见的串口和下载接口外,还预留了 SPI、I2C、模拟采样、SDIO、QSPI Flash、USB、SWD,以及多路射频控制信号。这样的接口布局是为了给收发器配置、RSSI 读取、数据记录和后续调试留下余量。

GD32F450ZGT6 核心板、电源、USB、SD 卡与调试接口原理图

关键引脚分配如下:

信号GD32 引脚用途
RSSIPA0RSSI 模拟量输入
ADC0 / ADC1 / ADC2PA1 / PA2 / PA3多路模拟量采样
SSP1 SPIPB13 / PB14 / PB15与 ADC 或射频器件交换数据
CS_AD / CS_XCVRPD8 / PD9ADC 与收发器片选
XCVR_ENPD10收发器使能
MIXER_SCLK / SDATA / ENXPC10 / PC12 / PC11配置射频混频器
I2C0PB6 / PB7配置或扩展低速外设
USART0PA9 / PA10与上位机通信
SWDPA13 / PA14固件下载与在线调试

射频部分还使用了 RXENABLETXENABLERX_AMPTX_AMPAMP_BYPASSMIX_BYPASSLPHP 等控制线。将这些信号按真实功能命名,可以让固件状态、原理图和示波器测试点直接对应,后续维护也不需要反复查找 GPIO 编号。

供电部分需要区分 MCU 和数字逻辑使用的 3.3 V、FPGA 或特定接口使用的 1.8 V、射频模拟部分的 VAA,以及收发器与放大器的受控电源。数字系统成功启动不代表射频链路已经处于可用状态,联调时应先确认电源、复位和使能逻辑,再进入信号测试。

射频接收链路

信号从天线进入后,需要经过开关、放大、滤波、混频、基带处理和采样,最后才能交给数字部分处理。整条链路可以概括为:

天线
  → RF 开关 / 接收放大
  → 混频器与可控滤波通道
  → 中频滤波
  → MAX2837 收发器
  → RXBBI / RXBBQ 基带 I/Q
  → ADC
  → FPGA

硬件中使用了 SKY13317-373LF、SKY13453-385LF、RFFC5072TR13HFCN-4400+HT-LFCN-400+ 和 MAX2837 等器件,分别承担射频路径切换、旁路或增益控制、混频、滤波和基带输出等功能。

射频前端、放大器、混频器与滤波器原理图

射频调试不宜直接从最终 RSSI 结果开始。更可靠的做法是从供电与使能状态开始,依次检查天线端、RF 开关、放大器、滤波器、混频器本振和中频输出,再检查 MAX2837 的配置与 I/Q 输出,最后确认 ADC 采样值、FPGA 寄存器和 GD32 上报数据。每一级都能得到独立验证时,出现 RSSI 异常才容易定位到具体环节。

FPGA 负责采样与功率计算

时钟部分由 SI5351C-B-GMR 提供,MAX5864ETM+ 将采样数据送入 FPGA,FPGA 侧采用 XC2C64A-7VQG100C。在该架构中,FPGA 负责对采样时序进行固定控制,并把高速数据处理成 GD32 可以周期读取的寄存器结果。

FPGA 的主要任务包括:

  • 生成 ADC 所需的时钟、片选和读写时序;
  • 支持 I/Q 双通道同步采样,或单通道 RSSI 电压采样;
  • 将采样数据写入 FIFO,并统一数据宽度与寄存器接口;
  • 对 I/Q 数据计算瞬时功率;
  • 对功率或 RSSI 结果做滑动平均;
  • 通过 SPI 从机寄存器向 GD32 输出处理结果。

I/Q 模式下,基础功率计算可以写为:

P = I² + Q²

实际实现中,原始 ADC 值、滤波后功率和最终 RSSI 应分开保留。这样在进行 dBm 标定时,可以区分问题是出在采样、滤波还是标度换算,而不是只面对一个错误的最终数值。

时钟、MAX2837、ADC 与 FPGA 的硬件采样链路原理图

FPGA 的接口、电源和去耦部分也单独保留。后续固件联调时,数据通道、时钟、片选与 JTAG 配置接口都需要与这部分原理图逐项核对。

FPGA 接口、电源与去耦原理图

扫描、粗定位、精定位与锁定

寻向流程使用有限状态机实现,状态分为 IDLESCANCOARSEFINELOCKED

状态主要动作状态切换条件
IDLE保持执行机构不动,等待控制命令收到 CMD_SCAN_START 后进入 SCAN
SCAN进行 360° 扫描,按固定周期记录 RSSI 与角度RSSI 超过门限后进入 COARSE
COARSE记录信号波束的起止角,计算大致中心方向得到波束中心后进入 FINE
FINE在粗定位中心附近做三点采样,逐步减小步长步长收敛后进入 LOCKED
LOCKED停止扫描,持续监测 RSSI 是否保持有效信号失锁或收到停止命令后退出

软件设计中,SPI 读取周期约为 1 ms,电机控制回路目标频率约为 200 Hz,状态信息约以 20 Hz 上传到上位机。采样、控制和界面刷新使用不同的节拍,避免 PC 端的刷新速度影响下位机控制稳定性。

角度处理需要注意 0°/360° 跨界问题。例如 359° 与 1° 不能直接做普通算术平均,计算波束中心时应使用环形角度差;手动控制和自动控制也应把输出限制在 [0°, 360°) 范围内,防止跨越北向时出现突然反向。

串口协议与可靠传输

上位机将协议解析独立为 ProtocolParser,采用固定帧头、命令字、长度、负载和 CRC 的格式:

[0x55][0xAA][CMD][LEN_H][LEN_L][PAYLOAD...][CRC_H][CRC_L]

解析逻辑需要处理半包、粘包、帧头错位、异常长度和 CRC16 校验错误;接收原始帧也会被保留,便于后续日志回放。当前命令约定如下:

方向命令编码负载
GD32 → PCCMD_STATUS0x01状态 1 B、角度 2 B、RSSI 2 B
GD32 → PCCMD_DATA0x02原始信标数据
PC → GD32CMD_SET_THRESHOLD0x10RSSI 门限 2 B
PC → GD32CMD_SCAN_START0x11开始扫描
PC → GD32CMD_STOP0x12停止扫描
PC → GD32CMD_MANUAL_CTRL0x13方向 1 B、角度 2 B
双向ACK / NACK0x00 / 0xFF命令确认与异常反馈

角度采用 0.1° 定点表示,RSSI 采用 dBm × 10 定点表示。协议文档中必须统一字节序、符号位和数值范围,否则同一组字节在 GD32 和上位机中可能会被解释成不同含义。

Qt 上位机承担了哪些工作

BeaconReceiver 基于 Qt 6.10、qmake、Widgets 和 SerialPort 开发。上位机不仅用于显示数据,还承担了控制下发和调试记录工作:

  • 刷新串口、连接设备,并提供 115200 到 921600 的波特率选择;
  • 下发扫描、停止、门限设置和手动控制等命令;
  • 通过 ACK/NACK、超时和最多 5 次重发保证命令能被确认;
  • 实时显示状态、方位角、RSSI、峰值方位、信标 ID、GPS、高度和电量;
  • 使用 RSSI 极坐标图显示扫描余辉、最强点、门限与锁定方向;
  • 导出 CSV 状态日志、信标日志和完整 TX/RX 原始帧日志;
  • 在需要时通过高德地图或 Google Maps 展示坐标位置。

数据流采用“异步接收 → 协议解析 → 数据模型 → UI 更新”的方式。串口连续到达数据时,界面不必等待某个按钮回调结束,图表、日志和状态显示可以持续更新。

DEMO 已验证的内容与真机验证的边界

当前上位机提供 DEMO 模式:每 50 ms 生成一个状态帧,每 20 个状态帧生成一次信标数据帧,并模拟 RSSI 随角度变化的波束、粗定位、精定位、锁定和信号丢失后的重新扫描。

DEMO 可以用于确认协议打包与解析、ACK 队列与重发、状态机切换、极坐标显示,以及 CSV 和原始帧日志保存是否正确。它验证的是软件闭环和数据路径。

真实射频性能则仍需在硬件上验证,包括接收灵敏度、动态范围、频点一致性、RSSI 标定精度和最终寻向误差。对于这类接收机,软件流程跑通只是第一步,RF 到 dBm 的标定链路和机械角度误差同样决定最终效果。

后续工作

下一阶段将围绕真机联调继续推进:

  1. 为协议增加版本号、序列号和时间戳,使控制命令、ACK、重发和状态帧能够在日志中完整关联;
  2. 将 DEMO 中的文本信标逐步升级为 TLV 或带长度的二进制字段,并保留原始 payload;
  3. 同步记录信号源功率、射频测试点功率、ADC 原始值、FPGA 计算结果、GD32 读取值和上位机 RSSI,建立完整标定曲线;
  4. 补齐 GD32 固件、FPGA 逻辑、SPI 寄存器表和协议测试向量,用同一组 RSSI 序列检查三端行为是否一致。

这次科研训练让我们真正把“无线接收”从一个抽象概念拆成了可落地的工程链路:射频前端负责把信号送到基带,FPGA 把高速采样转化为稳定数据,GD32 完成实时寻向,Qt 上位机完成控制、显示和记录。接下来,团队会继续把真机数据、标定结果和联调过程补充进这个项目。