STM32L010F4 最小系统设计

画一个 STM32L010F4 的测试板子...... by 矜辰所致

前言

最近需要用到一个新的 MCU: STM32L010F4 ,上次测试的 VL53L0X 需要移植到这个芯片上,网上一搜 STM32L010F4,都是介绍资料,没有最小系统,使用说明等。

想着就自己画个最小系统的小板子把,反正以后用起来也有可以测试的板子,虽然简单,也得顺带记录一下。

那本文的内容就是画一个 STM32L010F4 的最小系统板子。

目录

  • 前言
  • 一、芯片基础了解
    • [1.1 关于晶振](#1.1 关于晶振)
    • [1.2 启动模式](#1.2 启动模式)
    • [1.3 串口,调试接口等引脚](#1.3 串口,调试接口等引脚)
  • 二、原理图和PCB
    • [2.1 原理图设计](#2.1 原理图设计)
    • [2.2 PCB设计](#2.2 PCB设计)
  • 结语

一、芯片基础了解

本次使用的芯片带上后缀名字为 STM32L010F4P6 ,TSSOP20 封装的。

在设计之前简单的看了下资料,其实也就主要看看 Pin definitions 引脚的功能部分 :

1.1 关于晶振

简单看过,然后在在立创商城查看这个芯片的时候显示是有验证PCB板子:

但是验证 PCB 板子是以 STM32F030F4P6 为原型设计的,虽然是好像和 STM32L010F4 是 Pin to Pin 的,但是关键在于一个地方,时钟部分有点问题。

参考图 2 脚和 3 脚是外接的 8M 高速晶振,但是 STM32L010F4 的 2 , 3 脚是 OSC32_IN 和 OSC32_OUT 是用来接外部 32.768 kHz 低速晶体振荡器的。所以还是不参考那张图,这里我们还有一个很好的办法,就是打开 STM32CubeMX ,在 RCC 部分选择时钟以后可以看到他的连接图:

那需不需要和 F103 那些一样通常都要接外接高速晶振呢?

在手册可以看到,STM32L010F4 具备一个精度在 1% 的16Mhz 内部晶振,相对来说还是可以的了:

而且在 STM32L010F4 手册的 Pin definitions 好像没有看到外接电源的 IO 口,但是手册里面也有关于 HSE 的说明,那么这时候我们又可以用到 CubeMX,我们勾选一下使用外部晶振会怎样:

上面可以看到,确实是可以接外部晶振的,但是只能接一个脚。

通常来说,这样单引脚接入的时钟信号一般都是有源晶振(一般而言啊,不是所有单引脚都是)。

这里额外提一下 有源晶振 和 无源晶振:

.

有源晶振之所以可以单引脚是因为有源晶振内部已经包含了振荡电路,它能够直接输出稳定的时钟信号,因此不需要额外的反馈引脚(例如 OSC_OUT 引脚)来形成振荡回路。

.

无源晶振需要两个引脚形成一个振荡回路,外部的石英晶体通过输入信号和反馈信号不断振荡,从而产生稳定的时钟信号。一般需要连接 MCU 的 OSC_IN 和 OSC_OUT 引脚。

.

OSC_IN 引脚:这个引脚接收到微控制器内部的驱动信号,施加在石英晶体上,开始激发其振荡。

.

OSC_OUT 引脚:这个引脚用来提供晶振振荡信号的反馈。振荡信号在晶体上产生后,反馈到微控制器的内部振荡电路,保持持续振荡。

多说了一点关于晶振的问题,那回到本次设计,我们就不接外部高速晶振,直接用 STM32L010F4 的 HSI 。

1.2 启动模式

对于 STM32L010F4 的启动模式,手册上面有如下说明:

我们熟悉的 STM32F系列一般都是由 BOOT1 和 BOOT0 共同决定的,但是 STM32L010F4 实际上没有 BOOT1 引脚,只有 BOOT0 。

虽然手册上提到了 nBOOT1 ,这是一个内部选项位 。其实我们这里不用管太多,我们本次需要知道的是 STM32L010F4 不同的启动模式主要依赖于BOOT0引脚的状态 。

主Flash存储器启动(Main Flash memory)
    配置:BOOT0 = 0(通过将BOOT0引脚连接到地)
    这是默认的启动模式,程序存储在内部Flash中,系统复位后直接从Flash启动程序。

系统存储器启动(System memory)
    配置:BOOT0 = 1(通过将BOOT0引脚连接到高电平,通常是3.3V或Vdd)
    在这种模式下,系统存储器被映射到启动空间。系统存储器中通常存储了STM32自带的Bootloader程序,
    允许用户通过串行接口(如UART)将新的程序代码下载到Flash Memory中。

内置SRAM启动(Embedded Memory)
    配置:通常不用于STM32L010F4,因为这种模式一般用于程序调试,
    而STM32L010F4的低功耗特性意味着它通常不用于频繁的程序调试。

对于STM32L010F4,通常只需要关注BOOT0引脚的状态即可进行程序的下载和调试。如果需要从系统存储器启动,只需将BOOT0引脚拉高即可。

所以我们在设计的时候需要把 PB9 - BOOT0 拉低接地。

1.3 串口,调试接口等引脚

时钟看完了,我们这里还是可以根据 CubeMX 直接勾选看看效果。

  • SYS -> Debug Serial Wire 烧录调试接口
  • Connectiviyt 里面的 两个串口

调试接口我们需要用到,串口计划预留一个做打印串口。

这么一来,其实剩下的就是一些 IO 口了,如下图:

通过上面的了解,我们应该也知道了对于 STM32L010F4 MCU ,哪些是必须要用的 IO ,哪些是可以接外设的 IO,下面我们就可以开始最小系统板子的设计了。

二、原理图和PCB

这次的设计,除了把能用的 IO 口引出来,还需要测试一下在 STM32L010F4 上面使用 VL53L0X ,所以我们除了基本的最小系统板子的设计,也会附带一下连接 VL53L0X 的电路图(传感器小板子还是用我自己画的那块小板子)。

2.1 原理图设计

先画一个芯片整体部分,外接32.768kHz 的晶振,复位引脚,BOOT0 接地,电源和 GND 画好:

然后是供电部分,和串口通讯部分,就画在一起了,串口加上一个跳线端子,方便后期 IO 口用作其他用途:

其实到这里,这样画出来的板子就可以测试起来了,我们再把与传感器的连接部分补上:

最后,最后加上一个按键,一个 LED灯,再把 IO 口引成排针,基本就完成了:

2.2 PCB设计

因为只是一个测试板子,而且没有特殊要求,PCB 就很简单了,根据自己的习惯,布局连线就好了,感觉没有什么特别的地方,因为实在是简单没什么好说的。

直接就是布局连线,画好了的结果如下图:

上一下铺铜过后的图和 3D 效果图:

完成,最后就是发出制板。

最后补上一下实物图把,凑合看一下,也不是什么特别的板子:

结语

本文我们画了一个 STM32L010F4 最小系统板子,整体来说是很简单的。

对于不了解的一款普通 32 位单片机来说,难点在于了解 芯片的时钟,以及启动模式,烧录调试引脚是哪些引脚以及怎么连接,剩下的基本就好说了。

等样板到了,再来更新一下实物图,以及简单的测试情况说明。

好了,本文就到这里,谢谢大家!

相关推荐
blessing。。44 分钟前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
嵌新程2 小时前
day03(单片机高级)RTOS
stm32·单片机·嵌入式硬件·freertos·rtos·u575
Lin2012302 小时前
STM32 Keil5 attribute 关键字的用法
stm32·单片机·嵌入式硬件
电工小王(全国可飞)3 小时前
STM32 RAM在Memory Map中被分为3个区域
stm32·单片机·嵌入式硬件
maxiumII3 小时前
Diving into the STM32 HAL-----DAC笔记
笔记·stm32·嵌入式硬件
美式小田5 小时前
单片机学习笔记 9. 8×8LED点阵屏
笔记·单片机·嵌入式硬件·学习
兰_博6 小时前
51单片机-独立按键与数码管联动
单片机·嵌入式硬件·51单片机
时光の尘6 小时前
C语言菜鸟入门·关键字·float以及double的用法
运维·服务器·c语言·开发语言·stm32·单片机·c
嵌入式大圣8 小时前
单片机结合OpenCV
单片机·嵌入式硬件·opencv
日晨难再9 小时前
嵌入式:STM32的启动(Startup)文件解析
stm32·单片机·嵌入式硬件