STM32G070KBT6最小系统板绘制和晶振配置、BOOT模式配置

这篇具有很好参考价值的文章主要介绍了STM32G070KBT6最小系统板绘制和晶振配置、BOOT模式配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

芯片:选用STM32G070KBT6,具有128 KB Flash存储器、36 KB RAM,基于M0+内核,最大主频64MHz;

在stm32G0系列参考手册中我们可以发现高速外部时钟信号(HSE)可由两种可能的时钟源产生:一种是外部时钟信号(HSE),另一种是内部时钟信号(HSE)。时钟源:
- HSE 外部晶体/陶瓷谐振器(无源晶振英文为crystal或者resonator,即晶体或谐振器)
- HSE 用户外部时钟(可以是有源晶振或者其他单片机输出的时钟信号,有源晶振英文为oscillator,即振荡器)
谐振器和负载电容必须尽可能靠近振荡器引脚,以减少输出失真和启动稳定时间。负载电容的 
必须根据所选振荡器调整负载电容值。

使用外部时钟时,OSC_OUT可以配置为普通IO口或者OSC_EN引脚,该引脚和有源晶振使能引脚连接,为外部有源晶振提供使能信号。它允许在器件进入低功耗模式时停止外部时钟源。

stm32g0系列boot,stm32,单片机,嵌入式硬件

参考手册如下:说明HSE crystal模式下可以输入4-48MHZ oscillator(按理来说这个是有源晶振,为什么划分到晶体这来?)和HSE bypass模式下最大48MHZ时钟;

stm32g0系列boot,stm32,单片机,嵌入式硬件

然后笔者又去看了stm32G070KB这个具体型号的产品手册,其中关于System clock source有如下一段话:

三种不同的时钟源可提供 SYSCLK 系统时钟:
- 4-48 MHz 高速振荡器,带外部晶体或陶瓷谐振器 (HSE)。它 可为系统 PLL 提供时钟。HSE 也可配置为旁路模式,用于外部时钟。
- 16 MHz 高速内部 RC 振荡器 (HSI16),可通过软件微调。它可以 为系统 PLL 提供时钟。
- 系统 PLL 最大输出频率为 64 MHz。它可由 HSE 或 HSI16 时钟。

stm32g0系列boot,stm32,单片机,嵌入式硬件

如果说oscillator也表示无源晶振的话,笔者在使用stm32cubemx配置g070KBT6的时钟树时遇到了以下问题:

可以看到无法配置HSE的crystal模式,只有BYPASS外部时钟模式,这个问题也有其他人遇到过,

参考链接:STM32G050的外部晶振的一些坑_stm32单片机的晶振引脚接有源晶振-CSDN博客

stm32g0系列boot,stm32,单片机,嵌入式硬件

stm32g0系列boot,stm32,单片机,嵌入式硬件

既然如此,我们姑且认为oscillator表示无源晶振,而在G070KBT6这个型号上也只能用BYPASS模式,虽然参考手册说可以用无源晶振但我们以cubeMX实际配置为准,即使用BYPASS模式并使用有源晶振作为外部时钟;

晶振:使用8MHZ有源晶振(YXC,杨兴晶振),该晶振参考书册中的电路如下:

stm32g0系列boot,stm32,单片机,嵌入式硬件

顺便记录一下单片机PLL锁相环(Phase Locked Loop)倍频原理,为什么输入8MHZ振荡信号,最后能8倍频从而驱动64MHZ的单片机;

首先PLL的结构如下:鉴相器的作用是检测输入信号和输出信号的相位差,并将检测出的相位差信号转换成uD(t)电压信号输出。当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住;鉴相器的输出,可能会带点毛刺,过一下低通滤波;最后VCO它有这么个特性,一丢丢输入电压的变化,会导致输出频率出现很大的变化,个人认为实现频率增加的功能就是由VCO提供;

stm32g0系列boot,stm32,单片机,嵌入式硬件

那么如何实现特定的2/4/8倍频呢?我们只需要在反馈回路上加一个相应的2/4/8分频器即可;

stm32g0系列boot,stm32,单片机,嵌入式硬件


下载电路:使用SWD下载,这里SWD引脚和BOOT0引脚是冲突的;(G0系列只有boot0引脚而没有boot1引脚,具体启动模式选择后面会讲)

stm32g0系列boot,stm32,单片机,嵌入式硬件

我们知道stm32的boot有三种模式:

stm32g0系列boot,stm32,单片机,嵌入式硬件

   我们先说明一下,boot只是决定了单片机上电后从哪个区域启动,由于每个区域对应一个固定的开始地址,那我们也可以理解为boot只决定了单片机从哪个地址开始运行;而我们下载程序的方法有很多,串口、SWD、Jtag等,这些方法都可以决定把程序下载到Flash或者SRAM中的任意地址中去,和什么boot模式无关;

    如果想用串口下载那就得先1、选择系统存储器模式(系统存储器中有官方的串口下载bootloader,该程序被固化不可更改),2、按下复位键从系统存储器启动,将程序下载到flash;3、选择主闪存存储器模式;4、再按下复位键系统从主闪存存储器(即flash)启动,运行刚刚下载的程序;

    上述步骤缺一不可,只有按下复位键之后才能以刚刚更改的模式运行,想要使用官方的bootloader下载程序就要进入系统存储器模式,该模式也只能下载程序不能运行程序;如果想要运行程序就要运行主闪存存储器存储器模式;

    再来聊一下内置SRAM模式,即从SRAM中启动来运行下载到SRAM中的程序,首先我们知道如果下载程序到SRAM中再运行的话是不可行的,因为下载完程序后需要复位才能运行程序,而复位之后SRAM中的内容将会被清零;那么内置SRAM模式的作用是什么呢?作者网上查阅了相关资料发现有调试的作用,具体实现原理还没有弄清楚,如果有看到这里的大佬能解答一下我不胜感激。

    那么还有一种方法可以下载程序在SRAM中并且在SRAM中运行程序,那就是选择主闪存存储器模式启动,然后再闪存flash开头我们自己编写一个bootloader,这个bootloader包含官方bootloader的串口下载功能(当然也可以添加一些其他功能),当App程序运行时检测到要下载程序就跳转到自己编写的bootloader中去,然后通过串口用代码指定程序下载到SRAM中(也可以指定下载到flash中),下载完再跳转到SRAM(或者跳转到flash)中,就可以运行刚刚下载的app程序;(关于bootloader和APP的内容请自行查阅)

    

这里我们选择使用SWD下载程序(SWD下载基于专用的SWD硬件接口,如果单片机芯片有SWD硬件接口就可以使用SWD下载),如果我们将程序下载到flash中那就从flash启动,即选择主闪存存储器模式;

    由于SWD_CLK和boot0都在PA14引脚上,我们根据G0系列参考手册中如下所说的:

在 STM32G0x0 中,可以通过 BOOT0 引脚和用户选项字节中的启动配置位 nBOOT1、BOOT_SEL 和 nBOOT0 选择三种不同的启动模式,如下表所示。在芯片重启后,在第4个系统时钟的上升沿来检查BOOT引脚的电平及相关寄存器配置位来选择在复位后的启动模式(检测之后BOOT脚什么电平也就无所谓了)

stm32g0系列boot,stm32,单片机,嵌入式硬件

由于G0系列只有boot0引脚,所以就用单片机寄存器中nBOOT1 bit位代替boot1引脚的功能;上表中nBOOT_SEL则设置boot0位是参照boot0物理引脚还是和boot1一样参照寄存器中的nBOOT0 bit位;具体如何应用可以参考下面这张图:(从别的作者那里扒来的【毕设】USB功率测试仪 - 嘉立创EDA开源硬件平台 (oshwhub.com))

stm32g0系列boot,stm32,单片机,嵌入式硬件

结合上面两张图翻译一下就是:

    当nBOOT_SEL被勾选,即为1时,启动模式为纯软件启动,这个时候你得先把该程序下载到芯片中才能更改启动模式,因此官方的bootloader就用不了了(官方bootloader得先改启动模式才能下载,顺序不对);当nBOOT_SEL取消勾选时,启动模式由BOOT0引脚电平和nBOOT1决定,当BOOT0为0时从flash启动,BOOT0为1时看nBOOT1是否勾选,勾选则从系统存储区启动,这时可以使用官方的bootloader进行串口下载。没勾选则从内置SRAM区启动;总之SWD下载和官方bootloader一键串口下载不可兼得;

     由于前面说了BOOT0引脚和SW_CLK冲突了,我们有两种解决方式;

1、在BOOT0引脚接一个下拉电阻(官方推荐阻值10K),由于我们是使用SWD下载所以只用主闪存存储器模式即可;

2、放弃BOOT0引脚,使用纯软件更改启动模式;(这里我们使用第一种解决方式,具体实现可以通过HAL库相关代码或者在stm32cubeprogrammer中实现,后续会验证能否用ST-Link的SWD更改启动模式

复位电路:NRST低电平复位,于是接一个上拉电阻,再接一个按钮到地,按下按钮时NRST接地系统复位;还可以在NRST和GND之间接一个电容用来硬件消抖;

电源:使用了一个AMS1117的5V-3.3VLDO降压电路;

最终电路图如下:

stm32g0系列boot,stm32,单片机,嵌入式硬件

关于晶振电路的布线也是有要求的:

1.晶振要尽可能靠近单片机晶振引脚,以此减小寄生电容和减小干扰;晶振的电容要尽可能靠近晶振;

2.晶振电路PCB区域(从顶层到底层)不走任何于晶振电路无关的走线,大功率强干扰器件和高速信号线原理晶振电路;

3.晶振电路和MCU同层布线,且包地处理(通过在电路周围铺一圈地线来减小其他信号对电路的干扰,不与同层其他地相连,然后需要在晶振或晶体的周围打地过孔,使表层与中间层的地平面相连),同时晶振电路PCB区域的其他层也最好进行GND铺铜处理;

下图是有源晶振PCB布线:

stm32g0系列boot,stm32,单片机,嵌入式硬件

如果是无源晶振的话还需要注意差分走线和外部匹配电容的计算,因为无源晶振有两根线,为了减小干扰以及方便负载电容的计算,需要保证两根线等长、等宽、紧密靠近、且在同一层面;

stm32g0系列boot,stm32,单片机,嵌入式硬件

参考链接:STM32G070KB - 主流超值系列Arm Cortex-M0+ MCU,具有128 KB Flash存储器、36 KB RAM、64 MHz CPU、4x USART、定时器、ADC和通信接口,2-3.6V - 意法半导体STMicroelectronics

锁相环倍频原理简要分析 - 嗜血的草 - 博客园 (cnblogs.com)

软件工程师硬起来系列七:强大的锁相环PLL

【毕设】USB功率测试仪 - 嘉立创EDA开源硬件平台 (oshwhub.com)

单片机晶振电路计算与PCB设计,晶振参数 晶振匹配电容计算 无源晶振 有源晶振 温补晶振 恒温晶振 屹晶微EG8010 ,STM32单片机晶振电路设计,长江大学_哔哩哔哩_bilibili

STM32G0和STM32G4 如何把BOOT0当作通用GPIO使用_stm32g070boot引脚和swd重复-CSDN博客文章来源地址https://www.toymoban.com/news/detail-836423.html

到了这里,关于STM32G070KBT6最小系统板绘制和晶振配置、BOOT模式配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32G070RBT6基于STM32CubeMX自动生成ADC输入电压采样工程全过程讲解

    📌相关篇《【硬件开源电路】STM32G070RBT6开发板》 🛠STM32CubeMX工程配置过程演示 📢Keil工程完成业务代码以及烧录演示放在资源中,gif文件过大无法上传。 📚工程概要 本工程是基于STM32CubeMX工具来配置项目,功能需求:在PA0引脚接入一个外部模拟量信号(单片机能承受的电

    2024年02月01日
    浏览(43)
  • STM32G030C8T6:使用外部晶振配置LED灯闪烁

    本专栏记录STM32开发各个功能的详细过程,方便自己后续查看,当然也供正在入门STM32单片机的兄弟们参考; 本小节的目标是,使用STM32G030C8T6单片机,通过STM32CubeMX软件,配置并使用外部8MHz晶振,实现PB4引脚的LED灯每一秒钟闪烁一次; 涉及到的知识有:外部晶振的配置,配置

    2024年01月25日
    浏览(44)
  • STM32最小系统板上所有电路的认识和学习。(晶振电路(电容的作用),复位电路,下载端口,供电电路)

    在STM32最小系统板上,系统电路包括以下内容: 外部晶体振荡电路:用于提供系统时钟。 电源电路:包括5V稳压芯片和3.3V稳压芯片,用于提供芯片和外围器件所需的电压。 复位电路:包括复位电路和手动复位按键,用于确保系统的可靠启动。 调试接口:包括SWD调试接口和

    2023年04月19日
    浏览(40)
  • 绘制stm32最小系统板

    原理图:  不使用串口烧录,所以BOOT0和BOOT1都接地。 VDD:就是单片机的供电电压。 VDDA:VDD后面有个A,A=Analog,表示模拟的意思,就是芯片内部模拟器件的工作电压。 VSSA:表示模拟器件的公共端地。 VBAT:给后备区域供电,维持RTC/BKP寄存器这些数据掉电保存,一般是接纽扣

    2024年02月10日
    浏览(35)
  • 单片机最小系统_晶振电路&复位电路

    单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。 晶振电路相当于单片机的心脏,为单片机的工作提供时钟信号 这里电容的作用是为了消除晶振的起振电感,

    2024年02月01日
    浏览(55)
  • STM32最小系统详解

    最小系统主要包括:主芯片,时钟电路,复位电路,电源电路,程序下载口,扩展接口等部分组成。 1.1 芯片启动模式 1)用户闪存 = 芯片内置的Flash。 2)SRAM = 芯片内置的RAM区,就是内存啦。 3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Boot

    2024年02月09日
    浏览(34)
  • STM32 两个晶振的作用

    通常情况下,对于一些成熟的STM32开发板,在其电路原理图的设计中,MCU外接了两个晶振。一个是低速晶振 32.768kHz,另一个是高速晶振 8MHZ。下文探讨二者的作用。 通常情况下,一些成熟的开发板在对STM32芯片进行原理图设计时,会使用两个晶振,如下图: 在进行晶振贴片时

    2023年04月23日
    浏览(46)
  • STM32晶振的选择与计算

    在开发STM32电路板时,晶振的选择是一个很重要的步骤。所幸在STM32的资料库里,有一篇文档完整地解释了这个过程,文档的编号是是《AN2867-晶振的设计》。这里将其要点完整的摘录并补充相关的知识内容,最后做了导图,总结了这一过程。 •C0:表示由电极形成的电容器产

    2024年02月04日
    浏览(43)
  • 单片机外部晶振故障后自动切换内部晶振——以STM32为例

    作者 日期 版本 说明 Dog Tao 2023.08.02 V1.0 1. 发布初始版本。 Dog Tao 2023.08.10 V1.1 1. 修改了STM32F103时钟系统的配图位置。 时钟信号是单片机的心跳,对嵌入式系统的长期稳定运行有着至关重要的作用。现代单片机的时钟信号一般都支持外部时钟、外部晶体振荡器、内部RC振荡器等

    2024年02月13日
    浏览(46)
  • stm32 及其最小系统的简介

    单片机最小系统是指能够将单片机芯片运行所必需的最少的硬件电路集成在一起的系统。它是一种基本的单片机应用系统,通常由单片机芯片、晶体振荡器、复位电路以及少量的电气元器件组成,为单片机提供时钟信号、复位信号以及外设接口等必要功能。 stm32单片机名称介

    2024年04月26日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包