14.1 综合项目需求与系统架构
第 13 章分别介绍了定时器、DMA、串行链路与转换器。综合项目把它们组合成环境控制器:采样温度传感器、保存近期样本、接收串行命令并驱动风扇。集成应从可测量需求开始,而不是先列元件清单。
把目标转换为可测试的预算
“可靠测量温度”是一个目标(goal)。需求(requirement)还要加入可观察条件与限制:“每 1 ms 捕获一个 10 位样本,保留最新 256 个样本,并在温度超过 70 °C 后 5 ms 内更新风扇。”测试可以判断这句话是否成立。
需求会产生彼此关联的预算:
- 1 ms 采样周期意味着 1 ksample/s 到达率。
- 每个样本用两个字节保存时,存储器带宽为 2 kB/s,256 个样本需要 512 字节。
- 115200 波特的 8N1 帧中,每个有效载荷字节占 10 个位时间,因此扣除协议开销前的理论上限为 11520 bytes/s。
- 5 ms 响应期限包含转换、中断等待、软件执行与 DAC 更新,而不只是某个 ISR。
正在绘制图表…
预算能提前暴露不可能的组合。9600 波特链路不能用 8N1 帧连续发送每秒 2000 个有效载荷字节,因为理想有效载荷上限只有 960 bytes/s。设计必须降低报告率、压缩数据、提高波特率或修改需求。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...
分配职责并定义每一个接口
架构(architecture)把各项职责分配给硬件或软件,并定义模块如何交换控制、状态与数据。在本综合项目中:
- 定时器提供采样触发。
- ADC 把传感器电压转换成编码。
- DMA 把编码搬入循环存储缓冲区,无需 CPU 为每个样本执行指令。
- 中断控制器报告缓冲里程碑与 UART 事件。
- 前台软件校准样本、解析命令并选择风扇命令。
- DAC 把该命令转换成执行器电压。
正在绘制图表…
每条箭头都需要接口约定:生产者、消费者、单位、速率、宽度、所有权、就绪方式与错误行为。“ADC 连接 DMA”仍不完整,直到设计明确就绪请求、数据宽度、目的地址、计数和终值动作。边界图还能防止隐藏职责:校准属于软件,电压保护与量程调理属于 ADC 之前的电路。
架构评审要寻找缺失路径、重复所有权和循环假设。若 CPU 与 DMA 都能在没有协调的情况下写同一个缓冲位置,即使模块齐全,系统仍不安全。下面的构建器会让接口遗漏与所有权冲突直接可见。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...
第 14.1 节建立了可测量约定并分配职责。第 14.2 节将把架构落实为无冲突地址映射与电气有效的共享总线。