# C/C++/MCU
FDILink USART 使用手册
# 1. 简介
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是一种通用串行通信接口,支持全双工、同步或异步传输,便于高效获取模块数据。
FDISYSTEMS 通过 USART 提供三类能力:
- 主动发送模式:模块按设定频率主动向主机输出数据
- 数据帧请求模式:按需发送请求,获取对应数据帧
- 指令配置模式:通过串口指令完成参数配置
三种模式可灵活组合,适配不同数据获取与配置场景。
# 2. 使用方法
# (1) 主动发送模式
- 若电脑尚未安装串口驱动,请先下载:串口驱动下载。
- 在 FDIGroundStation 上位机中配置目标 COM 口及输出频率:
- 配置输出 COM 口波特率
- 按 FDILink 协议手册配置数据包输出频率
- 保存设置参数
- 重启设备使配置生效(必须先保存再重启)
- 结合本公司例程与通信协议手册,在 USART 总线上接收串口数据。
- 各数据包字段定义见 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 协议手册与例程接收代码,自行编写所需数据包的接收逻辑。



