讲讲基于STM32的硬件资源

网友投稿 584 2022-11-18

讲讲基于STM32的硬件资源

STM32基础硬件知识

STM32与单片机的硬件接口基本一致,都是调用硬件接口控制I/O,完成相应的功能。另外,STM32在软件方面具有ST官方的源代码开放的库文件,开发速度相对轻松方便,而且BUG较少。

本文以STM32F103为例对STM32的硬件资源进行介绍。

1、STM32最小系统

NVIC 嵌套的向量式中断控制器---可处理43个可屏蔽中断通道(不含16个中断线)和16个优先级。

低功耗模式:睡眠,停机,待机

通用同步/异步接受发送器(USART)

VDD:器件内部的工作电压,芯片的工作电压(Vcc>Vdd)

VCC:电路的供电电压。

VSS:电路公共接地端电压——接地端——接地点

图1-STM32F103最小系统

2、启动选择

图1中上部的BOOT0和BOOT1用于设置STM32的启动方式,其对应启动模式如下表所示:

表1- BOOT0、BOOT1启动模式表

用串口下载代码时,则配置BOOT0为1,BOOT1为0即可,如果想让STM32一按复位键就开始跑代码,则需要配置BOOT0为0,BOOT1随便设置都可以。

3、复位

图2-按键复位电路

STM32支持三种复位方式,分别是系统复位、上电复位和备份区域复位

(3)独立看门狗计数终止(IWDG复位);

(4)软件复位(SW复位);

(5)低功耗管理复位。

可以通过查看RC_CSR控制状态寄存器中的复位状态标志位识别复位时间来源。

当以下事件中之一发生时,产生电源复位:

(1)上电/掉电复位(POR/PDR复位);

(2)从待机模式中返回。

备份域复位:

当以下事件中之一发生时,产生备份区域复位:

(2)在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。

4、 IO口

图1中STM32的PORTA、PORTB以及PORTC的IO口全部引出,以便于与外部设备连接。

STM32每个GPIO 端口有两个32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32 位置位/复位寄存器(GPIOx_BSRR),一个16 位复位寄存器(GPIOx_BRR)和一个32 位锁定寄存器(GPIOx_LCKR)。

对于STM32的IO口可以根据需要由软件配置成八种模式(模电中有相关电路的具体分析):

(2)GPIO_Mode_IN_FLOATING 浮空输入;

(3)GPIO_Mode_IPD 下拉输入;

(4)GPIO_Mode_IPU 上拉输入;

(5)GPIO_Mode_Out_OD 开漏输出;

(6)GPIO_Mode_Out_PP 推挽输出;

(7)GPIO_Mode_AF_OD 复用开漏输出;

(8)GPIO_Mode_AF_PP 复用推挽输出。

5、电源

图3-电源电路

图4-STM32电源框图

Vdda是为模拟部分供电的,如果不接Vdda,芯片应该无法运行。

供电方案:

VDD=2.0~3.6V:VDD管脚提供IO管脚和内部调压器的供电;

VSSA,VDDA=2.0~3.6V:为ADC、复位模块、RC振荡器和PLL的模拟部分供电。使用ADC时,VDD不得小于2.4V;

VBAT=1.8~3.6V:当(通过电源开关)关闭VDD时,为RTC、外部32KHz振荡器和后备寄存器供电。

6、烧写接口

图5-JTAG接口电路

其中:

STM32的JTMS/SWDIO接JTAG口的TMS;

STM32的JTCK/SWCLK接JTAG口的TCK。

如果要用ULINK2,则再加多一条“NRST”,即5条。

STM32的SWD接口与JTAG是共用的,只要接上JTAG,就可以使用SWD模式了(其实并不需要JTAG这么多线),JLINKV8和ULINK2都支持SWD。

7、时钟与晶振

在STM32中,有五个时钟源,分别为HSI、HSE、LSI、LSE、PLL。其实是四个时钟源,如图6所示(灰蓝色),PLL是由锁相环电路倍频得到PLL时钟。

(1)HSI是高速内部时钟,RC振荡器,频率为8MHz。

(3)LSI是低速内部时钟,RC振荡器,频率为40kHz。

(4)LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

(5) PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

图6-STM32时钟系统框图

对于单片机系统来说,CPU和总线以及外设的时钟设置是非常重要的,因为没有时钟就没有时序。由于时钟是一个由内而外的东西,具体设置要从寄存器开始。一般板子上只有8Mhz的晶振,而增强型最高工作频率为72Mhz,显然需要用PLL倍频9倍,这些设置都需要在初始化阶段完成。一般性的时钟设置需要先考虑系统时钟的来源,是内部RC还是外部晶振还是外部的振荡器,是否需要PLL。STM需要2个晶振,1个是HSE,常用外部高频,PLL倍频用,常8MHz;另一个为外部低频晶振,系统待机或低功耗时用,为32.6KHz。外接的那个用于 RTC 的32768 晶振,需要专用的负载晶振。

图7-STM32外部晶振电路图

本文对STM32 的硬件部分做大致介绍,设计时用到其它的具体知识后期会陆续进行补充介绍,并附实例程序。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Kubernetes CKS【24】---System Hardening - Kernel Hardening Tools(seccomp)
下一篇:Java 八道经典面试题之链表题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~