由于老师使用的各引脚分门别类的单片机原理图我没有找到,我使用是引脚按顺序摆放的,不方便一个模块一个模块截图展示,所以这部分使用老师的原理图。
一、电源
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 芯片
在STM32微控制器中,外部Flash存储器(如W25Q64JVSSIQ)通常用于存储固件、数据日志或其他需要非易失性存储的应用。
电路设计与工作原理
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芯片提供工作电压。
电源滤波电路
- 设计: 3.3V电源通过0.1uF电容连接到地。
- 原理: 去耦电容用于滤除电源线上的高频噪声,稳定供电,确保Flash芯片正常工作。
电路运行
- 上电: 3.3V电源为Flash芯片提供电源,电容滤除电源噪声。
- SPI通信: STM32通过SPI接口(PA15, PB3, PB4, PB5引脚)与Flash芯片通信:
- PA15控制CS#,选择芯片。
- PB3提供时钟信号(CLK)。
- PB5发送数据到Flash芯片(MOSI)。
- PB4接收Flash芯片的数据(MISO)。
为什么这样设计
- 标准SPI接口: 这种连接方式符合SPI协议,便于STM32与Flash芯片通信。
- 写保护: WP#连接到高电平,确保写操作不被禁用,方便数据写入。
- 暂停功能: HOLD3#连接到高电平,禁用暂停功能,确保正常操作。
- 滤波电路: 0.1uF电容滤除电源噪声,保障电源稳定,避免因噪声导致的通信错误。
其他设计方法
- 硬件写保护: 如果需要硬件写保护功能,可以将WP#引脚连接到STM32的一个GPIO引脚,通过软件控制写保护状态。
- 使用较大电容: 在电源滤波电路中,可以根据实际情况使用更大容量的电容(如1uF或10uF)进一步平滑电源电压。
- 增加缓冲电路: 在噪声较大的环境中,可以在SPI信号线上增加缓冲电路,提高通信可靠性。
疑惑1:多个SPI设备共享同一条SPI总线
SPI(Serial Peripheral Interface)是一种全双工的通信协议,支持主设备(Master)与多个从设备(Slave)之间的通信。你的电路设计中只有一个SPI从设备,但为了更全面地解释,提到了SPI总线的共享能力。多个SPI设备共享同一条SPI总线的原因和方法如下:
为什么共享同一条SPI总线?
- 节省引脚: STM32或其他主控设备的引脚数量有限,通过共享SPI总线,可以连接多个SPI从设备而不增加额外的引脚需求。
- 硬件资源复用: 共享SPI总线可以最大化利用现有的硬件资源,不需要为每个SPI从设备单独配置一条SPI总线。
如何实现多个SPI设备共享同一条SPI总线?
- 共用时钟和数据线: 所有从设备共享主设备的SCK(时钟),MOSI(主输出从输入),MISO(主输入从输出)引脚。
- 独立的芯片选择引脚: 每个从设备都有独立的CS#(Chip Select)引脚。通过控制不同的CS#引脚,可以选择与哪一个从设备进行通信。只有被选择的从设备会响应主设备的SPI指令。
例如:
- 设备A: CS_A 连接到 STM32 的一个 GPIO 引脚。
- 设备B: CS_B 连接到 STM32 的另一个 GPIO 引脚。
在通信时:
- 当需要与设备A通信时,将CS_A置低,CS_B置高。
- 当需要与设备B通信时,将CS_B置低,CS_A置高。
疑惑2:在SPI信号线上增加缓冲电路
在噪声较大的环境或长距离通信中,增加缓冲电路可以提高SPI信号的稳定性和可靠性。
增加缓冲电路的方法
- 使用缓冲芯片: 选择适合的缓冲芯片(如74HC244、74HC541等)放置在主设备和从设备之间。
- 串联电阻: 在SPI信号线上串联小阻值电阻(如几十欧姆),可以减缓信号上升和下降的速率,减少反射和噪声。
- 电容滤波: 在信号线上并联小电容(如几皮法到几十皮法),可以滤除高频噪声。
- 屏蔽电缆: 使用屏蔽电缆来减少电磁干扰。