Files
hj_datalink/doc/HSJL 上位机串口通信协议.md
T

15 KiB
Raw Blame History

HSJL 上位机串口通信协议

版本:v1.0 日期:2025 年 6 月 5 日


总览

  • 物理接口:UART(串口通信)

  • 通信方式:PC 主动下发控制帧,节点响应或上传数据

  • 支持功能:

    • 指令控制
    • 图像数据传输
    • 节点遥测与状态上报
  • UART 串口配置

    参数 配置值
    波特率 460800
    数据位 8
    停止位 1
    校验位 无
    流控 无

UART 帧结构定义

每帧数据通过串口独立传输,格式如下:

[帧头][数据段][Dummy Byte][校验和][数据长度][帧尾]
字段名 字节数 (Byte) 说明
帧头 2 固定值:0x5A 0x54
数据段 ≤1000 业务数据内容
Dummy Byte 1 固定填充:0x00
校验和 1 所有数据段字节累加和(无符号累加)
数据段长度 2 数据段字节数(不含 Dummy/校验/帧尾)
帧尾 2 固定值:0x5A 0xFE

帧内冲突规避规则

为防止数据段中出现帧尾 0x5A 0xFE:

  • 若数据段中出现 0x5A 0xFE,需插入 0x00 变成 0x00 0x5A 0xFE
  • 接收端收到 0x00 0x5A 0xFE 还原为 0x5A 0xFE

帧长说明

  • 数据段长度包括避免冲突填充的0x00
  • 整个 UART 帧的长度(包括帧头、数据段、Dummy、校验和、数据段长度、帧尾)不超过 1024 Byte

数据段指令格式定义

数据段格式如下,下发(PC→节点)和上传(节点→PC)均使用一致的格式:

[指令][节点类型][Payload]
字段名 字节数 (Byte) 说明
指令 1 控制指令
节点类型 1 固定填充:0xEE
Payload ≤1000 由指令类型决定

指令类型如下:

指令 含义 下发 Payload 长度 (Byte) 上传 Payload 长度 (Byte)
0xE1 自检 0, payload 无数据 21
0xE2 Echo 测试 ≤1000 与下发长度一致
0xE3 节点配置 4 None,无上传
0x33 系统信息 (目前可忽略) 54 None,无上传
0xE4 发送数据下发 ≤1000 None,无上传
0xE5 接收数据上传 None,无下发,自动上传 ≤1000
0xE6 遥测 0, payload 无数据 188

自检指令

自检指令上传的 Payload 格式如下,顺序存储,共 19 字节:

字段名 字节数 (Byte) 说明
节点状态 1 0xAA: 正常
0x55: 异常
FPGA 电压状态 1 [0]: VCCPINT 电源轨道状态
[1]: VCCPAUX 电源轨道状态
[2]: VCCO_DDR 电源轨道状态
[3]: VCCINT 电源轨道状态
[4]: VCCAUX 电源轨道状态
[5]: VCCBRAM 电源轨道状态
以上 1 表示正常,0 表示异常
(未使用) 时钟芯片锁定状态 1 [0]: PLL1 锁定状态
[2]: PLL2 锁定状态
以上 1 表示锁定,0 表示失锁
(未使用) ADC 锁定状态 1 [0]: AD-1 BBPLL 锁定状态
[2]: AD-2 BBPLL 锁定状态
[4]: AD-1 RFPLL 锁定状态
[6]: AD-2 RFPLL 锁定状态
以上 1 表示锁定,0 表示失锁
(未使用) ADC-1 温度 1, int8 温度值,有符号数
(未使用) ADC-2 温度 1, int8 温度值,有符号数
FPGA 温度 1, int8 温度值,有符号数
天线 -1 频率 2 [15]: 乒乓环工作指示,1 表示 PLL1 工作,0 表示 PLL2 工作
[14:0]: 频率,对应实际频率需要+3700 MHz
天线 -2 频率 2 [15]: 乒乓环工作指示,1 表示 PLL1 工作,0 表示 PLL2 工作
[14:0]: 频率,对应实际频率需要+3700 MHz
天线 -3 频率 2 [15]: 乒乓环工作指示,1 表示 PLL1 工作,0 表示 PLL2 工作
[14:0]: 频率,对应实际频率需要+3700 MHz
天线 PLL 锁定状态 1 [5]: 天线-1-PLL1 锁定状态
[4]: 天线-1-PLL2 锁定状态
[3]: 天线-2-PLL1 锁定状态
[2]: 天线-2-PLL2 锁定状态
[1]: 天线-3-PLL1 锁定状态
[0]: 天线-3-PLL2 锁定状态
以上 1 表示锁定,0 表示失锁
天线工作状态 1 [2]: 天线-3 工作状态
[1]: 天线-2 工作状态
[0]: 天线-1 工作状态
以上 1 表示抗干扰模式,0 表示普通模式
天线温度 1, int8 温度值,有符号数
天线状态预留 1 预留
物理层配置 ID 1 节点 ID,用于区分物理层配置
额外控制预留 3 预留

Echo 测试

Echo 测试中节点将 PC 下发的数据直接回传,不做其他处理。

节点配置指令

节点配置指令下发的 Payload 格式如下,顺序存储,共 19 字节:

字段名 字节数 (Byte) 说明
节点使能 1 0xAA: 启用
0x55: 停用
节点角色 1 0x11: 簇首
0x00: 成员
业务速率 1 0x22: 128 kbps
0x33: 256 kbps
0x44: 2 Mbps
时隙表编号 1 编号值,0~2

发送数据下发

需注意整个 UART 帧的长度(包括帧头、数据段、Dummy、校验和、数据段长度、帧尾)不超过 1024 Byte。

接收数据上传

接收到的数据将自动打包上传,无需下发指令。

遥测指令

遥测指令上传的 Payload 由 5 部分组成,顺序存储,共 188 字节:

字段名 字节数 (Byte)
时间戳 8
总线日志 16
链路层日志 88
物理层日志 56
硬件状态日志 20

时间戳

时间戳是一个 64-bit 计数器,每一位代表 10 ns。

总线日志

总线日志顺序存储,共 16 字节:

字段名 字节数 (Byte) 说明
节点配置记录 4 记录上一次节点配置指令
接收数据包计数 4 每接收一包数据,计数器+1
发送数据包计数 4 每发送一包数据,计数器+1
遥测请求计数 4 每收到一次遥测请求,计数器+1

链路层日志

链路层日志顺序存储,共 88字节:

字段名 字节数 (Byte) 说明
时元号 4 250 ms per LSB
时隙号 1 2 ms per LSB
节点类型 1 0xAA: 簇首
0xCC: 成员
在网状态 1 0x11: 在网
0x00: 断网
工作状态 1 0x11: 建网状态
0x22: 正常运行
重连计数器 4 每断网重连一次,计数器+1
天线编号 1 当前工作的天线编号
建网帧发送计数器 4 每发送一次建网帧,计数器+1(仅簇首)
建网帧接收计数器 4 每配置接收一次建网帧,计数器+1(仅成员)
建网帧接收正确计数器 4 每正确接收一次建网帧,计数器+1(仅成员)
应答帧发送计数器 4 每发送一次应答帧,计数器+1(仅成员)
应答帧接收计数器 4 每配置接收一次应答帧,计数器+1(仅簇首)
应答帧接收正确计数器 4 每正确接收一次应答帧,计数器+1(仅簇首)
分发帧发送计数器 4 每发送一次分发帧,计数器+1(仅簇首)
分发帧接收计数器 4 每配置接收一次分发帧,计数器+1(仅成员)
分发帧接收正确计数器 4 每正确接收一次分发帧,计数器+1(仅成员)
网关帧发送计数器 4 每发送一次网关帧,计数器+1
网关帧接收计数器 4 每配置接收一次网关帧,计数器+1
网关帧接收正确计数器 4 每正确接收一次网关帧,计数器+1
RTT帧发送计数器 4 每发送一次RTT帧,计数器+1
RTT帧接收计数器 4 每配置接收一次RTT帧,计数器+1
RTT帧接收正确计数器 4 每正确接收一次RTT帧,计数器+1
时间偏移量记录 4, int32 记录上一次节点时间和帧同步时间的偏差
发送数据ID记录 4 记录上一次发送数据的ID
接收数据ID记录 4 记录上一次接收数据的ID
预留 3 预留

物理层日志

物理层日志顺序存储,共 56 字节:

字段名 字节数 (Byte) 说明
捕获计数器 4 每捕获成功一次,计数器+1
帧同步计数器 4 每帧同步成功一次,计数器+1
译码计数器 4 每译码成功一次,计数器+1
CRC 计数器 4 每 CRC 校验通过一次,计数器+1
多普勒估计 8, double 记录上一次多普勒估计结果
帧同步时间 8 记录上一次帧同步时间
捕获峰均比 8, double 记录上一次捕获峰均比
捕获码相位估计 1 记录上一次码相位估计结果
捕获频偏估计 1 记录上一次频偏估计结果
帧同步峰均比 8, double 记录上一次帧同步峰均比
帧同步频偏估计 1 记录上一次帧同步频偏通道
解交织幅度估计 2 记录解交织幅度估计
天线控制模式 1 记录天线控制模式
预留 2 预留

硬件状态日志

硬件状态日志与自检回令基本一致,顺序存储,共20 字节:

字段名 字节数 (Byte) 说明
FPGA 电压状态 1 [0]: VCCPINT 电源轨道状态
[1]: VCCPAUX 电源轨道状态
[2]: VCCO_DDR 电源轨道状态
[3]: VCCINT 电源轨道状态
[4]: VCCAUX 电源轨道状态
[5]: VCCBRAM 电源轨道状态
以上 1 表示正常,0 表示异常
(未使用) 时钟芯片锁定状态 1 [0]: PLL1 锁定状态
[2]: PLL2 锁定状态
以上 1 表示锁定,0 表示失锁
(未使用) ADC 锁定状态 1 [0]: AD-1 BBPLL 锁定状态
[2]: AD-2 BBPLL 锁定状态
[4]: AD-1 RFPLL 锁定状态
[6]: AD-2 RFPLL 锁定状态
以上 1 表示锁定,0 表示失锁
(未使用) ADC-1 温度 1, int8 温度值,有符号数
(未使用) ADC-2 温度 1, int8 温度值,有符号数
FPGA 温度 1, int8 温度值,有符号数
天线 -1 频率 2 [15]: 乒乓环工作指示,1 表示 PLL1 工作,0 表示 PLL2 工作
[14:0]: 频率,对应实际频率需要+3700 MHz
天线 -2 频率 2 [15]: 乒乓环工作指示,1 表示 PLL1 工作,0 表示 PLL2 工作
[14:0]: 频率,对应实际频率需要+3700 MHz
天线 -3 频率 2 [15]: 乒乓环工作指示,1 表示 PLL1 工作,0 表示 PLL2 工作
[14:0]: 频率,对应实际频率需要+3700 MHz
天线 PLL 锁定状态 1 [5]: 天线-1-PLL1 锁定状态
[4]: 天线-1-PLL2 锁定状态
[3]: 天线-2-PLL1 锁定状态
[2]: 天线-2-PLL2 锁定状态
[1]: 天线-3-PLL1 锁定状态
[0]: 天线-3-PLL2 锁定状态
以上 1 表示锁定,0 表示失锁
天线工作状态 1 [2]: 天线-3 工作状态
[1]: 天线-2 工作状态
[0]: 天线-1 工作状态
以上 1 表示抗干扰模式,0 表示普通模式
天线温度 1, int8 温度值,有符号数
天线状态预留 1 预留
物理层配置 ID 1 节点 ID,用于区分物理层配置
额外控制预留 3 预留