# C/C++/MCU

FDILink USART 使用手册

FDILink USART

# 1. 简介

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是一种通用串行通信接口,支持全双工、同步或异步传输,便于高效获取模块数据。

FDISYSTEMS 通过 USART 提供三类能力:

  • 主动发送模式:模块按设定频率主动向主机输出数据
  • 数据帧请求模式:按需发送请求,获取对应数据帧
  • 指令配置模式:通过串口指令完成参数配置

三种模式可灵活组合,适配不同数据获取与配置场景。

# 2. 使用方法

# (1) 主动发送模式

  1. 若电脑尚未安装串口驱动,请先下载:串口驱动下载。
  2. 在 FDIGroundStation 上位机中配置目标 COM 口及输出频率:
    1. 配置输出 COM 口波特率
    2. 按 FDILink 协议手册配置数据包输出频率
    3. 保存设置参数
    4. 重启设备使配置生效(必须先保存再重启)
  3. 结合本公司例程与通信协议手册,在 USART 总线上接收串口数据。
  4. 各数据包字段定义见 FDILink 数据包;本节仅说明获取方法与步骤。
主动发送模式示意

# (2) 数据帧请求模式

用户可通过问答方式获取导航系统数据:发送目标数据帧的 ID 与偏移(Offset),系统返回当前时刻对应数据。若该数据帧已配置为固定频率输出,则会持续实时返回。

帧格式定义(MSG_REQUEST_PACKET,Packet ID = 0xA0):

Offset Size Format Field Unit Description
0 1 uint8_t ID 数据帧的 ID 编号
1 1 uint8_t CMD 请求时填 0,其他未定义
2 2 uint16_t Reserved 保留

更多说明见 MSG_REQUEST_PACKET。

# (3) 指令配置模式

可通过串口调试助手或 MCU 串口命令进行主要功能配置。下文示例分别以串口助手发送与 MCU 指令函数调用说明;完整步骤见 FDILink 指令配置说明。

# 串口助手常用命令

与 FDILink 指令一览 一致(点击指令名可跳转详细说明):

序号 配置命令 功能
1 #fconfig 进入配置模式
2 #fdeconfig 退出配置模式
3 #freboot 热重启
4 #freset 恢复出厂默认配置
5 #fsave 保存设置到 Flash
6 #fante 查询 / 配置天线相关参数
7 #fimucal IMU 调平 / 零偏校准
8 #fmsg 数据包查询与设置
9 #fparam 参数读取与设置
10 #fmagcal2d 磁力计 2D 平面校准
11 #fmagcal3d 磁力计 3D 空间校准
12 #fdgnss 差分账号 / RTCM / NTRIP 配置

# MCU 指令配置函数参照表

以下示例与 SDK 例程 Core/Src/main.c 及 FDI_config.h / FDILink.h 一致。

序号 指令函数 功能 形参
1 fdiComSetConfigBaud(COM1, COMM_BAUD_921600); 配置设备数据口波特率 (COM 口, 波特率)
2 fdiComSetConfigType(COM1, COMM_STREAM_TYPE_NAV); 配置设备数据口功能 (COM 口, 数据口功能)
3 fdiComSetConfigUserDefine(USER_DEFINE_CAN_ID, 1); 配置 USER_DEFINE 数据 (USER_DEFINE_ID, NUM)
4 fdiComSetConfigGPIOs(GPIO2, GPIOS_1PPS_OUTPUT); 配置 GPIO 功能 (GPIO 口, 模式)
5 fdiComSetConfigAID(AID_ACCEL_GRAVITY, ENABLE); 配置 AID 开关 (AID 功能, 开关)
6 fdiComGetAxis(); 查询轴安装方向
7 fdiComSetConfigAxis("x", 0); 配置轴角度方向 (轴, 角度)
8 fdiComGetAxis(); 查询轴安装方向
9 fdiComGetAnte(); 查询双天线航向与载体前向夹角
10 fdiComSetConfigAnteHeadbias(0); 配置双天线航向偏角 (航向偏角)
11 fdiComSetConfigAnteBaseline(0); 配置双天线基线长度 (基线长度)
12 fdiComSetConfigAnteArm(0, 0, 0); 配置 GNSS 主天线到 IMU 的杆臂 (x, y, z)
13 fdiComGetAnte(); 查询双天线航向与载体前向夹角
14 fdiComSetConfigImucailed(Gyro); 配置 IMU 校准 (IMU 校准项)
15 fdiComSetConfigPacketSentMsg(MSG_UNIX_TIME, 20); 配置发送数据包及频率 (数据包, 频率)
16 fdiComGetParam("MSG_IMU"); 查询参数 (参数名)
17 fdiComGetParam("COMM_BAUD3"); 查询参数 (参数名)
18 fdiSetParam("COMM_BAUD3", 8); 配置参数数值 (参数名, 数值)
19 fdiComGetParam("COMM_BAUD3"); 查询参数 (参数名)
20 fdiComConfigAIDmag3DMagetic(Enable); 配置 AIDmag3DMagnetic 开关 (开关)
21 fdiSetSave(); 保存配置
22 fdiSetReboot(); 重启设备

参数写法说明(以 SDK 为准):

  • char* 字符串实参需加引号,如 "x"、"COMM_BAUD3"(见 fdiComSetConfigAxis / fdiComGetParam / fdiSetParam)。
  • 枚举 / 宏常量不加引号,如 COM1、Gyro、Enable、GPIOS_1PPS_OUTPUT。
  • MSG_UNIX_TIME 等在头文件中已定义为字符串宏(如 "51"),调用时不再加引号。
  • fdiComSetConfigAID(..., ENABLE) 中的 ENABLE 来自 STM32 HAL;磁力计开关请用 SDK 宏 Enable / Disable。
  • 函数名 fdiComSetConfigImucailed、fdiComConfigAIDmag3DMagetic 与头文件拼写一致(含既有拼写)。

# 3. 测试效果

下图仅说明:USART 数据包经配置后,会按约定格式对外发送。可依据 FDILink 协议手册与例程接收代码,自行编写所需数据包的接收逻辑。

USART 测试效果