由于老师使用的各引脚分门别类的单片机原理图我没有找到,我使用是引脚按顺序摆放的,不方便一个模块一个模块截图展示,所以这部分使用老师的原理图。
一、电源
1.1电源的介绍
1.1.1数字电源和地(VDD和VSS)
数字电源引脚提供电压给所有的数字电路部分。这些数字电路包括:
- 处理器核心: 执行指令、处理数据。
- 存储器: 包括 Flash 和 SRAM,用于存储程序和数据。
- 数字外设: 包括 GPIO、UART、SPI、I2C、TIMERS 等,用于各种数字通信和控制。
- 内部振荡器: 产生时钟信号以驱动处理器和其他外设。
数字地引脚提供了所有数字电路部分的接地参考点,有:
- 所有通过 VDD 供电的电流最终都会返回 VSS,以形成一个完整的电流回路。
- 在 PCB 设计中,所有的 VSS 引脚通常都连接到一个共同的地平面,以减少电噪声和干扰。
1.1.2模拟电源和地(VDDA和VSSA)
模拟电源引脚提供电压给所有的模拟电路部分。主要包括:
- ADC(模数转换器): 将模拟信号转换为数字信号。
- DAC(数模转换器): 将数字信号转换为模拟信号。
- 内部参考电压源: 提供一个稳定的参考电压给 ADC 和 DAC ,确保转换精度。
模拟地引脚提供了所有模拟电路部分的接地参考点,有:
- 与 VSS 相同,所有通过 VDDA 供电的电流最终都会返回 VSSA,以形成一个完整的电流回路。
1.1.3两电源的区别与联系
数字电路通常会产生高频开关噪声,这些噪声如果直接干扰到模拟电路,会导致模拟信号的不稳定和精度下降。因此,使用独立的模拟电源和接地可以减少这种干扰。
模拟电路需要一个非常干净、稳定的电源,以确保精确的信号处理,因此 VDDA 通常通过额外的滤波电路进行去耦。
为了减少数字电路产生的高频噪声对模拟电路的干扰,VSSA 和 VSS 通常在 PCB 设计中被单独处理,只有在一个单点连接,通常是靠近电源入口的地方。
1.2滤波介绍
将 3.3V 的电源引入供单片机使用。
(1)120R 磁珠
- 作用: 磁珠是一种高频阻抗元件,串联在电源线上,阻止高频噪声沿电源线传播。
- 原理: 磁珠在直流和低频交流信号下表现为低阻抗,但在高频下表现为高阻抗,从而滤除高频噪声。
- 选择: 120Ω 的磁珠通常用于中等频率范围的噪声抑制。它在高频范围内提供足够的阻抗来衰减噪声。
(2)10µF 电容
- 作用: 10µF 电容用于低频滤波,平滑直流电压,消除较低频率的电源波动。
- 原理: 较大电容值在低频下有较小的阻抗,可以有效地平滑直流电压和滤除低频噪声。
- 位置: 10µF 电容通常放置在电源入口处,以平滑整个电源网络的电压。
(3)0.1µF 电容
- 作用: 0.1µF 电容用于高频滤波,抑制高频噪声和尖峰干扰。
- 原理: 较小电容值在高频下有较小的阻抗,可以有效地滤除高频噪声和尖峰干扰。
- 位置: 0.1µF 电容通常放置在每个 VDD/VDDA 引脚附近,尽量靠近 IC,以提供最有效的高频噪声滤波。
(4)10nF 电容
- 补充滤波频段: 与其他滤波电容(10µF、0.1µF)结合使用,可以覆盖更宽的频率范围,为模拟电源提供全频段的电源噪声抑制(上面也说了模拟电源需要非常的纯净)。
1.3电路图
1.4陈氏理解(可能只有我自己能看懂)
数字信号(数字电源供电)比如信号线上的差分信号,1 就是 1 , 0 就是 0 ,差别还是挺大的,不容易混淆,但是变化快,存在对其他形式信号的干扰(此处就是指模拟信号),所以将数字信号和模拟信号区分开了。
再其次,模拟信号不像数字信号那样 1 就是 1 ,0 就是 0 ,它的值是多少会换算成相应的二进制数字,所以更要准确,滤波也更严格。
二、复位
2.1工作过程
- 正常工作状态: 当复位按钮未按下时,上拉电阻将 RST 引脚维持在高电平。此时,微控制器处于正常工作状态。
- 按下复位按钮: 当按下复位按钮时,RST 引脚被直接拉低到地。这触发了微控制器的复位过程。
- 释放复位按钮: 当释放复位按钮时,RST 引脚通过上拉电阻恢复到高电平。需要去耦电容帮助滤除任何在恢复过程中的瞬态噪声(也有按下过程的去耦),确保 RST 引脚稳定地返回高电平,从而使微控制器从复位状态中正常启动。
2.2特殊情况
- 外部干扰: 在有较强电磁干扰的环境中,复位引脚可能会受到干扰,导致误复位。适当的滤波电路(如更大的电容或更低的上拉电阻)可以进一步增强抗干扰能力。
- 复位时间: 去耦电容的值决定了复位信号的时间常数。较大的电容会导致较长的复位时间,但可以更好地滤除低频噪声。需要根据实际应用进行选择。
2.3我有一个愚蠢的问题
问:为什么上拉到的电源是数字电源 VDD 而不是模拟电源 VDDA ?
答:
1. 电源稳定性
VDD 稳定性: VDD 是数字电源,通常由稳压器直接供电,电压相对稳定,且开机时能快速达到稳定值。复位电路需要一个稳定的电压源来保证复位信号的可靠性。
VDDA 依赖 VDD: VDDA 是模拟电源,虽然也很稳定,但它通常依赖于 VDD 的供电,在一些设计中,VDDA 可能会经过滤波和调节以满足模拟电路的需求,启动速度和稳定性可能稍微慢于 VDD。
2. 复位电路对数字电路的作用
复位电路主要针对数字电路: 复位信号主要用于重置 STM32 内部的数字电路(包括 CPU 和外设)。数字电路的工作电压是 VDD,因此复位引脚上拉到 VDD 更为合适。
3. 电源电流负载考虑
VDD 电流能力强: VDD 电源的电流供应能力通常大于 VDDA,因为它要供电给整个数字部分,包括处理器、内存和外设等。上拉电阻的电流负载对 VDD 的影响微乎其微。
VDDA负载要求高: VDDA 电源主要供电给模拟部分(如 ADC、DAC 等),这些电路对电源的纹波和噪声要求更高。将上拉电阻连接到 VDDA 可能会引入不必要的负载和噪声,影响模拟电路的性能。
2.4电路图
三、BOOT 启动
3.1介绍
BOOT 引脚( BOOT0 和 BOOT1 )用于选择微控制器的启动模式。通过不同的引脚电平组合,可以选择不同的启动模式,如下图所示:
3.2电路
将单片机的 BOOT0 和 BOOT1 引脚引出,通过 2×3 的公排针,可以通过跳线帽向上选择VDD_MCU (1),向下选择 GND (0),来配置单片机的启动模式。老师选择的启动方式为:从内置 SRAM 启动,如下图。
四、晶体电路
4.1 为什么STM32需要两个晶振电路?
STM32微控制器通常使用两个晶振电路是为了满足不同的时钟需求:
- 主晶振电路(8MHz): 用于提供主系统时钟(HSE, High-Speed External Clock)。这个时钟源通常用于微控制器的核心处理单元、高速外设(如USB、CAN等),以及需要高精度、高速时钟的功能。
- 副晶振电路(32.768kHz): 用于提供低功耗时钟(LSE, Low-Speed External Clock)。这个时钟源通常用于实时时钟(RTC, Real-Time Clock)和低功耗模式下的计时功能。32.768kHz的频率正好适合计时,因为它可以方便地用于生成1秒的时钟周期(32,768是2的15次方,适合二进制计数)。
4.2 为什么这两个晶振电路的频率是那样?
选择不同频率和规格的晶振主要基于以下原因:
-
8MHz晶振(主晶振):
- 频率选择: 8MHz是一个常用的高频率,能够满足STM32核心和高速外设的时钟需求。
- 负载电容(22pF): 确保晶振在该频率下的稳定性和可靠性。22pF是常见的负载电容值,用于匹配晶振的负载要求。
-
32.768kHz晶振(副晶振):
- 频率选择: 32.768kHz是标准的RTC晶振频率,适用于低功耗时钟应用。
- 负载电容(10pF): 这种低值电容适合低频率晶振,确保其在低频下的稳定振荡。
4.3 晶振电路是怎么运作的?(更容易理解4.4和4.5的问题)
(1)晶振起振
- 当电源接通时,晶振开始产生微弱的振荡信号。
- 该信号通过OSC_IN引脚进入STM32内部振荡器电路。
(2)负载电容调节
- C1和C2电容与晶振一起工作,确保晶振以其标称频率振荡。
- 负载电容值通常选取在10pF到22pF范围内,但实际值应根据晶振的规格书和电路板的寄生电容进行调整。
(3)信号放大
- STM32内部的振荡器电路对输入的微弱振荡信号进行放大,生成一个稳定的时钟信号。
- 这个稳定的时钟信号通过OSC_OUT引脚输出,并作为系统时钟供STM32使用。
(4)信号反馈
- 振荡器电路将放大的振荡信号通过OSC_OUT引脚反馈回晶振电路,继续维持晶振的振荡。
- 这个反馈环路确保晶振能够持续产生稳定的振荡信号。
(现在你就清楚了晶振电路中存在的一个回路了。)
4.4 为什么主晶振电路OSC有大电阻?有什么作用吗?
主晶振电路中包含一个1MΩ的大电阻(通常连接在OSC_IN和OSC_OUT之间),其主要作用如下:
- 防止启动困难: 大电阻提供了一个初始反馈路径,有助于晶振在上电时快速启动,避免由于初始状态不稳定导致的启动困难。
- 稳定振荡: 大电阻能够稳定振荡器的启动过程,确保振荡器能够在启动后快速进入稳定状态。
(说的通俗一点就是快一点形成4.3中说的电流回路。)
4.5 为什么副晶振电路OSC32没有大电阻?
副晶振电路通常不需要大电阻的原因包括:
- 频率和功率低: 32.768kHz的晶振工作在非常低的频率和功率下,启动相对容易,不需要额外的电阻来帮助启动。
- 低功耗设计: 副晶振电路通常用于RTC和低功耗应用,添加大电阻会增加功耗,不符合低功耗设计的要求。
4.6电路图
五、RTC 实时时钟
5.1 VBAT 引脚的功能
VBAT 引脚用于为 RTC 和备份寄存器供电,以便在主电源断开时,RTC 仍能继续运行。
5.2设计原理
- 主电源供电(VDD_MCU): 当主电源(VDD_MCU)供电时,BAT54-C 二极管正向偏置,VBAT 引脚通过二极管获得 VDD_MCU 的电压,RTC 和备份寄存器正常工作。
- 备用电源供电: 当主电源断开时,BAT54-C 二极管防止电流反向流动,RTC 和备份寄存器可以通过 ZH1.25-2A 连接器从备用电源(如纽扣电池)继续供电,确保 RTC 的时间和备份数据不会丢失。
5.3原理图
5.3.1BAT54-C二极管的作用
- 保证供电: 当主电源存在时,二极管正向偏置,保证 VBAT 引脚获得稳定的电压供电;当主电源断开时,二极管反向偏置,备用电源立即接替供电,保证 RTC 持续运行。
- 防止反向电流: 确保在主电源断开时,备用电源电流不会流回到主电源电路,避免不必要的电能消耗和可能的电路损坏。同时也保证在主电源正常供电时,芯片的电流不会回流到备用电池中,造成损害。
5.3.2 ZH1.25-2A连接器的作用
- 备用电源接口: 提供一个连接备用电源的接口,可以方便地连接和更换电池或其他备用电源。
- 确保供电路径: 通过 ZH1.25-2A 连接器,备用电源可以可靠地提供电压给 VBAT 引脚,确保RTC的供电不中断。
六、Flash 芯片
6.1芯片功能
在 STM32 微控制器中,外部 Flash 存储器(如本项目使用的 W25Q64JVSSIQ)通常用于存储固件、数据日志或其他需要非易失性存储的应用。
6.1引脚介绍和电路设计理念
1. CS# (Chip Select):
- 设计: CS# 引脚通过 PA15 引脚控制。低电平激活芯片,高电平关闭芯片。
- 原理: 当 CS# 为低电平时,Flash 芯片被选中,STM32 可以与其通信;当 CS# 为高电平时,Flash 芯片处于非活动状态,由于多个 SPI 设备可以共享同一条 SPI 总线,此时其他设备可以进行通信。
2. SO (Serial Output):
- 设计: SO 引脚通过 PB4 引脚(MISO,Master In Slave Out)连接到 STM32。
- 原理: 用于在 SPI 通信中将数据从 Flash 芯片发送到 STM32。
3. WP# (Write Protect):
- 设计: WP# 引脚直接连接到 3.3V 电源。
- 原理: 将 WP# 连接到高电平(3.3V)禁用写保护功能,使能写操作。
4. GND (Ground):
- 设计: GND 引脚连接到地。
- 原理: 提供芯片的电源回路。
5. SI (Serial Input):
- 设计: SI 引脚通过 PB5 引脚(MOSI,Master Out Slave In)连接到 STM32。
- 原理: 用于在 SPI 通信中将数据从 STM32 发送到 Flash 芯片。
6. CLK (Clock):
- 设计: CLK 引脚通过 PB3 引脚连接到 STM32。
- 原理: 提供 SPI 通信的时钟信号,由 STM32 生成并控制。
7. HOLD3#:
- 设计: HOLD3# 引脚连接到 3.3V 电源。
- 原理: 将 HOLD3# 连接到高电平(3.3V)禁用暂停功能,使 Flash 芯片正常工作。
8. VCC (Power Supply):
- 设计: VCC 引脚连接 3.3V 电源。
- 原理: 为 Flash 芯片提供工作电压。
9、电源滤波电路
- 设计: 3.3V 电源通过 0.1uF 电容连接到地。
- 原理: 去耦电容用于滤除电源线上的高频噪声,稳定供电,确保 Flash 芯片正常工作。
6.2电路运行
- 上电: 3.3V 电源为 Flash 芯片提供电源,电容滤除电源噪声。
- SPI 通信: STM32 通过 SPI 接口(PA15, PB3, PB4, PB5引脚)与 Flash 芯片通信:
- PA15 控制 CS#,选择芯片。
- PB3 提供时钟信号(CLK)。
- PB5 发送数据到 Flash 芯片(MOSI)。
- PB4 接收 Flash 芯片的数据(MISO)。
- 写保护: WP#(就是下图中的 IO2) 连接到高电平,确保写操作不被禁用,方便数据写入。
- 暂停功能: HOLD3# (就是下图中的 IO3)连接到高电平,禁用暂停功能,确保正常操作。
6.3其他设计方法
- 硬件写保护: 如果需要硬件写保护功能,可以将 WP# 引脚连接到 STM32 的一个 GPIO 引脚,通过软件控制写保护状态。
- 使用较大电容: 在电源滤波电路中,可以根据实际情况使用更大容量的电容(如 1uF 或10uF )进一步平滑电源电压。
- 增加缓冲电路: 在噪声较大的环境中,可以在 SPI 信号线上增加缓冲电路,提高通信可靠性。(具体方法:使用缓冲芯片、串联电阻、电容滤波、使用屏蔽电缆。)
七、SWD 调试接口
SWD(Serial Wire Debug)是一种调试和编程接口,广泛应用于 ARM Cortex-M 系列微控制器。它通过两条数据线(SWDIO 和 SWCLK)实现高效的调试和编程,其功能如下:
- 调试和编程: SWD 接口是用于调试和编程微控制器的标准接口。通过它可以进行固件下载、调试、断点设置、变量查看等操作。
- 简化连接: 通过标准化的引脚和接口,可以方便地连接调试器,简化调试和编程过程。
- 可靠通信: 通过上拉和下拉电阻,确保信号线在空闲状态下处于稳定的电平,避免噪声干扰。
在本项目中这部分电路包括三部分:
- HDR-M-2.54 1x5
- XYXH2.54-5A11
- 简牛 2.54mm 2x10 直
这三部分都提供了 SWD 接口,但形式和连接方式略有不同。
7.1 HDR-M-2.54 1x5
7.1.1电路图
7.1.2功能和原理
- VCC 和 GND: 提供电源和地线,确保调试器和 STM32 有共同的电源参考。
- NRST : 用于外部复位 STM32。调试器可以控制 NRST 引脚复位 STM32 。
- SWDIO(Serial Wire Debug Input/Output): 双向数据线,用于传输调试和编程数据。
- SWCLK(Serial Wire Clock): 时钟信号,由调试器生成,为 SWD 通信提供时序参考。
7.2 XYXH2.54-5A11
7.2.1电路图
7.2.2功能和原理
此部分与 HDR-M-2.54 1x5 功能相同,只是引脚和连接形式有所不同。
7.3上下拉电阻
至于为什么前者有上下拉电阻,而后者没有,解释如下:
(1)选择上拉和下拉电阻的考虑因素
- 环境噪声: 如果系统工作在高噪声环境中,建议加入上拉和下拉电阻。
- 引脚稳定性: 需要确保引脚在调试器未连接或未启用时保持稳定状态。
- 调试器特性: 有些调试器内部已经集成了上拉和下拉电阻,可以省略外部电阻。
(2)为什么HDR-M-2.54 1x5 有上拉和下拉电阻?
- 适用性: HDR-M-2.54 1x5 设计中加入上拉和下拉电阻,确保在调试器未连接或未启用时,引脚状态稳定。
- 提高可靠性: 通过上拉和下拉电阻,避免在未连接调试器或调试器未驱动时,因噪声导致的误动作,提高系统的可靠性。
具体连接
- SWDIO(上拉): 10kΩ电阻上拉到3.3V,确保在未连接调试器时,SWDIO引脚保持高电平,避免悬空状态。
- SWCLK(下拉): 10kΩ电阻下拉到地,确保在未连接调试器时,SWCLK引脚保持低电平,避免悬空状态。
(3)为什么XYXH2.54-5A11 没有上拉和下拉电阻?
- 设计简化: XYXH2.54-5A11 是为了设计简化,省略了上拉和下拉电阻,以便更灵活地使用不同的调试器。
- 依赖外部电路: 在一些设计中,可能依赖于调试器或开发板上的上拉和下拉电阻,而不在接口电路中直接配置。
- 环境不同: 在一些应用环境中,可能认为外部干扰较小,上拉和下拉电阻的需求不强,因此省略。
7.4 简牛 2.54mm 2x10 直
这里不得不提到调试有两种调试的模式了:JTAG 模式和 SWD 模式,前者接口多,更适合复杂的硬件设计,后者信号线少,适合有限的嵌入式系统。这里保留了 JTAG 的接口(方便后续改进)但是只使用了 SWD 模式。
7.4.1电路图
7.4.2功能和原理
同上。
7.4.3拓展
此部分提供了一个标准的 JTAG 接口形式,但只使用了 SWD 所需的引脚,其余未使用的引脚被标记为无连接或被叉掉。
(1)被叉掉的引脚
-
TRST(引脚3):
- 功能: JTAG 复位信号,用于复位 JTAG 调试逻辑。
- 为什么叉掉: 在 SWD 模式下,TRST 引脚不使用,因为 SWD 模式不需要单独的 JTAG复位信号。
-
TDI(引脚5):
- 功能: JTAG 测试数据输入,用于输入测试数据。
- 为什么叉掉: 在 SWD 模式下,TDI 引脚不使用,因为 SWD 模式不需要单独的数据输入引脚。
-
TDO/SWO(引脚13):
- 功能:
- TDO(Test Data Out): JTAG 测试数据输出,用于输出测试数据。
- SWO(Serial Wire Output): 在 SWD 模式下,作为串行输出,用于调试信息输出。
- 为什么叉掉: 在一些简化设计中,SWO 引脚未使用或未连接。
- 功能:
-
NC(引脚9, 11, 15, 17):
- 功能: 无连接(Not Connected),没有分配特定功能。
- 为什么叉掉: 这些引脚在特定设计中未被使用。
(2)复用引脚的解释
复用引脚(TMS/SWDIO, TCK/SWCLK)具有双重功能,支持 JTAG 和 SWD 两种调试协议。具体功能如下:
-
TMS/SWDIO(引脚7):
- TMS(Test Mode Select): 在 JTAG 模式下,用于选择测试模式。
- SWDIO(Serial Wire Debug Input/Output): 在 SWD 模式下,作为双向数据线,传输调试和编程数据。
-
TCK/SWCLK(引脚9):
- TCK(Test Clock): 在 JTAG 模式下,用于提供测试时钟信号。
- SWCLK(Serial Wire Clock): 在 SWD 模式下,用于提供串行时钟信号。
(3)复用功能的使用
在实际使用中,调试器和微控制器会根据配置选择合适的调试协议和引脚功能。例如:
- 当选择 SWD 模式时,TMS/SWDIO 引脚配置为 SWDIO,TCK/SWCLK 引脚配置为SWCLK。
- 当选择 JTAG 模式时,TMS/SWDIO 引脚配置为TMS,TCK/SWCLK 引脚配置为 TCK,且可能使用 TDI 和 TDO 引脚。
(4)其他硬件设计方案
除了上述设计方案,还有其他设计可以考虑:
- 仅 SWD 接口: 如果只需要 SWD 调试功能,可以仅保留 SWDIO 和 SWCLK 引脚,省去不必要的 JTAG 引脚。
- 多功能接口: 设计一个多功能调试接口,可以同时支持 JTAG 和 SWD,并根据需要切换使用。
- 板载调试器: 设计一个板载调试器,如 ST-LINK,直接集成到开发板上,提供更方便的调试和编程接口。
(5)其他调试模式
除了SWD和JTAG模式,还有其他一些调试和编程模式:ISP、UART、I2C、SPI 等。
八、STM32
重头戏来了,有点紧张。