被裁20240927 --- 嵌入式硬件开发 STM32篇
人很容易原谅别人的错误但很难原谅别人的正确
- 1. 文档、手册、指南、资源
- 2. MCU 结构
- 3. MCU 和 MPU 的区别
- 4. 一些概念
- 什么是看门狗 WDG ?
- 什么是 DMA ?
- 什么是晶振 ?
- 什么是片内外设?
- 通信协议、通讯协议
- UART与 RS-232、RS-422、RS-485、TTL电平 的关系
- 嵌入式系统中常用的通信协议
- PWM信号、PWM波、脉冲宽度调制
- 概念
- 常见的PWM调制电路
- 使用STM32的GPIO来产生PWM信号
- 飞控中的PWM值为什么显示的范围是1000~2000?
- PWM信号控制直流无刷电机
- 5. STM32 最小系统
- 一、电源电路
- 二、时钟电路
- 三、复位电路
- 四、调试接口电路
- 五、启动电路
- 6.为什么使用 MCU?
- 7. 如何选型?
- 8. 如何使用STM32MCU芯片?
- 一、自己设计电路板
- 二、购买官方开发板(或第三方开发板)
- 9. 程序开发步骤
- 10. 硬件调试工具
- 11. STM32 H743 为例
- 12. STM32 H743 飞控
- 参考文献
1. 文档、手册、指南、资源
- 官网
- Getting started with STM32
- Getting started with peripherals
- 快速开始
- 开发者社区
- 资料下载(手册、文档、指南、工具、软件包、笔记、课件等)
- 开发工具下载(STM32Cube系列软件)
- 与STM32适配的第三方组件与模块(4g5g模块、wifi、蓝牙等模块等)
- 与STM32适配的第三方嵌入式软件(RT-Thread、QT、视觉检测软件等)
- 第三方STM32开发板(正点原子、野火等)
- 官方STM32开发板(评估板、探索套件板、NUCLEO板)
【1】STM32 MCU开发板和硬件工具
【2】evaluation_development_board
2. MCU 结构
STM32系列芯片的资源包括:
- 少量的RAM
- 少量的ROM
- 看门狗
- DMA
- ADC、DAC
- 中断
- 定时器
- 内部晶振(准确度不高)
- uart、spi、I2c、can接口(串行接口、并行接口)
不同核心的STM32芯片具有不同的主频和储存资源:
3. MCU 和 MPU 的区别
MCU中集成了少量的RAM和ROM。
4. 一些概念
什么是看门狗 WDG ?
在嵌入式系统中,看门狗(Watchdog)是一种重要的硬件或软件机制,用于监视系统的运行状态并在出现故障或异常情况时采取适当的恢复措施。
看门狗通常由一个独立的硬件电路实现,也可以通过软件模拟实现。它基于一个简单的概念:定期喂食。当系统正常运行时,看门狗会定期接收到来自CPU或其他监控模块的喂食信号(即重置信号)。如果看门狗在预设的时间间隔内没有接收到喂食信号,它会认为系统出现故障或异常,并采取相应的恢复措施,如系统复位。
什么是 DMA ?
DMA(Direct Memory Access)即直接存储器访问,是一种允许某些硬件子系统(如外设)直接访问系统内存的技术,而无需中央处理单元(CPU)的介入。
定义:DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。
作用:DMA技术主要用于解决大量数据转移过度消耗CPU资源的问题,使CPU能够更专注于其他操作,如计算和控制等。
什么是晶振 ?
时钟电路
什么是片内外设?
ADC、DAC、UART、SPI、I2C、CAN、USB、以太网、摄像头接口等。
通信协议、通讯协议
在嵌入式系统、计算机科学领域中:
- 在计算机领域中,通信协议(Communication Protocol)是指一组规则和约定,用于定义计算机、网络设备或系统之间数据传输和信息交换的方式。
- 通讯协议即通信协议,“通信协议” 是更为规范和准确的表达方式。
- 例如UART协议,用于不同硬件设备间的通信。可以看作是OSI模型中数据链路层、物理层的通信协议。
- 例如Mavlink协议,用于不同软件、应用程序间的通信协议。可以看作是OSI模型中应用层的通信协议。
- 所以Mavlink协议的数据链路层、物理层实现还是要靠UART协议。
- 通信协议通常被划分为不同的层次,每个层次负责不同的通信任务。每一层都为其上一层提供特定的服务,并接收来自下一层的服务。
- 通信协议的分类(OSI 七层模型:)
根据协议在通信过程中的作用和所在的层次,可以将通信协议分为多种类型。-
物理层协议:
- 这些协议定义了如何通过物理媒介(如电缆、无线电波)进行数据传输。
- 例如:RS-232、USB、Ethernet 等。
-
数据链路层协议:
- 数据链路层协议负责在物理传输信道上进行数据的帧处理、错误检测和纠正。
- 例如:Ethernet、PPP(点对点协议)、HDLC(高级数据链路控制)等。
-
网络层协议:
- 网络层协议负责在不同的计算机网络之间传递数据包,并处理路由选择。
- 例如:IP(互联网协议)、ICMP(互联网控制消息协议)等。
-
传输层协议:
- 传输层协议确保数据的端到端传输,提供可靠性和流量控制等功能。
- 例如:TCP(传输控制协议)、UDP(用户数据报协议)等。
-
会话层:管理会话连接和数据交换的顺序,确保数据传输的连续性。
-
表示层:处理数据的表示、编码和加密/解密。
-
应用层协议:
- 应用层协议位于协议栈的最高层,处理具体的应用数据交换。
- 例如:HTTP、FTP、SMTP、DNS 等。
-
待续…
UART与 RS-232、RS-422、RS-485、TTL电平 的关系
关系:
- UART是一种通信协议,它规定通信规则(时序、数据帧的格式、通信参数如波特率)。
- RS-232、RS-422与RS-485都是串行通信中物理层的接口标准,它们规定了数据通信的电气特性和物理特性。
- 在实际应用中,UART协议通常与RS-232、RS-422或RS-485物理层标准结合使用。这意味着,当使用UART进行串行通信时,需要根据所选的物理层标准(如RS-232或RS-485)来配置相应的电气特性和物理连接。
- 由于各自使用的电平有所不同,因此由UART转换为RS-232、RS-422或RS-485时,需要经过一个转换芯片(如SP3232E、SP3485等)。
RS232、RS422、RS485对比:
特性 | RS-232 | RS-422 | RS-485 |
---|---|---|---|
通信模式 | 点对点 | 单向多点 | 双向多点 |
信号类型 | 单端信号 | 差分信号 | 差分信号 |
最大传输距离 | 15 米 | 1200 米 | 1200 米 |
最大速率 | 115.2 kbps | 10 Mbps | 10 Mbps |
应用场景 | 短距离、单设备通信 | 长距离、单一发送设备 | 长距离、多设备通信 |
接口定义、接线方式:
TTL电平与RS-232电平:
-
TTL电平:
- 低电平(一般为0V)表示逻辑“0”
- 高电平(一般为3.3V或5V)表示逻辑“1”
-
RS-232标准:
- +5V或+12V表示逻辑“0”
- -5V或-12V表示逻辑“1”
-
这种电平差异使得TTL信号无法直接与RS-232设备通信,因此需要进行电平转换,常见的电平转换芯片有MAX232、SP3232等:
嵌入式系统中常用的通信协议
嵌入式系统中常用的通信协议有多种,它们各自具有不同的特点和应用场景。以下是一些常见的嵌入式系统通信协议:
-
UART(通用异步收发传输器):
- 原理:UART是一种常用的串行通信协议,通过一根传输线进行全双工的异步数据传输。它基于波特率(Baud Rate)来定义数据传输的速率,发送端和接收端的波特率必须一致才能正常通信。
- 特点:简单、成本低廉,适用于近距离通信。
- 应用场景:主要用于设备间的简单数据交换,如微控制器和外设之间的通信。早期主要用于连接串口设备,现在仍然广泛用于低速外设通信,如蓝牙和GPS模块。
-
SPI(串行外设接口):
- 原理:SPI是一种全双工的串行通信协议,使用四根线(时钟线、主设备输出线、主设备输入线和片选线)进行通信。它采用主从模式,一个主设备可以连接多个从设备。
- 特点:速度快、全双工。
- 应用场景:常用于连接闪存芯片和各种传感器。
-
I2C(两线式串行总线):
- 原理:I2C采用两根线(时钟线和数据线)进行通信,也基于主从模式。主设备控制通信的时序和数据传输,而从设备则按照主设备的指令进行响应。
- 特点:支持多主多从,主要用于连接低速外设。
- 应用场景:在消费电子和工业自动化领域,常用于连接传感器等设备。
-
CAN(控制器局域网络):
- 原理:CAN是一种高度可靠的、多主机的消息广播系统,采用差分信号进行通信,具有高可靠性和抗干扰能力。它基于消息的发送和接收,每个CAN节点都可以发送和接收消息。
- 特点:高可靠性、抗干扰能力强。
- 应用场景:主要用于汽车电子和工业自动化等领域,连接各种设备。在汽车电子中连接电子控制单元,在工业自动化中连接工业设备。
-
USB(通用串行总线):
- 原理:USB具有即插即用和高速传输等特点,用于连接各种外设。
- 特点:即插即用、高速传输。
- 应用场景:在个人电脑和嵌入式系统中,常用于连接外部设备和进行调试及程序下载。
-
Ethernet(以太网):
- 原理:Ethernet是一种局域网通信协议,用于嵌入式系统实现网络连接。
- 特点:支持网络连接和互联互通。
- 应用场景:在工业自动化和智能家居领域,常用于设备间通信和互联互通。
-
Modbus:
- 原理:Modbus是一种串行通信协议,主要用于工业自动化领域设备间数据交换。
- 特点:在工业自动化和能源管理领域有广泛应用。
- 应用场景:常用于设备数据采集和监控。
此外,还有一些其他通信协议如RS232、RS485和I2S等也在特定场合下使用。这些协议共同构成了嵌入式系统中丰富多样的通信手段,满足了不同应用场景下的数据传输需求。
PWM信号、PWM波、脉冲宽度调制
概念
-
作用、意义:使用数字信号来等效模拟信号!注意是作用等效而不是离散化!
-
例如:下面这两个模拟波形、数字波形,作用在一个具有惯性环节的电路上时,得到的效果是一样的!
-
理论依据:面积等效原理、冲量等效原理。
-
数字信号(连续的)、模拟信号(01,高低电平)
-
重要概念:频率、占空比、周期。
-
周期计算:先看高电平,再看低电平,总的时间加起来就是周期。
-
占空比:高电平时间/周期,占空比<=1。
-
一个周期内的平均电压
-
PWM应用领域
- 电机控制
- 灯光控制
- 电力电子设备
- 温度控制
- 音频信号处理
- 电池充电
- 传感器信号调理
-
总结
- PWM波是一种频率不变、占空比可变的数字信号。(占空比可变意味着平均电压在变!)
- PWM波的意义在于使用数字信号来等效模拟信号。
- 因为MCU的GPIO只能输出数字信号,也就是TTL电平信号,因此在很多应用场景中需要使用PWM信号来等效模拟信号,达到对模拟电路(如电机转速、转矩、灯光亮度)的控制!!
常见的PWM调制电路
其他…
使用STM32的GPIO来产生PWM信号
步骤:
1.初始化时钟;
2. 配置GPIO引脚;
3. 配置定时器;
4. 动态调整占空比;
5. 其他…
注意:STM32的GPIO来产生PWM信号的电平形式是TTL电平,并且功率有效,不能提供太大的电流,因此不能直接用作驱动电路,例如电机的驱动电流是很大的!
飞控中的PWM值为什么显示的范围是1000~2000?
这个1000~2000就是高电平的持续时间,例如遥控器显示的通道PWM值为1500,那么对应的占空比就是D=1500/2000
PWM信号控制直流无刷电机
5. STM32 最小系统
STM32的最小系统是指能让STM32单片机正常运行的最少且必须的硬件元件组成的系统。这个系统通常包括以下几个关键部分:
一、电源电路
STM32单片机的工作电压一般为1.8V~3.6V(不同型号可能有所不同,但3.3V是常见的供电电压)。为了确保电源的稳定性,通常会使用稳压芯片,如AMS1117-3.3,将5V电压转换为稳定的3.3V电压供给单片机。此外,电源电路中还会加入多个滤波电容,以去除电源中的杂波和干扰信号,保证单片机的稳定运行。
二、时钟电路
时钟电路是STM32单片机的“心脏”,为单片机提供运行的时钟信号。STM32通常有两组晶振:
- 高速晶振:一般为主时钟晶振,常见频率为8MHz(但可以通过内部倍频达到更高的工作频率)。这个晶振为单片机提供主时钟信号,使单片机能够高速运行各种程序和任务。
- 低速晶振:通常为RTC(实时时钟)时钟晶振,频率一般为32.768kHz。这个晶振为实时时钟提供精确的时钟信号,保证时间的准确记录。
晶振两端通常会连接电容,以起到滤波和稳定频率的作用。
三、复位电路
复位电路是单片机的“免疫系统”,当系统出现故障或混乱时,可通过复位让系统重新开始。STM32是低电平复位,通常有手动复位和上电复位两种方式:
- 手动复位:通过按键实现,当按下按键时,复位引脚接地为低电平,松开后恢复高电平,从而实现复位操作。
- 上电复位:利用电容的充放电特性,在上电瞬间,由于电容两端电压不能突变,复位引脚为低电平,随着电容充电完成,复位引脚变为高电平,单片机开始正常工作。
四、调试接口电路
调试接口电路是开发过程中不可或缺的部分,它方便开发者进行程序的下载和调试。STM32常用的调试下载方式有JTAG和SWD:
- JTAG:一种国际标准测试协议,主要用于芯片内部测试。标准的JTAG接口是4线接口,包括TMS(模式选择)、TCK(时钟)、TDI(数据输入)和TDO(数据输出)。
- SWD:一种和JTAG不同的调试模式,使用的调试协议也不一样。与JTAG相比,SWD接口简单,只需要2根线(SWDIO和SWCLK)即可实现调试和下载功能,节省I/O口和板子空间,且在高速模式下更加可靠。
五、启动电路
启动电路决定了单片机的启动方式。STM32有三种启动模式,由BOOT0和BOOT1引脚在复位时的状态决定:
- 从主Flash启动:最常见的启动方式,BOOT0为0,BOOT1为任意值。此时,代码存储在STM32的内置Flash中。
- 从系统存储器启动:BOOT0为1,BOOT1为0。此时,内置ROM的起始地址将被重映射到0x00000000地址,通常用于执行串口程序下载(ISP)。
- 从嵌入式SRAM中启动:BOOT0和BOOT1都为1。此时,代码从SRAM中启动,适合调试,但掉电后数据会丢失。
综上所述,STM32的最小系统由电源电路、时钟电路、复位电路、调试接口电路和启动电路组成。这些部分相互配合,共同为单片机的稳定运行提供了保障。
6.为什么使用 MCU?
- 廉价
- 低功耗
- 可复用(可编程)
7. 如何选型?
结合使用场景?
主频?
RAM和ROM的大小?
ADC、DAC数量?
UART数量?
功耗?
- 官网提供在线选型工具:
- 官方选型软件 安装:ST MCU Finder
- 查阅手册查看所有规格参数。
8. 如何使用STM32MCU芯片?
一、自己设计电路板
电路图设计?
电路设计工具?
设计步骤?
打印PCB板?
贴片?
编程、烧录?
调试测试?
二、购买官方开发板(或第三方开发板)
选择哪种板子?
- 第三方STM32开发板(正点原子、野火等)
- 官方STM32开发板(评估板、探索套件板、NUCLEO板)
【1】STM32 MCU开发板和硬件工具
【2】evaluation_development_board
9. 程序开发步骤
依次使用STM32Cube 系列软件:
STM32Cube 系列软件提供了:
- HAL(High Abstraction Layer)
- LL(Low Layer)
- Examples
- Readme files
STM32Cube 系列软件下载地址。
10. 硬件调试工具
11. STM32 H743 为例
【1】STM32H743概述
【2】STM32H743xI单片机 数据手册(描述、功能概述、引脚分配和定义、电气特性、封装等)
【3】STM32 H743 参考手册
12. STM32 H743 飞控
MatekH743-SLIM是闭源的,但是在立创开源上面有很多博主抄了这个板子拿来开源了。
ardupilot中的开源飞控板子:Open Hardware
待续…
参考文献
【1】https://www.stmcu.com.cn
【2】https://www.doubao.com/chat
【3】https://www.mateksys.com
【4】https://www.douyin.com