its-gen1/specs/spi_protocol_details.md

3.8 KiB
Raw Blame History

SPI通信协议详细规范

1. 物理层参数

  • 时钟频率: 10MHz (可配置范围: 1-20MHz)
  • 数据位宽: 8位
  • 时钟极性: CPOL=0 (空闲时低电平)
  • 时钟相位: CPHA=0 (第一个边沿采样)
  • MSB/LSB: MSB first
  • 最大包长: 512字节 (包含头部和CRC)

2. 协议帧格式

2.1 基本帧结构

字段 长度 描述
SOF 1字节 起始标志 (0xAA)
Command 1字节 命令类型
Length 2字节 数据长度 (大端序)
Payload N字节 有效载荷
CRC32 4字节 CRC32校验 (IEEE 802.3)
EOF 1字节 结束标志 (0x55)

2.2 命令类型定义

命令值 命令名称 描述
0x01 POWER_MODE_REQ 电源模式请求
0x02 POWER_MODE_ACK 电源模式确认
0x03 DATA_TRANSFER 传感器数据传输
0x04 DATA_ACK 数据接收确认
0x05 STATUS_REPORT 状态报告
0x06 ERROR_REPORT 错误报告
0x07 CONFIG_UPDATE 配置更新
0x08 CONFIG_ACK 配置确认

3. 传感器数据传输协议 (DATA_TRANSFER)

3.1 数据包格式

SOF(0xAA) + CMD(0x03) + LEN(2B) + [SensorID(1B) + Timestamp(4B) + DataLength(2B) + SensorData(NB)] + CRC32(4B) + EOF(0x55)

3.2 传感器数据结构

字段 长度 描述
SensorID 1字节 传感器标识符
Timestamp 4字节 时间戳 (毫秒, 大端序)
DataLength 2字节 传感器数据长度 (大端序)
SensorData N字节 传感器原始数据

3.3 传感器ID映射表

ID 传感器类型 数据格式 更新频率
0x01 摄像头 JPEG/YUV帧 30Hz
0x02 温度传感器 float32 (℃) 1Hz
0x03 加速度计 int16[3] (X,Y,Z) 100Hz
0x04 GPS struct {double lat, lon; float alt;} 1Hz
0x05 陀螺仪 int16[3] (X,Y,Z) 100Hz
0x06 磁力计 int16[3] (X,Y,Z) 10Hz
0x07 气压计 float32 (hPa) 1Hz
0x08 湿度传感器 float32 (%) 1Hz
0x09-0xFF 预留 - -

4. 流量控制与错误处理

4.1 ACK机制

  • SoC收到DATA_TRANSFER后必须在10ms内回复DATA_ACK
  • ACK包包含接收到的SensorID和Timestamp用于确认

4.2 重传机制

  • 如果MCU在20ms内未收到ACK则重传数据包
  • 最大重传次数: 3次
  • 重传间隔: 10ms

4.3 错误码定义

错误码 描述 处理方式
0x01 CRC校验失败 丢弃数据包,记录错误
0x02 包长度超限 丢弃数据包,记录错误
0x03 无效传感器ID 丢弃数据包,记录错误
0x04 内存不足 丢弃数据包,触发内存清理
0x05 通信超时 触发UART健康检查

5. 性能指标

5.1 带宽计算

  • 摄像头(720p@30fps): ~8Mbps
  • 其他传感器总和: ~100kbps
  • 总带宽需求: ~8.1Mbps
  • SPI实际带宽(10MHz): 10Mbps
  • 带宽利用率: ~81%

5.2 实时性要求

传感器类型 最大端到端延迟 SPI传输延迟
摄像头 100ms <10ms
加速度计 50ms <5ms
温度传感器 500ms <1ms
GPS 1000ms <1ms

6. 实现注意事项

6.1 MCU端实现

  • 使用DMA传输提高效率
  • 实现双缓冲区避免数据丢失
  • 定期发送心跳包维持连接

6.2 SoC端实现

  • 使用中断驱动接收
  • 实现环形缓冲区处理突发流量
  • 定期检查MCU健康状态

7. 测试用例

7.1 功能测试

  • 正常数据传输
  • CRC校验失败处理
  • 包长度边界测试
  • 传感器ID有效性验证

7.2 性能测试

  • 最大带宽压力测试
  • 实时性延迟测试
  • 长时间稳定性测试

7.3 异常测试

  • 通信中断恢复
  • MCU复位后同步
  • SoC内存不足处理