STM32最小系统硬件组成详解

发布者:码字奇思最新更新时间:2019-01-16 来源: eefocus关键字:STM32  最小系统  硬件组成 手机看文章 扫描二维码
随时随地手机看文章

STM32最小系统硬件组成详解


0组成: 电源   复位   时钟    调试接口  启动


1、电源 : 一般3.3V  LDO供电   加多个0.01uf去耦电容  


2、复位:有三种复位方式:上电复位、手动复位、程序自动复位


通常低电平复位:(51单片机高电平复位,电容电阻位置调换)


上电复位,在上电瞬间,电容充电,RESET出现短暂的低电平,该低电平持续时间由电阻和电容共同决定,计算方式如下:t = 1.1RC(固定计算公式)  1.1*10K*0.0.1uF=1.1S


需求的复位信号持续时间约在1ms左右。


手动复位:按键按下时,RESET和地导通,从而产生一个低电平,实现复位。



3、时钟 :   晶振+起振电容  +(反馈电阻MΩ级)   


如使用内部时钟:


对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。


2)对于少于100脚的产品,有2种接法:


i)OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性。


32.768KHZ:


可选择只接高速外部时钟8MHZ或 既多接一个32.768MHZ的外部低速时钟。


32.768KHZ时钟作用:      用于精准计时电路  万年历


通常会选择32.768KHz的晶振,原因在于32768=2^15,而嵌入式芯片分频设置寄存器通常是2的次幂的形式,这样经过15次分频后,就很容易的1HZ的频率。实现精准定时。用于精准计时电路  万年历 


晶振:一般选择8MHZ  方便倍频     


有源:更稳定 成本更高 需要接电源供电  不需要外围电路      3脚单线输出  


无源:精度基本够 方便灵活 便宜          最大区别:是否需要单独供电         无源晶振需要外接起振电容:晶振的两侧有两个电容



有源晶振


作用:


1、使晶振两端的等效电容等于或接近于负载电容;


2、起到一定的滤波的作用,滤除晶振波形中的高频杂波;


该起振电容的大小一般选择10~40pF,当然根据不同的单片机使用手册可以具体查阅,如果手册上没有说明,一般选择20pF、30pF即可,这是个经验值。


调整电容可微调振荡频率:


一般情况下,增大电容会使振荡频率下降,而减小电容会使振荡频率升高,


反馈电阻:   1M    负反馈    同时也是限流


1、连接晶振的芯片端内部是一个线性运算放大器,将输入进行反向180度输出,晶振处的负载电容电阻组成的网络提供另外180度的相移; 整个环路的相移360度,满足振荡的相位条件,


2、 晶振输入输出连接的电阻作用是产生负反馈,保证放大器工作在高增益的线性区,一般在M欧级;


3、 限流的作用,防止反向器输出对晶振过驱动,损坏晶振,有的晶振不需要是因为把这个电阻已经集成到了晶振里面。             



4、启动:  用户使用通常都设置成Boot0  Boot1均为0即均为低电平  


M3核的器件有3种启动方式,M4的有4种。通过BOOT0,BOOT1的电平进行选择。



       STM32三种启动模式对应的存储介质均是芯片内置的,它们是:


1)用户闪存 = 芯片内置的Flash。


2)SRAM = 芯片内置的RAM区,就是内存啦。


3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区,它是使用USART1作为通信口。


       M4在上述基础上又增加了可在FSMC的BANK1区域启动。



5、调试接口:STM32有两种调试接口,JTAG为5针,  SWD为2线串行(一共四线)



此外还有采用USB进行程序烧写和数据输出:和电脑USB口连接也可以进行小负载驱动供电。


通常采用CH340G的芯片:实现USB转串口。


需要单独的振荡电路 12MHZ 


使用该芯片将电脑的USB映射为串口使用,  注意电脑上应安装串口驱动程序,否则不能正常识别。



当烧写程序时,我们希望BOOT0=1,BOOT1=0。当烧写完成后我们希望BOOT0=0,BOOT1=0(这个模式BOOT1可以是0可以是1,这里我们让BOOT1拉低,即整个过程BOOT1都为L接地,简化电路设计)。


关键字:STM32  最小系统  硬件组成 引用地址:STM32最小系统硬件组成详解

上一篇:LPC824 使用FlashMagic 下载程序
下一篇:LPC2378烧写程序三种方法

推荐阅读最新更新时间:2024-03-16 16:22

STM32+AD7606芯片源代码
基于STN32F407的AD7606芯片ADC采样例程,使用FSMC接口 单片机源程序如下: #include bsp.h /* 如果要用ST的固件库,必须包含这个文件 */ /* 定义例程名和例程发布日期 */ #define EXAMPLE_NAME F4-029_AD7606模块例程 #define EXAMPLE_DATE 02-01 #define DEMO_VER 1.0 /* 仅允许本文件内调用的函数声明 */ static void PrintfLogo(void); /* *************************************
[单片机]
STM32的I2C-EEPROM已调试成功
万利的I2C-EEPROM例程有些问题,经本人两个昼夜的反复试验,已修改完善。 修改了两个地方,在void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u16 NumByteToWrite)写操作函数和void I2C_EE_BufferRead(u8* pBuffer, u8 ReadAddr, u16 NumByteToRead)读操作函数体内的开头先要执行一句I2C_EE_WaitEepromStandbyState(); 这样在以后调用写操作函数和读操作函数时就不用执行I2C_EE_WaitEepromStandbyState()了。但上电复位后先要执
[单片机]
嵌入式学习⑤——STM32嵌入式应用系统设计
前言 这次嵌入式学习的主要内容为可视化的代码跟踪调试、简单的hex文件编译并在Proteus上仿真运行、最后使用Altium Designer 进行原理图和PCB图的设计,都是我们学习STM32的工具。 一、基于跨平台多类型代码编辑器VScode 1.VScode的安装 从vscode官网下载最新版本,deb包下载地址:https://code.visualstudio.com/docs?dv=linux64 使用wget 下载地址 进行下载 安装:dpkg -i 安装包 安装成功后,执行code命令打开sacccaas界面 安装过程中由于安装包依赖关系而报错,解决方案如下: deb安装出现依赖问题可以执行
[单片机]
嵌入式学习⑤——<font color='red'>STM32</font>嵌入式应用系统设计
如何将STM32单片机中的函数调用到入口参数
STM32—数组作为被调用函数的入口参数时,要两个条件, 1:数组首地址 2:数组长度 在被调用函数中,比如把数据保存到数组pbuffer[ ]中,那么在入口参数定义时要定义成指针u8 *pbuffer, 而在调用时,比如要保存到tab[ ]中,要在入口参数处强制转换成(u8 *)tab
[单片机]
如何将<font color='red'>STM32</font>单片机中的函数调用到入口参数
STM32的PVD、POR、PDR简介
先看一下这2张截自STM32参考手册的图片: 下面这张表截自STM32F103x8/B的数据手册,对上图的参数给出了具体数值: 下面对上面2张图和表格中的数据做一个简要的解释: 1)PVD = Programmable Votage Detector 可编程电压监测器 它的作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。在给出表格的上半部分就是可编程的监视阀值数据。当供电电压又恢复到给定的阀值以上时,也会产生一个中断,通知软件供电恢复。供电下降的阀值与供电上升的PVD阀值有一个固定的差值,这就是表中的VPVDhyst(PVD迟滞)这个参数,通过列出的PVD阀值数据
[单片机]
<font color='red'>STM32</font>的PVD、POR、PDR简介
整合各方大佬多得来的经验如何学习STM32!(入门、进阶)
一、想快速入门进阶,面向工作时   先把工作中需要的东西学会,一项一项的来,比如先把GPIO弄清楚,怎么初始化,怎么输入输出,然后定时器、串口、ADC、DAC、DMA、SPI等等先把用得着的一个一个地做,   都弄明白了再往一块整合,从简单到复杂,硬件操控起来了也就算对这种单片机入门了吧,软件方面,不管用什么单片机,用什么编译器,区别不大初学的最好还是买个开发板,不   需要多高级的,有几个常用功能做出来,其它就容易了。--------hdxet   关于初学者是否需要弄清底层函数问题:   先玩起来再说底层函数,一般就用现成的库,绝大多数应用都没问题的,至于库里面是什么,先不管它,到了高级阶段再去看--------hdxet  
[单片机]
STM32堆栈学习
STM32里面 STACK 和 HEAP ,前者为堆,后者为栈。 今天在调试一段向Server发送程序的时候:出现一个奇怪的现象: fun(){ fun1( ); //初始化 fun2( ); //链接远程服务器 fun3( ); //发送数据 } 整体运行的时候,运行到fun3( );的地方就出现HaltFault!注释掉fun3( ),然后运行fun1( )和fun2( );可以运行。再注释掉fun1( )和fun2( )(此时已经链接上),单独运行fun3( );也能运行。吃午饭是和同事说明这一情况,他提醒说是不是因为堆栈的问题,后来回来查看MAP文件情况。 ===================
[单片机]
STM32复位源判断
在项目中有时候会遇到单片机莫名奇妙复位的情况,为了判断是那种原因引起复位,就需要对单片机的复位源进行判断。现用STM32F103C8T6单片机进行测试。 先看看单片机复位源都有哪些? 在STM32中文参考手册中可以看到,复位源可以通过状态寄存器来读出。 于是写一段程序来读取复位状态寄存器: void Check_Rst(void) { printf( CSR = %xrn , RCC- CSR); if(RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET ) // NRST 引脚复位 { printf( PIN reset rn ); } if(RCC_
[单片机]
<font color='red'>STM32</font>复位源判断
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved