图表表达规范
在技术博客中,为了清晰表达电路和架构,我们采用以下规范:
1. 简单电路用表格
❌ 不好的方式(ASCII 图会乱)
✅ 推荐方式(表格清晰)
| 电源 | 电容 | 连接 | 作用 |
|---|---|---|---|
| VDD | 10uF | → GND | 低频滤波 |
| VDD | 0.1uF | → GND | 高频去耦 |
| I2C SDA | 4.7kΩ | → 3.3V | 上拉电阻 |
| I2C SCL | 4.7kΩ | → 3.3V | 上拉电阻 |
2. 系统架构用 SVG 图片
❌ 复杂的 ASCII 框图(会乱码)
✅ 推荐方式(SVG 矢量图)
架构说明:
- 传感器层:MPU6050 提供 6 轴 IMU 数据(I2C 接口)
- 主控层:STM32F4 运行 FreeRTOS,168MHz Cortex-M4
- 执行层:TB6612 双 H 桥驱动,PWM 控制
- 反馈层:AS5047 磁编码器提供位置反馈(SPI 接口)
FreeRTOS 任务划分:
- 控制任务 (1kHz):串级 PID 控制(直立环 + 速度环)
- 通信任务:蓝牙遥控、状态显示
- 传感器任务:IMU 数据采集、编码器读取
3. 代码示例用代码块
✅ 正确方式
// PID 控制示例
float pid_calc(PID_TypeDef *pid, float target, float measure) {
float error = target - measure;
// 比例项
float p_term = pid->Kp * error;
// 积分项(带限幅)
pid->integral += error;
pid->integral = constrain(pid->integral, -100, 100);
float i_term = pid->Ki * pid->integral;
// 微分项
float d_term = pid->Kd * (error - pid->last_error);
return p_term + i_term + d_term;
}
4. 数学公式用 LaTeX
✅ 推荐方式
PID 计算公式:
$$ u(t) = K_p e(t) + K_i \int_0^t e(\tau)d\tau + K_d \frac{de(t)}{dt} $$
离散化:
$$ u[k] = K_p e[k] + K_i \sum_{i=0}^{k} e[i] + K_d (e[k] - e[k-1]) $$
5. 时序用 SVG 图片 + 列表
❌ ASCII 时序图(会乱码)
✅ 推荐方式(SVG 时序图 + 列表)
I2C 读取时序说明:
- 起始条件: SDA 高→低(SCL 高电平)
- 发送地址: 7 位从机地址 + 读位
- 等待应答: 第 9 周期采样 ACK
- 读取数据: 8 位数据,MSB 在前
- 发送 NACK: 最后一个字节后
- 停止条件: SDA 低→高(SCL 高电平)
6. PCB 布局用文字说明
✅ 推荐格式
关键器件布局原则:
| 器件 | 位置 | 注意事项 |
|---|---|---|
| MCU | 板子中心 | 靠近去耦电容 |
| 晶振 | 靠近 MCU OSC 引脚 | 下方不走线 |
| LDO | 靠近电源入口 | 输入输出电容就近 |
| 连接器 | 板边 | 固定孔附近 |
布线规则:
- 电源线宽: ≥0.8mm (1A)
- 信号线宽: 0.2-0.3mm
- 地平面: 完整,避免分割
- 差分对: 等长,间距 3W
总结
技术文档的图表表达原则:
- 简单电路 → 表格
- 系统架构 → 文字 + 表格
- 代码示例 → 代码块
- 数学公式 → LaTeX
- 时序关系 → 列表
- PCB 布局 → 表格 + 文字
这样即使在纯文本环境下,也能清晰表达技术内容!
本文档规范适用于技术博客、数据手册、应用笔记等场景