从零开始实操:STM32主控原理图制作指南
由于老师使用的各引脚分门别类的单片机原理图我没有找到,我使用是引脚按顺序摆放的,不方便一个模块一个模块截图展示,所以这部分使用老师的原理图。
一、电源
1.1电源的介绍
1.1.1数字电源和地(VDD和VSS)
数字电源引脚提供电压给所有的数字电路部分。这些数字电路包括:
数字地引脚提供了所有数字电路部分的接地参考点,有:
1.1.2模拟电源和地(VDDA和VSSA)
模拟电源引脚提供电压给所有的模拟电路部分。主要包括:
模拟地引脚提供了所有模拟电路部分的接地参考点,有:
1.1.3两电源的区别与联系
数字电路通常会产生高频开关噪声,这些噪声如果直接干扰到模拟电路,会导致模拟信号的不稳定和精度下降。因此,使用独立的模拟电源和接地可以减少这种干扰。
模拟电路需要一个非常干净、稳定的电源,以确保精确的信号处理,因此 VDDA 通常通过额外的滤波电路进行去耦。
为了减少数字电路产生的高频噪声对模拟电路的干扰,VSSA 和 VSS 通常在 PCB 设计中被单独处理,只有在一个单点连接,通常是靠近电源入口的地方。
1.2滤波介绍
将 3.3V 的电源引入供单片机使用。
(1)120R 磁珠
(2)10µF 电容
(3)0.1µF 电容
(4)10nF 电容
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微控制器通常使用两个晶振电路是为了满足不同的时钟需求:
4.2 为什么这两个晶振电路的频率是那样?
选择不同频率和规格的晶振主要基于以下原因:
8MHz晶振(主晶振):
32.768kHz晶振(副晶振):
4.3 晶振电路是怎么运作的?(更容易理解4.4和4.5的问题)
(1)晶振起振
(2)负载电容调节
(3)信号放大
(4)信号反馈
(现在你就清楚了晶振电路中存在的一个回路了。)
4.4 为什么主晶振电路OSC有大电阻?有什么作用吗?
主晶振电路中包含一个1MΩ的大电阻(通常连接在OSC_IN和OSC_OUT之间),其主要作用如下:
(说的通俗一点就是快一点形成4.3中说的电流回路。)
4.5 为什么副晶振电路OSC32没有大电阻?
副晶振电路通常不需要大电阻的原因包括:
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):
2. SO (Serial Output):
3. WP# (Write Protect):
4. GND (Ground):
5. SI (Serial Input):
6. CLK (Clock):
7. HOLD3#:
8. VCC (Power Supply):
9、电源滤波电路
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)实现高效的调试和编程,其功能如下:
在本项目中这部分电路包括三部分:
- HDR-M-2.54 1×5
- XYXH2.54-5A11
- 简牛 2.54mm 2×10 直
这三部分都提供了 SWD 接口,但形式和连接方式略有不同。
7.1 HDR-M-2.54 1×5
7.1.1电路图
7.1.2功能和原理
7.2 XYXH2.54-5A11
7.2.1电路图
7.2.2功能和原理
此部分与 HDR-M-2.54 1×5 功能相同,只是引脚和连接形式有所不同。
7.3上下拉电阻
至于为什么前者有上下拉电阻,而后者没有,解释如下:
(1)选择上拉和下拉电阻的考虑因素
- 环境噪声: 如果系统工作在高噪声环境中,建议加入上拉和下拉电阻。
- 引脚稳定性: 需要确保引脚在调试器未连接或未启用时保持稳定状态。
- 调试器特性: 有些调试器内部已经集成了上拉和下拉电阻,可以省略外部电阻。
(2)为什么HDR-M-2.54 1×5 有上拉和下拉电阻?
具体连接
(3)为什么XYXH2.54-5A11 没有上拉和下拉电阻?
7.4 简牛 2.54mm 2×10 直
这里不得不提到调试有两种调试的模式了: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)复用功能的使用
在实际使用中,调试器和微控制器会根据配置选择合适的调试协议和引脚功能。例如:
(4)其他硬件设计方案
除了上述设计方案,还有其他设计可以考虑:
- 仅 SWD 接口: 如果只需要 SWD 调试功能,可以仅保留 SWDIO 和 SWCLK 引脚,省去不必要的 JTAG 引脚。
- 多功能接口: 设计一个多功能调试接口,可以同时支持 JTAG 和 SWD,并根据需要切换使用。
- 板载调试器: 设计一个板载调试器,如 ST-LINK,直接集成到开发板上,提供更方便的调试和编程接口。
(5)其他调试模式
除了SWD和JTAG模式,还有其他一些调试和编程模式:ISP、UART、I2C、SPI 等。
八、STM32
本部分我实在是不知道怎么记成系统的、有条理的笔记,故只能分成以下两个部分:
- 原理图总览
- 我问我答
8.1原理图总览
之前一直都在看原理图的各个部分,忽略了其中一张名为“原理图总览”的图,现在进行到 STM32 主控部分原理图才发现,这张图的重要性,经过详细的标注,大作下图所示。
8.2我问我答
其实这部分的问题大多都是 STM32 上通信协议的问题。
8.2.1两个跳线帽
WIFI_TXD、WIFI_RXD 和 GPRS_TXD、GPRS_RXD 和 USB_TXD、USB_RXD 和 HMI_TXD、HMI_RXD 这些信号线是用 UART (通用异步收发传输器)通信的。
UART(通用异步收发传输器)是一种通信方式,它定义了数据传输的基本技术(比如波特率、数据位、停止位和校验位)。但是,UART 本身并不规定数据的内容和格式。这就引出了不同的通信协议,即使它们都使用 UART 作为底层传输机制。
故上面的信号线根据具体的设备和应用,它们可能采用不同的通信协议。在电路设计中,要确保这些引脚连接到适当的 MCU 接口,并根据需要配置通信方式。
本项目采用跳线帽通信的地方,应该采用了相同的通信协议,只有波特率不一样。
注意跳线帽的连接特点:只能选择其中一条信号线联通,另一条就是断开的。
(1)H10
WIFI_TXD、WIFI_RXD 和 GPRS_TXD、GPRS_RXD 都是采用 UART 通信方式,且两者作为无线通讯的两种方式,在单片机运行过程中只需要选择其中一种,故采用跳线帽的方式选择谁接到单片机的引脚上。
(2)H11
USB_TXD、USB_RXD 和 HMI_TXD、HMI_RXD 都是采用 UART 通信方式,故采用跳线帽的方式选择谁接到单片机的引脚上。
注意:即使选择了 HMI 智能串口屏连接到单片机上,连接上的 USB 虽不能通信,但是供电的那一条线路仍在,即只断了通信线而已。
8.2.2 共用单片机引脚
这里是共用单片机引脚,复用单片机引脚另有定义。
复用单片机是由单片机内部串口通过控制内部“开关”通断来决定的。
共用单片机引脚和跳线帽是不一样的,跳线帽是在两条线路中只能选择其中一条进行联通,但是单片机的处理、选择速率极快,可以实现在肉眼看来的“都联通”。
(1)IIS 接口 和 TFT 触摸屏
IIS 接口、TFT 触摸屏均有属于自己的 ID ,当软件程序中出现自己 ID ,才需要执行相关指令,不是自己的 ID 就直接抛开。
(2)显示屏和无刷电机
IIS 接口、TFT 触摸屏均有属于自己的 ID ,当软件程序中出现自己 ID ,才需要执行相关指令,不是自己的 ID 就直接抛开。
(3)OLED 屏和旋转编码器
TFT 显示屏、无刷电机均有属于自己的 ID ,当软件程序中出现自己 ID ,才需要执行相关指令,不是自己的 ID 就直接抛开。
8.2.3两个 USB
就是为了使用两种不同的头都可以接入到板子中。
注意:单片机只有一个 USB 的接口。USB1.0 是将 TTL(USB 信号)转换成串口(USB_TXD,USB_RXD)连接到单片机上。
8.2.4两个 SPI
本项目中有两处均使用 SPI 通信协议,为了区别才在总览图中标注为 SPI1 ,SPI2。
8.2.5 MCU_X(X=1,2,3)
这是 MCU 中存在串口通信的地方的标注,一共有 3 处(两个跳线帽和一处 485),其他的通信协议不可以用这个标注出来。
8.2.6 FSMC
FSMC(Flexible Static Memory Controller)是 STM32 微控制器中用于与外部存储器和外部设备通信的控制器。通过 FSMC,外部设备可以像内部存储器一样被访问,从而简化了数据传输过程和硬件设计。
将 LCD 显示屏信号名称改为 FSMC 信号是为了与 FSMC 控制器的标准信号名称相匹配。这不仅使硬件设计更加规范化,还可以确保软件配置和硬件接口的一致性,从而简化调试和维护。
FSMC 是一个灵活的静态存储控制器,可以简化 STM32 微控制器与外部设备(如 LCD 模块)的接口设计。将 LCD 的信号名称改为 FSMC 信号名称,是为了确保与 FSMC 控制器的标准信号一致,从而简化硬件设计和软件配置。
8.2.9智能串口屏
此处在原理图中有插座和排针都是一样的作用,如果有和插座匹配的接头,就使用插头,没有就使用连接更为通用的排针,两者地位并列,并非谁辅助谁。
九、怎么就物联网了?
项目进行到这里,我对每一个部分的每一个电路设计还算了解,但是总体大功能一知半解,经过调研和对软件部分的初步了解,用通话的话总结如下:
9.1无线部分的作用
9.1.1WIFI
ESP 器件上如下图中的铜皮就是接收和发射无线信号的。
举例实现的功能1:在手机页面(需要软件工程师写界面)上点击电机的转速如达到 2000 ,相应的信号发送给阿里云,阿里云将无线信号发送给 ESP 器件, ESP 器件接受后发送给 STM32 单片机,单片机实现转速达到 2000 的动作。
举例实现的功能2:当温湿度传感器接收到温度信号时,发送给 STM32 ,单片机接收到后经过处理等操作发送给 ESP 能识别的信号,ESP 再发送到阿里云,阿里云发送给手机,显示在手机的界面上当时的温度的信息。
9.1.2 GPRS
只要是用于向卫星发送板子所处的经纬度位置信息,可以理解成手机中的定位功能。
后续可以用来查看板子出售的地方分布、召回物品、新建地图等。
9.2其他部分
除了无线之外,本项目展示在用户眼前的部分应该就是电机和屏幕,其他部分的电机可以作为电机和屏幕的辅助。如按键辅助电机,如下图:
注:软件部分的课程我没有学习,我也不知道最后是怎么用硬件具体实现各个功能,我是经过我的调研形成一些文字笔记,如果后面我学习了,再来继续分享。
作者:小醒爱硬件