【学习笔记】STM32F407探索者HAL库开发(二)STM32F4最小系统设计
- 0 什么是最小系统
- 1 电源电路
- 1.1 数字部分电源
- 1.2 模拟部分电源
- 1.3 参考电压
- 1.4 VBAT
- 2 复位电路
- 3 BOOT启动电路(F4)
- 4 晶振电路
- 4.1 低速晶振
- 4.2 高速晶振
- 5 下载调试电路
- 6 串口一键下载电路
- 7 最小系统的设计意义
- 7.1 降低开发成本和风险
- 7.2 提高开发效率
- 7.3 便于故障排查和调试
0 什么是最小系统
最小系统就是保证MCU正常运行的最低要求(最小电路组成单元),一般是指 MCU的供电、复位、晶振、 BOOT等部分。 最小系统的作用是为电子设备或系统的开发和调试提供一个基础平台。在设计和开发复杂的电子系统时,通常先构建最小系统,确保核心部分能够正常工作,然后再逐步添加其他功能模块和外设,以实现完整的系统功能。这样可以降低开发难度,提高开发效率,并且便于进行故障排查和调试。
STM32F407的最小系统需求如下表所示:
类型 | 引脚名称 | 说明 |
---|---|---|
电源 | VDD/VSS | (数字部分)电源正(VDD)/负(VSS)引脚,给 STM32 供电 |
电源 | VDDA/VSSA | 模拟部分电源正/负引脚,给 STM32 内部模拟部分供电 |
电源 | VREF+/VREF- | 参考电压正/负引脚,给 STM32 内部 ADC/DAC 提供参考电压100脚及以上的STM32F407 型号才有这两个脚 |
电源 | VBAT | RTC&后备区域供电引脚,给RTC 和后备区域供电。一般VBAT接电池,用于断电维持 RTC 工作,如不需要,直接将VBAT接 VDD 即可 |
复位 | NRST | 复位引脚,用于复位 STM32,低电平复位 |
启动 | BOOT0/BOOT1 | 启动选择引脚,一般这两个脚各接一个下拉电阻即可,其他启动配置说明详见后续分析 |
晶振 | OSC_IN /OSC_OU | 外部HSE 晶振引脚,用于给 STM32提供高精度系统时钟,如果使用内部HSI 能满足使用需求,这两个脚可以不接晶振 |
晶振 | OSC32_IN / OSC32_OUT | 外部LSE 晶振引脚,用于给 STM32 内部 RTC 提供时钟,如果使用内部LSI 能满足使用需求,这两个脚可以不接晶振 |
调试 | SWCLK/SWDIO | SWD 调试引脚,用于调试 STM32 程序,同时 STM32 还支持JTAG 调试,不过不推荐使用!因为 SWD 省 IO! |
1 电源电路
为整个系统提供稳定的电力。这可能包括直流电源(如电池、电源适配器等)或交流电源经过整流、滤波和稳压等处理后得到的直流电源。可增加电源管理:确保电源的稳定性和可靠性,可能包括过压保护、过流保护、欠压保护等功能。
1.1 数字部分电源
VCC5进入(例如USB接口),通过AMS1117稳压器,输出VCC3.3,给STM32供电,芯片需求电源是2.0V ~ 3.6V供电。R56/R57是为了维修方便而增加的2个电阻,大家实际设计电路板时候,可以不加这两个电阻.VCC3.3M直接连接3.3V即可。
VCC3.3M为芯片上所有的VDD供电,VSS全部接到GND。
1.2 模拟部分电源
模拟部分的电源也是由数字电源VCC3.3获取的,经过一个RC低通滤波器,把3.3V中高频的部分过滤掉,保留低频的部分,给模拟部分的VDDC和VSSA供电。
1.3 参考电压
参考电压Vref+,也是来自于模拟部分电源,通过排针的方式引入,使用短路帽连接至VDDA(3.3V模拟电源),Vref-一般就是GND。如果不想使用VDDA,也可以通过排针,从外部接入一个参考电压。
1.4 VBAT
3.3V通过二极管给VBAT供电,当开发板断电时,没有3.3V后,通过BAT纽扣电池(3V)通过二极管给VBAT引脚供电,是的RTC和后备区域的数据保存下来。
2 复位电路
STM32复位引脚NRST保持低电平状态时间1~4.5ms即可复位。
3 BOOT启动电路(F4)
开发板默认状态,接线帽将35连接,46连接,通过两个下拉电阻将BOOT0和BOOT1接地。
4 晶振电路
4.1 低速晶振
4.2 高速晶振
5 下载调试电路
6 串口一键下载电路
PA9和PA10通过排针13引出,可通过外部的USB-TTL的模块或RS232电平转换连入。
开发板也提供了转换芯片CH340
右侧为USB接口,连接至电脑,通过CH340 D+/D-输入至CH340芯片,可以将USB的信号转换为TTL电平,通过TXD/RXD引脚输出给USART1的24排针,使用短路帽供给13。
7 最小系统的设计意义
7.1 降低开发成本和风险
- 资源聚焦:通过只包含最基本的组件,最小系统可以在开发初期以较低的成本进行设计和验证。这避免了在不确定整个系统需求的情况下投入大量资源到全面的设计中,降低了不必要的成本支出。
- 早期验证:在项目早期构建最小系统,可以快速验证核心功能和关键技术的可行性。如果在这个阶段发现问题,可以及时调整设计方向,避免在后续开发中投入更多资源后才发现不可行,从而降低项目失败的风险。
7.2 提高开发效率
- 简化设计流程:最小系统的简洁性使得设计过程更加清晰和直接。开发人员可以专注于核心功能的实现,减少了复杂系统中可能出现的干扰因素,加快了设计进度。
- 快速迭代:由于最小系统相对简单,对其进行修改和优化也更加容易。这使得开发人员可以快速进行迭代开发,根据测试结果和用户反馈及时调整设计,提高产品的质量和性能。
7.3 便于故障排查和调试
- 缩小问题范围:当系统出现故障时,最小系统的简单结构有助于快速定位问题所在。由于组件较少,排查故障的范围也相应缩小,提高了故障排查的效率。
- 独立测试:最小系统可以作为一个独立的单元进行测试,与其他部分的系统相对隔离。这使得测试过程更加简单和可控,能够更准确地发现和解决问题。
7.4 为系统扩展提供基础 - 明确核心需求:通过设计最小系统,开发人员可以更好地理解系统的核心需求和关键功能。这为后续的系统扩展提供了明确的方向和基础,确保扩展的部分与核心功能相协调。
- 逐步扩展:在最小系统的基础上,可以逐步添加其他功能模块和外设,实现系统的逐步扩展。这种渐进式的开发方式可以更好地控制开发过程,降低系统复杂性带来的风险。
总之,最小系统的设计在硬件电路开发中具有重要的意义和作用。它不仅可以降低开发成本和风险,提高开发效率,还便于故障排查和调试,为系统的扩展提供了坚实的基础。
注:笔记内容来自正点原子官方HAL库开发教程,配合STM32F407探索者开发板
注:最小系统的设计本质上是实现功能的最基本单元,在前期设计工作中作为基础架构而存在。为了便于调试,可以添加诸如 CAN 通信等模块,以更好地验证硬件电路的功能特性。这样的设计策略能够在项目初期快速构建一个可测试的平台,通过逐步添加功能模块和进行调试,确保硬件电路的稳定性和可靠性,为后续的系统扩展和优化提供坚实的基础。同时,CAN 通信模块等的引入可以实现更高效的数据传输和系统监控,有助于及时发现和解决潜在的问题,提高整个系统的开发效率和质量。