一、学会查看数据手册
获取芯片数据手册
硬件资料、芯片资料
ST官网:https://www.st.com
ST中文社区网:https://www.stmcu.org.cn/
数据手册内容概要
数据手册是一份详细的技术文档,提供了有关微控制器的广泛信息。以下是一份典型STM32微控制器数据手册可能包含的内容概要:
-
引脚定义和功能:
- 引脚图和引脚定义表,详细描述每个引脚的功能。
- 外设映射,显示各个外设如何连接到引脚。
-
电气特性:
- 电源电压和电流规格。
- 输入和输出电平的规格。
- 工作和存储温度范围。
-
时钟系统:
- 内部和外部时钟源的详细描述。
- 时钟分频器和倍频器配置。
-
处理器内核:
- 处理器内核的型号(例如,Cortex-M3、Cortex-M4等)。
- 处理器特性,如指令集、中断控制器等。
-
存储器系统:
- Flash存储器容量和分布。
- RAM容量和分布。
- 存储器接口和控制器。
-
外设和通信接口:
- 详细描述每个外设的功能和配置。
- 通信接口,如UART、SPI、I2C等的配置和规格。
-
时序图和时序规格:
- 外设和总线的时序图,显示各个信号的时序关系。
- 时序规格表,规定了时序要求。
-
电源管理:
- 电源模块的详细说明,包括电源模式和低功耗模式。
- 电源管理配置。
-
安全和保护特性:
- 安全特性和硬件保护功能的说明。
- 安全区域的配置和使用。
-
应用示例和建议:
- 一些建议的应用电路图。
- 使用外设和功能的最佳实践。
-
开发工具和支持:
- 提供支持该微控制器的开发工具、编程器和调试器的信息。
- 可用的软件库和驱动程序。
-
封装信息:
- 支持的封装类型和尺寸。
- 封装引脚图和引脚分配表。
这仅仅是数据手册中可能包含的内容的一个概要。确切的内容和细节会根据具体的STM32微控制器型号而有所不同。数据手册是开发和设计过程中的关键参考,开发人员可以通过仔细阅读数据手册来了解微控制器的所有方面,从而更好地利用其功能和性能。
芯片的基本参数(STM32F103ZET6为例)
正点原子开发板对应的主控型号和封装
STM32F103ZET6引脚分布
常见的STM32引脚类型
STM32微控制器的引脚通常具有不同的功能,以下是一些常见的STM32引脚类型:
-
电源引脚:
- VDD: 正常工作电源供应,通常连接到系统的电源。
- VSS: 地引脚,连接到系统的地。
-
晶振引脚:
- XTAL/OSC: 用于连接外部晶振或时钟振荡器,提供系统时钟。
-
复位引脚:
- NRST: 复位引脚,用于进行系统复位。
-
下载引脚:
- SWD(Serial Wire Debug): 用于单线调试和编程,通常用于调试和固件更新。
-
BOOT引脚:
- BOOT0: 用于选择启动模式,通常与BOOT1引脚组合使用,决定系统启动时加载的程序源。
-
GPIO引脚:
- PAx, PBx, PCx, …: 通用输入/输出引脚,可配置为数字输入、数字输出、模拟输入等。
- PEx: 特殊功能引脚,用于特定外设的连接。
以上是一些通用的引脚类型,具体的引脚功能和标号可能会因不同的STM32型号而有所变化。在具体应用中,还需要查阅特定型号的引脚定义表和数据手册,以了解每个引脚的详细功能和配置。
下载接口
下载接口是用于将固件烧录到微控制器中的通信接口。STM32微控制器通常支持多种下载接口,其中包括JTAG、SWD(Serial Wire Debug)和串口接口。以下是它们的简要描述:
-
JTAG(Joint Test Action Group):
- 描述: JTAG是一种用于测试和调试的标准接口。除了用于烧录固件外,JTAG还可以用于硬件调试和测试。
- 引脚数量: JTAG通常需要较多的引脚,包括TCK(时钟)、TMS(模式选择)、TDI(数据输入)、TDO(数据输出)等。
- 应用: 主要用于硬件调试和测试。
-
SWD(Serial Wire Debug):
- 描述: SWD是一种用于调试和烧录的串行接口。相较于JTAG,SWD引脚数量较少,更适合资源受限的系统。
- 引脚数量: SWD仅需要两个引脚,SWDIO(数据)和SWCLK(时钟)。
- 应用: 主要用于烧录固件和调试。
-
串口接口:
- 描述: 串口接口通常指的是通过串口(例如UART或USART)进行的烧录和通信。这通常是一种简单且易于实现的接口。
- 引脚数量: 串口接口的引脚数量取决于具体的串口配置,通常包括TX(发送)和RX(接收)引脚。
- 应用: 适用于简单的烧录和通信需求,但可能不如JTAG和SWD在调试方面灵活。
在选择下载接口时,通常需要考虑系统的调试和烧录需求,以及系统的资源限制。SWD因其简单性和较少的引脚需求而在嵌入式系统中得到广泛应用。 JTAG通常更适用于需要更多调试功能的高级应用。串口接口则是一种简单且易于使用的选项,适用于一些基本的应用场景。
二、最小系统
最小系统:保证MCU正常工作的最小电路组成单元
电源电路
电源电路是嵌入式系统中至关重要的一部分,为微控制器和外部设备提供稳定、可靠的电源。以下是一般嵌入式系统中可能包含的电源电路的一些基本组成部分:
-
电源输入:
- 直流电源(DC Power): 微控制器通常需要一个稳定的直流电源。这可以是来自电池、适配器或其他直流电源的电压。
- 电压范围: 电源电路通常需要适应一定的电压范围,以适应不同来源的电源。
-
电源稳压器(Voltage Regulator):
- 线性稳压器或开关稳压器: 用于将输入电压稳定在微控制器需要的工作电压范围内。
- 稳定输出电压: 通常为3.3V或5V,具体取决于微控制器的工作电压。
-
电源滤波和去耦电容:
- 电源滤波: 电源线上的滤波电容用于减小电源线上的噪声。
- 去耦电容: 在微控制器电源引脚附近放置的电容,用于提供瞬时电流,确保微控制器在瞬时高负载情况下有足够的电流供应。
-
电池管理电路(如果使用电池):
- 充电电路: 如果系统使用可充电电池,可能需要包括充电电路。
- 电池保护: 用于防止电池过充和过放。
-
电源指示灯或指示器:
- 工作指示灯: 用于指示系统是否处于工作状态。
- 充电指示灯(如果使用电池): 用于指示电池充电状态。
-
电源开关:
- 软件控制或物理开关: 用于控制系统的电源供应。
-
过电流保护和过压保护:
- 过电流保护: 防止系统中的电流超过设计规格。
- 过压保护: 防止系统中的电压超过安全水平。
-
EMI(电磁干扰)滤波器:
- 抑制电磁干扰: 在电源线上添加滤波器,以减小系统产生的电磁干扰或抵御外部电磁干扰。
这些是典型的嵌入式系统电源电路的基本组成部分。具体的电源设计将根据系统的需求、电源来源和电源质量等方面进行调整。在设计电源电路时,确保电源稳定、可靠、满足系统需求,并考虑到可能出现的各种工作条件和环境。
复位电路
复位电路是嵌入式系统中一个重要的组成部分,负责确保系统在启动时以及在异常情况下能够可靠地进行复位。以下是一般嵌入式系统中可能包含的复位电路的基本组成部分:
-
复位引脚(NRST):
- 描述: 通常是一个外部引脚,用于接收外部的复位信号。当复位引脚被拉低时,系统会执行复位操作。
- 应用: 可由外部设备或其他电路拉低,触发系统复位。
-
复位电路(Reset Circuit):
- 描述: 一组电路和元件,用于检测系统是否需要复位,并在需要时执行复位操作。
- 应用: 监测电源上电、手动复位按钮、外部故障等情况。
-
复位触发条件:
- 电源上电: 当系统电源上电时,复位电路确保进行初始化。
- 手动复位按钮: 通过外部按钮或开关触发复位。
- 看门狗定时器(Watchdog Timer): 如果系统未能定期喂狗,看门狗定时器可能触发复位。
- 电压监测: 当电源电压低于阈值时,触发复位以防止不稳定操作。
-
复位持续时间:
- 复位时间: 复位电路确保在一定时间内保持复位状态,以确保系统能够完全初始化。
- 防止毛刺: 防止电源噪声或其他瞬时干扰引起的误复位。
-
复位源选择:
- 可编程复位源: 有时可以通过配置选择不同的复位源,例如外部引脚、看门狗定时器等。
-
复位后的初始化状态:
- 默认状态: 确保系统在复位后进入可预测的初始状态,以确保正常启动。
-
软件复位:
- 通过寄存器: 一些系统允许通过软件操作触发复位。
复位电路的设计旨在确保系统在各种情况下都能够正常启动,并在异常情况下进行安全的复位。它是系统稳定性和可靠性的关键组成部分。在设计时,需要仔细考虑不同的复位触发条件,并确保复位电路符合系统的需求。
BOOT启动电路
BOOT启动电路是用于控制STM32微控制器启动模式的电路。STM32微控制器通常具有多种启动模式,其中BOOT引脚(通常是BOOT0)的状态用于选择不同的启动模式。以下是BOOT启动电路的基本组成部分:
-
BOOT引脚(BOOT0):
- 描述: 通常是一个外部引脚,用于选择不同的启动模式。BOOT引脚的状态由外部电路或用户设置决定。
- 应用: 通过配置BOOT引脚的电平,可以选择不同的启动模式。
-
引脚电平状态:
- BOOT引脚高电平: 可以指示微控制器启动到用户程序。
- BOOT引脚低电平: 可以指示微控制器启动到系统引导加载程序(Bootloader)或其他启动模式。
-
内部上拉电阻:
- 描述: BOOT引脚通常带有内部上拉电阻,以确保在未连接外部电路时有一个默认的电平状态。
- 应用: 防止在未连接到外部电路时引起误操作。
-
电平转换电路(Optional):
- 描述: 在一些应用中,可能需要电平转换电路,将外部的逻辑电平转换为BOOT引脚所需的电平。
- 应用: 用于适应外部电路的逻辑电平。
-
引导模式配置:
- 描述: 通过配置BOOT引脚的电平状态,可以选择不同的引导模式,如主Flash引导、系统引导加载程序引导等。
- 应用: 根据需要选择不同的启动模式。
-
启动时序:
- 描述: 在启动时,BOOT引脚的状态在系统初始化期间被检测,以确定启动模式。
- 应用: 确保在启动时正确选择引导模式。
BOOT启动电路的设计旨在使系统能够选择不同的启动模式,以满足特定的应用需求。这对于在开发、调试和更新固件时具有灵活性非常重要。在设计时,需要仔细考虑BOOT引脚的电平转换、电源电路等方面,以确保启动模式的可靠切换和正确配置。
晶振电路
晶振电路是用于提供系统时钟的重要组成部分。在嵌入式系统中,晶振通常作为时钟源被连接到微控制器上。以下是晶振电路的基本组成部分:
-
晶振元件:
- 晶振器(Crystal Oscillator): 一种精密的谐振电路,产生稳定的振荡频率。
- 陶瓷谐振器(Ceramic Resonator): 一种较为简单、便宜的谐振元件,用于相对较低精度的时钟要求。
-
晶振引脚连接:
- XTAL/OSC引脚: 用于连接晶振元件的引脚,将振荡信号提供给微控制器。
-
负载电容(Load Capacitors):
- 描述: 用于调整晶振的谐振频率,确保振荡的稳定性。
- 连接方式: 一端连接到晶振的每一个引脚,另一端接地。
-
电容匹配网络(Optional):
- 描述: 在一些设计中,可能需要添加电容匹配网络,以确保晶振的性能。
- 应用: 用于匹配晶振的电容需求。
-
电容引脚连接:
- 描述: 电容引脚通常连接到微控制器引脚,提供所需的电容。
- 连接方式: 连接到微控制器的相应引脚,以支持振荡器的稳定工作。
晶振电路的设计和选择取决于系统的时钟要求和性能。晶振提供的时钟频率通常是系统中其他部分操作的基准,因此其稳定性和准确性至关重要。在设计时,需要根据系统需求选择适当的晶振元件和相应的电路元件,以确保系统时钟的可靠性和准确性。
低速晶振和高速晶振
低速晶振和高速晶振是两种在嵌入式系统中用于提供时钟信号的晶振,它们有着不同的特性和应用场景。
-
低速晶振(Low-Speed Crystal Oscillator):
- 频率范围: 通常指的是频率较低的晶振,例如32.768 kHz。
- 用途: 低速晶振通常用于实时时钟(RTC)等需要较低时钟频率的应用。RTC通常用于处理与时间有关的任务,如实时时钟、定时器等。
- 特点: 稳定性要求高,但频率相对较低,适用于低功耗要求和对时钟精度有较高要求的场景。
-
高速晶振(High-Speed Crystal Oscillator):
- 频率范围: 通常指的是频率较高的晶振,例如8 MHz、16 MHz等。
- 用途: 高速晶振通常用于微控制器的主时钟,提供处理器和外设所需的高频率时钟信号。适用于需要高性能计算的应用。
- 特点: 稳定性同样重要,但频率较高,适用于对计算性能要求较高的嵌入式系统。
选择低速晶振还是高速晶振取决于系统的具体需求和应用场景。在实时时钟和低功耗应用中,可能更倾向于使用低速晶振。而在需要高性能计算和频繁数据处理的应用中,高速晶振可能更合适。同时,一些复杂的嵌入式系统可能会同时使用多个晶振,以满足不同部分的时钟需求。
下载调试电路
下载调试电路通常用于连接计算机或调试设备与嵌入式系统,以进行固件烧录、调试和数据传输。以下是下载调试电路的一些基本组成部分:
-
下载接口:
- JTAG(Joint Test Action Group)或SWD(Serial Wire Debug): 常见的下载接口标准,用于连接计算机或调试器与嵌入式系统。
- 串口接口(如UART): 一些系统使用串口进行简单的固件烧录和通信。
-
下载调试模块:
- 描述: 一组硬件电路,用于连接下载接口和目标嵌入式系统。
- 功能: 提供下载、烧录、调试和数据传输的接口。
-
调试器/编程器:
- JTAG调试器、SWD调试器: 与下载接口标准兼容,用于连接计算机与目标系统进行调试。
- 烧录器/编程器: 用于将固件烧录到目标嵌入式系统的设备。
-
调试引脚(Debug Pins):
- 描述: 一组额外的引脚,通常与JTAG或SWD一同使用,用于连接调试器和目标系统。
- 功能: 提供调试时需要的额外信号,如时钟、数据、复位等。
-
调试连接线和插座:
- 调试线: 连接调试器和目标系统的电缆,传输调试和烧录所需的信号。
- 插座: 在目标系统上提供与调试线连接的接口。
-
调试选择开关(Optional):
- 描述: 一些系统可能包含一个开关,用于选择JTAG或SWD调试模式。
- 应用: 允许在调试器和目标系统之间切换调试模式。
-
调试电源电路:
- 描述: 用于为调试器和目标系统提供适当的电源电压。
- 电源保护: 保护电源电路,防止潜在的过流或过压问题。
-
调试状态指示灯:
- 描述: 指示调试器和目标系统之间的通信状态。
- 应用: 提供用户可视反馈,确保连接正确。
下载调试电路的设计取决于使用的下载接口、目标系统的特征以及调试和烧录的需求。调试器和烧录器通常与特定的开发环境和IDE(集成开发环境)兼容,以提供方便的开发和调试工具。
串口一键下载电路
串口一键下载电路通常设计用于通过串口(如UART)进行固件下载的便捷电路。这种电路通常用于简单的应用场景,允许用户通过串口连接到目标系统并使用特殊的固件下载程序。以下是串口一键下载电路的一些基本组成部分:
-
串口接口:
- UART引脚: 通常包括TX(发送)和RX(接收)引脚,用于与目标系统的串口通信。
-
下载按键(Download Button):
- 描述: 一个物理按钮,用户按下以触发下载模式。
- 功能: 通过按下按钮,用户可以切换目标系统进入下载模式,准备接收固件。
-
下载模式指示灯:
- 描述: 一个LED指示灯,指示当前系统是否处于下载模式。
- 功能: 提供用户视觉反馈,确保用户知道系统当前的状态。
-
串口下载模块:
- 描述: 一个特殊的电路模块,用于与目标系统的串口进行通信,同时支持下载模式的切换。
- 功能: 处理串口通信,与下载按钮协同工作,确保在下载模式下正确接收固件。
-
串口下载线和插座:
- 描述: 连接串口下载模块与目标系统的电缆,传输下载和通信所需的信号。
- 功能: 提供物理连接,确保可靠的通信。
-
电源电路:
- 描述: 提供电源电路,确保下载模块和目标系统有足够的电力。
- 电源保护: 防止潜在的电源问题。
-
下载模式选择开关(Optional):
- 描述: 一些设计中可能包含一个开关,用于手动选择下载模式。
- 应用: 允许用户手动切换下载模式。
-
自动波特率检测(Optional):
- 描述: 一些设计中可能包含自动波特率检测功能,以适应不同的串口波特率。
- 应用: 使系统更灵活,能够与不同波特率的串口通信。
这种串口一键下载电路的设计旨在使固件下载变得简单易用,用户只需按下下载按钮即可进入下载模式。这对于一些简单的嵌入式系统以及开发和测试过程中具有便利性。设计时需要考虑系统的特性和用户体验。
三、IO分配
优先分配特定外设IO,然后分配通用IO,最后微调
IO分配是嵌入式系统设计中的关键步骤,特别是在选择和配置微控制器的引脚时。在进行IO分配时,确保按照系统需求和优先级合理地分配引脚是非常重要的。以下是一个一般的IO分配优先级:
-
优先分配特定外设IO:
- 首先,确定系统中需要连接的特定外设,如UART、SPI、I2C、定时器、PWM等。每个外设都需要特定的引脚来进行数据传输和控制。
- 查阅目标外设的数据手册和引脚分配表,了解外设所需的引脚配置。
- 优先选择符合特定外设需求的引脚,确保引脚分配满足外设的通信和控制要求。
-
然后分配通用IO:
- 在分配了特定外设的引脚后,考虑通用IO的分配。
- 通用IO通常用于连接一些普通的输入输出设备,如按键、LED、传感器等。
- 确保通用IO的分配不与特定外设引脚冲突,并满足系统对输入输出设备的需求。
-
微调和冲突解决:
- 在进行IO分配时,可能会出现一些冲突或者需要微调的情况。
- 在进行微调时,考虑引脚之间的电气兼容性、信号干扰等因素。
- 确保引脚的电气特性满足外设和系统的要求,避免电气冲突。
-
考虑布局和连接:
- 考虑引脚的物理布局,确保连接引脚的路径短且清晰。
- 对于需要连接到外部器件的引脚,考虑连接线的布局,以最小化电磁干扰和信号失真。
-
文档化和标记:
- 在完成IO分配后,及时文档化引脚的用途和分配,以便后续开发人员能够快速理解引脚的功能。
- 在原理图和PCB布局中清晰标记每个引脚的用途,确保布局和连接的正确性。
综合考虑这些因素,可以确保IO分配满足系统的需求,并且在后续开发和维护中能够更加方便。