STM32最小系统需要下面这些东西,缺一不可
1. 主控芯片
创建项目后放置STM32单片机芯片,如图STM32选型为STM32F103CBT6
CKS32F103C8T6
和STM32F103CBT6
是两种不同的微控制器型号,具有一些区别:
-
厂商:CKS32F103C8T6是由CKS公司生产,而STM32F103CBT6是由STMicroelectronics公司生产。
-
系列:CKS32F103C8T6属于CKS32系列微控制器,而STM32F103CBT6属于STM32系列微控制器。
-
内核:CKS32F103C8T6采用了32位的ARM Cortex-M3内核, STM32F103CBT6也采用了相同的ARM Cortex-M3内核。
-
特性和功能:CKS32F103C8T6和STM32F103CBT6在性能和功能上可能略有差异,例如时钟频率、片内存储器大小、外设接口等。具体的差异可能需要参考它们的数据手册或规格说明来进行详细比较。
数据手册在嘉立创原件选型直接就能看到
在STM32103CBT6的数据手册里可以看到启动模式的介绍,以及电源方案
At startup, boot pins are used to select one of three boot options:
在启动时,引导引脚用于选择三种启动选项之一
-
Boot from User Flash
从用户Flash启动(闪存启动)
-
Boot from System Memory
从系统内存启动
-
Boot from embedded SRAM
从嵌入式SRAM中启动
The boot loader is located in System Memory. It is used to reprogram the Flash memory by using USART1. For further details please refer to AN2606. 引导加载程序位于系统内存中。它用于通过以下方式对闪存进行重新编程 使用USART1。有关更多详细信息,请参阅AN2606。
综上,可以看到是用串口1进行编程下载的时候,使用的是第二个模式,从用户Flash启动。
第三个 从SRAM启动,他掉电会立刻清除,所以调试的时候会用,通常开发是不会用的
它的启动方式取决于BOOT0和BOOT1的引脚的状态,
BOOT0引脚状态 | BOOT1引脚状态 | 启动模式 |
---|---|---|
0 | X | 从Flash启动 |
1 | 0 | 从系统内存启动 |
1 | 1 | 从内嵌SRAM启动 |
因为最后一种一般用不到,所以直接把Bot1的引脚拉低,使用BOOT0引脚的高低电平来控制启动模式为从Flash启动或者从系统内存启动。
下面是设计电源方案,根据手册上所描述
Power supply schemes VDD = 2.0 to 3.6 V: external power supply for I/Os and the internal regulator. Provided externally through VDD pins. VSSA, VDDA = 2.0 to 3.6 V: external analog power supplies for ADC, reset blocks, RCs and PLL (minimum voltage to be applied to VDDA is 2.4 V when the ADC is used). VDDA and VSSA must be connected to VDD and VSS, respectively. VBAT = 1.8 to 3.6 V: power supply for RTC, external clock 32 kHz oscillator and backup registers (through power switch) when VDD is not present. For more details on how to connect power pins, refer to Figure 14: Power supply scheme.
供电方案 VDD=2.0至3.6V:用于I/O和内部稳压器的外部电源。 通过VDD引脚从外部提供。 VSSA、VDDA=2.0至3.6 V:ADC、复位块、RC的外部模拟电源 以及PLL(当使用ADC时,施加到VDDA的最小电压为2.4V)。 VDDA和VSSA必须分别连接到VDD和VSS。 VBAT=1.8至3.6V:RTC、外部时钟32kHz振荡器和备用电源 当VDD不存在时,寄存器(通过电源开关)。 有关如何连接电源引脚的更多详细信息,请参阅图14:电源方案。
这里一般的VDD是3.3V所以就命名电源为VCC33了
再跳转到它所指向的位置
就能查看到供电方案
一般情况下照着抄就OK
我是先放的VCC和地之间的6个电容画了,
2.复位电路
复位电路,名为NRST 就是复位引脚,RST是Reset的缩写。
仍然是去手册上找一下。看到这个表格
The NRST pin input driver uses CMOS technology. It is connected to a permanent pull-up resistor, RPU (see Table 35). Unless otherwise specified, the parameters given in Table 38 are derived from tests performed under the ambient temperature and VDD supply voltage conditions summarized in Table 9.
NRST引脚输入驱动器使用CMOS技术。它连接到一个永久性的上拉的电阻器RPU(见表35)。 除非另有规定,表38中给出的参数均来自试验在总结的环境温度和VDD电源电压条件下执行 见表9。
意思就是,默认让他上拉。当给他低电平的时候就会复位
这里要注意放一个电容,来进行按键消抖,因为按键前后会有一段高频率的杂波。电容可以把他滤掉,如果是上电复位的话,电容一般会大一点儿。单片机一般是自带上电复位的
3.时钟电路
stm32内部是有两个时钟的:内部高速和内部低速,单通常情况下不是那么的精准,所以需要外接一个晶振,一般是8MHZ,
手册中也说有,为什是8MHZ
可以看到,使用高速外部时钟源的最小是1MHZ,最大是25MHZ,官方推荐最常用的是8Mhz
低速则最大为1000KHZ,典型则为32.768KHZ。为啥一定是32.768呢?因为他分频是可以分频出1HZ的!32.768Khz是2的15次方
如何搭建外部电路,也有讲解
翻译如下:
对于CL1和CL2,建议在5pF至25pF范围(典型值),专为高频应用而设计,并经过精心挑选以匹配晶体或谐振器的要求(见图24)。CL1和CL2通常是大小相同。晶体制造商通常指定负载电容,即CL1和CL2的串联组合。必须包括PCB和MCU引脚电容(10 pF在确定尺寸时,可以粗略估计引脚和电路板的组合电容L1和CL2。请参阅应用说明AN2867“ST振荡器设计指南 ST网站www.ST.com上提供的“微控制器”
高速晶振为什么要有两个电容在旁边。
- 满足起振条件:帮助晶振满足谐振条件,使其能够正常起振并工作。晶振可以等效成一个电容和电阻并联再串联一个电容的二端网络,有两个谐振点,通过在晶振两端并联合适的电容,可以组成并联谐振电路。
- 微调振荡频率:电容值的大小会影响谐振频率,适当选择电容值能够对振荡频率进行微调,使其更接近所需的工作频率。一般情况下,增大电容会使振荡频率下降,减小电容会使振荡频率升高。
- 提高稳定性:合适的电容可以提高振荡器的稳定性,确保信号传输的可靠性和准确性,并且在一定程度上抑制噪声干扰,提高电路的抗干扰能力。
- 匹配负载电容:晶振有一个特定的负载电容参数,外接的两个电容是为了使晶振两端的等效电容等于或接近于这个负载电容。负载电容主要影响负载谐振频率和等效负载谐振电阻,与晶体一起决定振荡器电路的工作频率。不同的晶振可能需要不同的负载电容来达到最佳性能,通过调整外接电容,可以满足晶振的负载电容要求,保证其正常工作。
手册中有讲计算公式:
Note: For CL1 and CL2 it is recommended to use high-quality ceramic capacitors in the 5 pF to 15 pF range selected to match the requirements of the crystal or resonator. CL1 and CL2, are usually the same size. The crystal manufacturer typically specifies a load capacitance which is the series combination of CL1 and CL2. Load capacitance CL has the following formula: CL = CL1 x CL2 / (CL1 + CL2) + Cstray where Cstray is the pin capacitance and board or trace PCB-related capacitance. Typically, it is between 2 pF and 7 pF. Caution: To avoid exceeding the maximum value of CL1 and CL2 (15 pF) it is strongly recommended to use a resonator with a load capacitance CL 7 pF. Never use a resonator with a load capacitance of 12.5 pF. Example: if you choose a resonator with a load capacitance of CL = 6 pF, and Cstray = 2 pF, then CL1 = CL2 = 8 pF
注:对于CL1和CL2,建议使用5pF的高质量陶瓷电容器 选择15pF范围以满足晶体或谐振器的要求。
CL1和CL2是通常大小相同。晶体制造商通常会指定负载电容是CL1和CL2的串联组合。 负载电容CL具有以下公式:CL=CL1 x CL2/(CL1+CL2)+Cstray, 其中Cstray是引脚电容和板或迹线PCB相关的电容。通常,它是在2pF和7pF之间。 警告:为避免超过CL1和CL2的最大值(15pF),强烈建议使用负载电容CL7pF的谐振器。切勿使用负载谐振器电容为12.5pF。 示例:如果选择负载电容CL=6pF、Cstray=2pF的谐振器,则CL1=CL2=8pF
在这里,使用两个20pf的电容没啥问题。并联后就是10pf,加上振荡器的10PF,是在正常范围内的!
下一步就是搭建电路。
上面的OSC32 in out 是低速晶振
OSCin out 是高速晶振
4.电源电路
stm32的电压输入是1.8V-3.6V,而输入一般是5V所以需要电源电路来转换一下
这里用的是me6206a33的芯片,用哪个都行,注意看输入输出
手册中可以看到典型的应用
按照他的例子,可以作出这种图
其他的电源在手册这里有讲,
供电方案(VDD为正,VSS为负)
VDD=2.0至3.6V:用于I/O和内部稳压器的外部电源。 通过VDD引脚从外部提供。 VSSA、VDDA=2.0至3.6 V:ADC、复位块、RC的外部模拟电源 以及PLL**(当使用ADC时,施加到VDDA的最小电压为2.4V)。** VDDA和VSSA必须分别连接到VDD和VSS。 VBAT=1.8至3.6V:RTC、外部时钟32kHz振荡器和备用电源 当VDD不存在时,寄存器(通过电源开关)。 有关如何连接电源引脚的更多详细信息,请参阅图14:电源方案
这里都有范围不能弄错,错了会烧
并且结合这张图来参考
所以就先把芯片中ADD部分,接上3.3V。VDD33
VSS部分的都接GND
完成后
5.串口转USB电路
串口转usb一般使用的是CH340的一款芯片。
而CH340分有很多种类
这里我选最小且内置时钟的。CH340N
他的引脚图可以大概看一下
其中1 2引脚是接usb的。6 7 引脚是接串口的
GND和VCC是接电源的 V3是根据电源的大小来选择添加电容或者是接电源,这里是5V所以接电容。 RTS直接X掉就OK
要注意在作图的时候看着上面的引脚表格的要求。添加元件。
在连接RX和TX的时候是交叉着连接。 “RX”通常表示“Receive”,即接收;“TX”通常表示“Transmit”,即发送。 所以要交叉着,发和收连。
在手册中可以找到RX和TX的对应引脚位置是PA9和PA10
还需要一个USB的部分,这里选Type-C
他的引脚定义图如下
我们这里需要用到的是A6 A7两个引脚
A6(DP1)是查分信号的 正, A7(DN1) 为负(A6和B6是一样的。)可以看第一张图。所以直接把他们连接。也就是把DP1和DP2直接连接。DN1和DN2直接连接
然后DP1和DP2连接CH340的UD+ DN1和DN2连接CH340的UD-
电源设备识别是依靠CC1和CC2引脚的,为了避免QC标准与PD、DM充电协议的冲突,导致数据传输有问题,所以通常会进行下拉电阻。(通常为5.1K)
6.SWD调试下载电路
TTL电平 — 串口的
下载调试不止有usb还有swd串口
他们用的io口不一样
在这里是SWCLK和SWDIO两个引脚
SWCLK(Serial Wire Clock)和 SWDIO(Serial Wire Data Input/Output)是在一些微控制器和芯片调试中常用的引脚。
SWCLK 引脚主要用于提供时钟信号,以同步数据传输的时序。就像一个指挥棒,确保数据的发送和接收按照特定的节奏进行。
SWDIO 引脚则用于双向的数据传输。它既可以接收来自调试器的数据,也可以将芯片内部的数据发送给调试器。
以常见的 STM32 微控制器为例,通过这两个引脚,可以实现程序的下载、在线调试、读取寄存器值等操作。比如,在开发过程中,开发人员可以使用这两个引脚连接调试工具,实时查看变量的值、设置断点,以便快速定位和解决程序中的问题。
6.引出芯片引脚
使用1x2.54mm的排针引出所有引脚(一些已经用了的就不用引出了)
Wakeup (PA0)引出的原因是他可以唤醒MCU,比如当MCU在低功耗状态下或者休眠之类的状态下,通过引脚的Wakeup功能可以将MCU唤醒,让MCU进入正常的工作状态。
1、睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行)
2、停止模式(所有的时钟都已停止)
3、待机模式(1.8V电源关闭)(我们本博客中具体介绍的一种模式,也是功耗最低的模式)
现在暂时看不懂这个,先不写了