its-gen1/specs/uart_protocol_details.md

3.9 KiB
Raw Blame History

UART通信协议详细规范

1. 协议概述

UART通道主要用于SoC健康状态监控和关键传感器状态报告作为SPI主通道的补充和备份。

2. 物理层参数

参数 说明
波特率 1000000 1Mbps满足实时性要求
数据位 8 标准8位数据
停止位 1 标准1位停止位
校验位 None 无校验位
流控 None 无硬件流控

3. 帧格式定义

3.1 基本帧结构

[Header: 2B] [Payload: N B] [CRC16: 2B]

3.2 Header定义

  • 固定值: 0xAA55
  • 用途: 帧同步和识别

3.3 Payload结构

字段 长度 类型 描述
cpu_load 1字节 uint8_t CPU负载百分比 (0-100)
memory_usage 1字节 uint8_t 内存使用百分比 (0-100)
temp_soc 2字节 int16_t SoC温度 (℃ × 10范围-400~850)
critical_sensors 4字节 uint32_t 关键传感器状态位图
timestamp_ms 4字节 uint32_t 时间戳 (毫秒)

3.4 CRC16计算

  • 算法: CRC16-CCITT
  • 初始值: 0xFFFF
  • 多项式: 0x1021
  • 输入数据: Header + Payload

4. 通信时序

4.1 发送频率

  • 正常状态: 每100ms发送一次
  • 异常状态: 每10ms发送一次CPU负载>90%或内存使用>95%

4.2 超时机制

  • MCU接收超时: 300ms3个周期
  • 超时处理: 触发GPIO RESET_N复位信号

4.3 状态机

IDLE → SEND_FRAME → WAIT_ACK → IDLE
          ↓ (timeout)
      TRIGGER_RESET

5. 关键传感器状态位图

传感器 状态值 说明
0 摄像头 0=离线, 1=在线 视频流状态
1 温度传感器 0=正常, 1=异常 超出工作范围
2 加速度计 0=正常, 1=异常 数据异常或离线
3 GPS 0=无信号, 1=有信号 定位状态
4-31 预留 - 未来扩展

6. 错误处理

6.1 CRC校验失败

  • 处理方式: 丢弃当前帧,记录错误计数
  • 阈值: 连续5次CRC失败触发告警

6.2 帧同步丢失

  • 检测: 连续3帧Header不匹配
  • 恢复: 重新同步从下一个0xAA55开始

6.3 数据异常

  • 检测: CPU负载>100%、内存使用>100%、温度超出范围
  • 处理: 标记为异常状态,提高发送频率

7. MCU端实现要求

7.1 接收缓冲区

  • 大小: 128字节环形缓冲区
  • 处理: 中断驱动接收DMA可选

7.2 解析逻辑

typedef struct {
    uint8_t header[2];      // 0xAA55
    uint8_t cpu_load;       // 0-100%
    uint8_t memory_usage;   // 0-100%
    int16_t temp_soc;       // ℃ * 10
    uint32_t critical_sensors;
    uint32_t timestamp_ms;
    uint16_t crc16;
} uart_health_report_t;

int parse_uart_frame(uint8_t* buffer, size_t len, uart_health_report_t* report);
int validate_health_report(uart_health_report_t* report);
void handle_health_report(uart_health_report_t* report);

7.3 超时监控

// 300ms超时定时器
void start_uart_timeout_timer(void);
void stop_uart_timeout_timer(void);
void uart_timeout_handler(void); // 触发GPIO复位

8. 性能指标

指标 要求 测试方法
传输延迟 ≤10ms 示波器测量
误码率 ≤10⁻⁶ 长时间压力测试
CPU占用 ≤5% 性能分析工具
内存占用 ≤1KB 内存分析

9. 测试用例

9.1 正常通信测试

  • 发送标准健康报告帧
  • 验证MCU正确解析和处理

9.2 异常处理测试

  • CRC校验失败帧
  • 超时场景模拟
  • 数据异常场景

9.3 边界条件测试

  • 最大CPU负载 (100%)
  • 最大内存使用 (100%)
  • 极端温度值 (-40℃, 85℃)

10. 与SPI协议的关系

  • 主备关系: SPI为主通道UART为监控通道
  • 独立性: UART不依赖SPI状态独立工作
  • 协同: UART超时可触发SPI复位反之亦然