设计一个stm32g431温湿度传感器

一.分配引脚:

1.根据功能确定引脚:
  • 如果该引脚没有功能但是却被使用了,则之后只能通过软件方式实现(e.g SDA SCL)
  • 如果接晶振的引脚没有接晶振,则芯片只能使用内部晶振了。
  • iic软件模拟就行,随便连俩脚就能用,只是没法用hal库了。

注:

  • 数据手册是给这一G431系列单片机的通用手册,前边这个是引脚序列号,有9列,至少有9款单片机共用这个手册。不同封装是为了不同用途,从同一个晶圆上引出不一样数量的引脚,封装不同,本质上的核心都是一样的,只是gpio数量不同。
  • 我使用的封装是qfn-48的,去找对应封装那一列的引脚序列号,如果是个-,说明这一款没有这个引脚。
  • IIC 1 2 3都是硬件IIC,只是有三套,iic是个通讯外设只有一个不够。

2.查看芯片电气特性:

看芯片能够承受多少V电压,此处是1.7-3.6V,如果我们使用两节干电池。1.5V串联==3V。

3.分辨VDD / VDDA /VBAT / VREF / VSS / PF0-OSC_IN  /  PC14-OSC32_IN:
(1)以LQNF48为例:

  • PC14-OSC32_IN :

32表示32.768kHz的缩写,只能连32.768kHz的晶振,是低速晶振(只有khz)。

(分频15次产生1Hz的信号,广泛用于实时时钟(RTC)电路)

这个频率被广泛用于实时时钟(RTC)电路,因为恰好是2的幂次方。使用15位二进制计数器时,每经过32768次振荡(即2¹⁵次)后计数器溢出,正好产生1Hz的信号(1秒时间基准),即每秒走一次,去计实时时间,一个显示当前北京时间的表。

注:分频是只能分2的倍数次。

  • PF0-OSC_IN :

PF0连晶振之后不能做别的功能了,PF0连的是单片机主时钟的晶振,这里我们选8MHz(任何单片机都能选8MHZ),比如说stm32g431,总线时钟可以最高到170MHz,可以通过8MHz分频和倍频实现。

即:

二者都是外部晶振,一个是高速晶振,一个是低速晶振(作RTC real time clock或者看门狗)。

看门狗:不喂狗就让芯片复位。


  • VDD:

VDD是Digital数字电路的电源,即vdd是给其它数字电路供电的,除了adc,dac其它所有(比如IIC)。

  • VBAT:

vbat是给内部real time clock和部分地址的sram的供电接入口,如果有一些不希望断电丢失的数据就需要给vbat一直通着电。这个外接个3v纽扣电池就行,没有的话直接连到3.3v就行。

  • VREF+:adc,dac的基准参考电压,接3.3v就行。

PBQ此处是ADC。分压电阻用来测电池电压的,找个ADC连上就行。

vref+,+就接3.3(基准参考电压),-就接gnd。

为什么是3.3V?

数据手册上写的,这是参考基准,adc内部比较器用的,软件一般都用12bit的adc,即3.3V输入进adc之后会被平均分12次,变成2的12次方分之3.3V,是adc的每一个步进值。

adc是比较,输入一个模拟电压(0-3.3V),因为adc内部有很多比较器,每次比较是和每个比较器步进值是2的12次方分之3.3V比较一次,直到比较到比这个参考电压小,那么他的adc值就是多少。计算的时候,它满12次方的分辨率满是4096,就最大是4095。我们去换算它实际值的时候,就是用它读出来的ADC去除以4095,再乘上3.3V,就是它实际的电压值。它内部的那个分压电路啥的都是。内部集成的,我们只需要给它连上一个最大的一个正向的3.3伏参考电压就行,这个参考电压连多少到时候换算的时候乘多少就行,因为12倍是2的12次方,2的12次方是4096啊,它有4096份儿,那么它就是0到4095。

比如说电池电压是7.2V-8.4V的,低于7.2V就需要充电。单片机最高只能接3.3V的电压,即他的ADC只能接受3.3V以下的电,所以需要把7.2V用两个电阻分压,分到0-3.3V区间内,换算时候乘上那个系数即可。

  • GND:
  • VSS:电源负极,接GND
  • VDDA;

VDD是Digital数字电路的电源,VDDA是Analog模拟电路的电源。

数字信号就是只有0和1的,比如说PWM,串口,IIC,SPI这些外设都是数字信号。

模拟信号是有具体大小的,比如ADC,DAC。

ADC 全称:Analog-to-Digital Converter(模数转换器)

DAC 全称:Digital-to-Analog Converter(数模转换器)

均是数字信号和模拟信号的转换。

(2)以另一款芯片为例:

  • 这一款芯片引脚太少,VDD和VBATt都合并了。

4.实际引脚分配:
  • IIC连SDA和SCL即可。(两根线就够)
  • SW是下载的,比如说DAP下载器连一个SWCLK和一个SWDIO。(有时候会与BOOT引脚合并)
  • WAKE:是按键输入,所以任意选一个GPIO即可,引脚都是GPIO。
  • BAT_VOL:adc_channel,任意选一个ADC12_INx。
  • 其余引脚随便选,任意选一个GPIO即可。(尽量挨在一起好接线)
  • 所有VDD,VREF+,VBAT均接3.3V,因为由数据手册(2.查看芯片电气特性:):TTL标准电压=3.3V.一般单片机都可以接3.3V.
  • 由数据手册可以看到,QFN48封装的VSS内部全接给EP脚了,所以EP直接接GND就行,走线时候EP大焊盘连上GND即可。
  • OSC_32:接外部低速晶振,连不连无所谓。
  • OSC:接外部高速速晶振
  • _IN:
  • _OUT:

OSC_IN和OSC_OUT是微控制器(如STM32)中用于连接外部高速晶振的一对专用时钟引脚。

引脚功能信号方向
OSC_IN时钟信号输入端输入
OSC_OUT时钟信号输出/反馈端输出

  • UART:

  • BOOT:

BOOT的时序逻辑:

上电时锁存BOOT引脚的电平,决定程序从哪个地址开始执行。

BOOT引脚是微控制器(如STM32)用于选择启动存储器的硬件配置引脚,在复位阶段决定CPU从哪个存储区域加载初始执行代码。

BOOT1BOOT0启动模式典型应用
X0主闪存存储器(0x08000000)正常运行模式
01系统存储器(内置Bootloader)串口/USB下载程序
11内置SRAM(0x20000000)调试/特殊应用

并非所有MCU都同时具有独立的BOOT1和BOOT0引脚,这取决于具体型号封装大小)

1. 主闪存启动(BOOT0=0)

  • 默认模式:上电后从内部Flash的起始地址执行用户程序

  • 应用:产品正常工作时固定此配置

  • 电路:BOOT0引脚下拉10kΩ电阻到GND

2. 系统存储器启动(BOOT0=1, BOOT1=0)

  • ISP模式:启动内置Bootloader(芯片厂商预存在单片机里面的地址的芯片的代码),支持通过USART、USB、I2C等接口接收新程序

  • 应用:生产烧录、固件升级、救砖(当Flash被锁或程序损坏时)

  • 电路:BOOT0上拉、BOOT1下拉,通常设计为按键或跳线帽选择

3. SRAM启动(BOOT0=1, BOOT1=1)

  • 调试模式:将程序下载到SRAM直接运行,不写入Flash

  • 优势:快速调试,避免频繁擦写Flash

  • 限制:掉电后程序丢失,且SRAM容量较小

BOOT0下拉一个电阻,如果是还有BOOT1的话,BOOT1不用接东西,只用管BOOT0,而且现在BOOT1一般都用软件设置了。

  • 晶振:
  • 有源晶振:

用不到,价格贵。

  • 无源晶振:

里面就一个石英晶体,他自己振不起来,外部需要接一个起振电路才能让它振起来。单片机里已经集成了这个起振电路。用无源晶振的话,这两个引脚都要接上。

区分有/无源晶振:晶振上是否连电,有源晶振会有一个VCC引脚让你连3.3V。

这两个电容是阻抗匹配的负载电容,用20pf,记住就行。

  •  接线端子:

理论上啥都能接,买个电池盒焊线放电池就行,这玩意其实就俩孔,焊啥都行。

  • NRST:

NRST 是的复位引脚(Reset Pin),低电平有效。

项目说明
逻辑电平低电平复位(0 = 复位,1 = 运行)
内部结构通常内部有弱上拉电阻(20kΩ~50kΩ)
功能强制芯片回到初始状态,重新启动程序

 NRST:

  • 这是STM32芯片的复位引脚(Reset Pin)。

  • 当这个引脚被拉低(GND)时,STM32会复位,即重新启动。

  • 正常工作时应保持高电平(3.3V)。

 R2:10kΩ 电阻

  • 这是一个上拉电阻

  • 作用是将NRST引脚默认拉高到3.3V,防止芯片误复位。

  • 如果没有这个电阻,NRST引脚可能会悬空,容易受到干扰导致不稳定。

C1:100nF 电容

  • 这是一个滤波电容,连接在NRST和GND之间。

  • 作用是滤除复位引脚上的高频干扰,防止误触发复位。

  • 同时,它也能在上电瞬间提供一个短暂的低电平,实现上电自动复位功能

复位脉宽——低电平必须保持的最短时间,靠 RC 充电曲线或按键按下时间保证。


  • 上电瞬间:(RESET在全过程保持松开)

上电瞬间,C1会短暂拉低NRST,实现自动复位,确保芯片从一个确定状态启动

1. 上电之前

  • 3V3 电源 = 0 V

  • 电容 C1 两端电压 = 0 V

  • NRST 引脚通过 R2 也接到 0 V,所以 NRST = 0 V

2. 电源突然上电(从 0 V 跳到 3.3 V)

  • 电容电压不能瞬间变化
    在 t=0+ 那一刻,C1 右端(NRST 节点)仍比左端低 0 V,于是 NRST 被强行拖在 0 V

3. 接下来:RC 充电

  • R2(10 kΩ)与 C1(100 nF)组成一阶低通

  • 时间常数 τ=R⋅C=10 kΩ×100 nF=1 ms

  • NRST 电压按指数曲线从 0 V 往 3.3 V 爬升

    VNRST​(t)=3.3 V×(1−e−t/τ)

4. 复位阈值

  • STM32 数据手册规定:
    – 低于 0.8 V 保证处于复位;
    – 高于 2 V 保证退出复位。

  • 上面曲线算一下,约 0.3 ms 就能越过 0.8 V约 0.9 ms 越过 2 V
    ⇒ 也就是说 NRST 低电平持续时间 ≈ 0.9 ms,远大于芯片要求的 300~500 µs 复位脉宽
    MCU 一定会在内部完成一次完整复位

也就是说复位不是绝对0V时候复位,而是在0.8V--2V区间范围内(STM32 的 NRST 引脚是施密特触发器结构)

5. 充电完成

  • 当 t≫τ 后,C1 两端电压 ≈ 3.3 V,充电电流 → 0

  • NRST 被 R2 牢牢拉到 3.3 V,系统进入正常运行状态

  • 此后 C1 的职责转为“滤波”——对付后面可能出现的尖峰或跌落

一句话总结

“上电瞬间电容把 NRST 钉在 0 V,随后靠 RC 充电让它缓慢升到 3.3 V,这段‘被迫低电平’时间就是自动产生的复位脉宽,确保 MCU 每次都从确定的复位状态开始跑代码。”

  • 工作状态:

上拉电阻,将NRST引脚默认拉高到3.3V,保证不会触发NRST(复位)。RESET按键松开,电容已充电到稳定状态。

  • 电容充满电(稳态)无电流——完全正常,电容在直流下就是开路;它的滤波作用体现在电压瞬变时的“瞬间充/放电”,而不是持续传导。

  • 正常工作状态下C1已充电到3V3,不再有明显电流流动,此时NRST保持在3.3V。如果电流流动时候,电容会充电/放电使得NRST保持在3.3V。

  • 手动复位:

按下按键把NRST直接短到GND,电容瞬间放电;松开后重新经历一次1ms左右的充电过程,再次给出复位脉宽。

1️⃣ 按下按键 → 电容“瞬间”短路

  • 按键导通,NRST脚被硬拉到GND 0 V

  • 电容C1两端原来是3.3 V,现在右端(NRST)=0 V,左端仍3.3 V → 电容立即反向放电

  • 放电电流路径:3V3 → R2 → 按键 → GND;峰值电流 ≈ 3.3 V / 10 kΩ = 0.33 mA,持续不到1 µs 就能把100 nF上的电荷放光。

  • 结果:NRST在<1 µs内跌到0 V,STM32复位阈值<0.8 V,芯片立刻进入复位状态**。

2️⃣ 保持按下 → NRST被钉在0 V

  • 按键仍然闭合,电容两端电压≈0 V,无电流流动。

  • NRST=0 V,复位持续;只要按键不松,CPU就“一直按住不动”。

3️⃣ 松手瞬间 → RC充电曲线开始

  • 按键断开,R2与C1形成经典一阶RC电路

  • 3V3通过R2给C1充电,NRST电压按指数上升:

    VNRST​(t)=3.3 V⋅(1−e−t/τ),τ=R2​C1​=10 kΩ⋅100 nF=1 ms

总结

按下→电容瞬间放光,NRST=0 V,芯片立刻复位;
松手→R2给C1充电1 ms,NRST沿指数曲线爬回3.3 V,爬到0.8 V以上时复位结束,爬到2 V以上时CPU正式开始运行。这就是手动复位**“低电平脉宽”与“恢复上升沿”**的全部物理过程。

电容两端电压可以不相等,只是不能突变。
  • UART和SW(NRST):

既是有线串口(USB转TTL用)又是下载器,不用插那个下载器就可以下载程序(DAP下载器),可以直接用来传输数据到vofa调试程序。这个就是zhu飞下载器的那个标准的接口,没用ST link。

  • SHT-40:

  • SDA和SCL连上,见到IIC就加上中间这两电阻并且硬件加上上拉电阻。

(因为IIC是开漏输出,开漏输出必须加上拉电阻)

其实软件也能在设置时候加上GPIO上拉电阻,但是那个上拉太弱,走线一长就容易通讯出问题,所以一般硬件加个上拉电阻。

  • VDD是正极,就接个电.
  • EP:大焊盘,散热用的,没有电器属性。此处为了减少引脚,把EP和GND接在一起了,所以这个EP必须接GND。

5.电源
  • 24V -> 降压型(DCDC_Buck) 5V ->低压差线性稳压器(LDO ) 3.3V:

LDO缺点:发热

BUCK缺点:DCDC升压,输出纹波太大,不能给单片机供电。

  • 3V(两节干电池)---> 5V ---> 3.3V :

电压不够所以先升压,所以让它升高点留点余量不至于让输入大于输出电压。

BOOST:只能升压。

SX1308:VCC:外部对芯片输入电压,此处为3V(两节干电池)。

QA:

  • L1为什么选4.7uH?        手册里有L1取值范围。(DCDC这个电容电感值都有计算公式--斩波电路是有公式的,DCDC开关频率是2.5MHz差不多,所以电感就是3-7uH差不多)
  • 电容:常用组合(一大一小)
  • 二极管:常用。


AMS1117:

此处选用固定输出电压版本:2,4引脚内部都是连在一起,此处都连接3.3V.

6.MOS管电路作用:

MOS管四大核心用途

1️⃣ 电子开关:无触点高速通断电流 → 电源管理、LED驱动、负载切换

2️⃣ 信号放大:小电压控制大电流 → 音频功放、射频放大

3️⃣ 电机驱动:H桥电路驱动正反转 → 机器人、无人机电机控制

4️⃣ 电池保护:防过充/过放/短路 → 锂电池保护板核心元件

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值