3、主控芯片选型:STM32F103最小系统、晶振电路、复位电路、电源需求

好了,咱们开始聊体温计的核心——主控芯片。说实话,做体温计这种小玩意儿,芯片选型其实没那么玄乎。我个人习惯是,能选成熟的就别追新。STM32F103,这颗芯片在业内摸爬滚打了十几年,稳定性没得说。你想想看,体温计要是测到一半死机了,那可就尴尬了。

3.1 为什么选STM32F103?

我最早做体温计项目时,也试过用一些低成本的国产MCU。结果呢?ADC采样抖动大,温度数据跳来跳去,根本没法用。后来换回STM32F103,问题一下就解决了。说白了,这颗芯片的12位ADC精度足够,主频72MHz处理温度算法也绰绰有余。

它的优势很明显:

  • 性能够用:Cortex-M3内核,72MHz主频,处理NTC热敏电阻的查表算法毫无压力
  • 外设丰富:自带2个12位ADC、多个定时器、I2C/SPI接口,接个OLED屏幕或者蓝牙模块都很方便
  • 生态成熟:库函数、例程、开发板遍地都是,遇到问题网上一搜就有答案
  • 成本可控:虽然比几毛钱的8位机贵,但考虑到开发周期和稳定性,这笔钱花得值

重要提醒:体温计属于医疗电子设备,虽然不要求像心脏起搏器那么高的可靠性,但至少得保证连续工作24小时不跑飞。STM32F103的工业级温度范围是-40°C到85°C,完全覆盖体温计的使用场景。

3.2 最小系统搭建

所谓最小系统,就是让芯片能跑起来的最基本电路。嗯,这里要注意,很多新手容易在这上面翻车。我见过有人把VDD和VSS接反了,一上电芯片直接冒烟——那味道,至今难忘。

STM32F103的最小系统包含以下几个部分:

3.2.1 电源电路

芯片需要3.3V供电。体温计通常用纽扣电池或者锂电池,所以需要一个LDO稳压器。我个人习惯用AMS1117-3.3,便宜又好买。

// 电源电路连接示意
// 输入:电池电压(3.7V~4.2V)
// 输出:3.3V
// LDO:AMS1117-3.3

VIN ---|IN   OUT|--- 3.3V
       |AMS1117|
GND ---|GND   ADJ|--- GND
       |       |
      10uF    10uF
      陶瓷电容 陶瓷电容

我的经验:输入输出电容一定要靠近LDO的引脚放置,走线越短越好。我曾经因为电容放远了,导致输出纹波高达100mV,ADC采样数据跳得跟心电图似的。

3.2.2 晶振电路

STM32F103有两个时钟源:内部RC振荡器和外部晶振。内部RC精度不够,做体温计这种需要精确时序的场合,必须用外部晶振。

我建议用8MHz无源晶振,配合两个20pF的负载电容。为什么是8MHz?因为芯片内部PLL可以倍频到72MHz,正好是最高主频。

// 晶振电路连接
// 晶振:8MHz,负载电容20pF
// 注意:电容要选NP0/C0G材质,温度稳定性好

      OSC_IN
        |
       [晶振]
        |
      OSC_OUT
        |
       [20pF]---GND
        |
       [20pF]---GND

避坑指南:我曾经遇到过晶振不起振的问题,查了半天发现是负载电容焊错了,用了X7R材质的电容。X7R在温度变化时容值会漂移,导致晶振频率不准。记住,晶振的负载电容一定要用NP0/C0G材质。

3.2.3 复位电路

复位电路其实很简单,一个10kΩ上拉电阻加一个100nF去耦电容就够了。但这里有个坑——STM32F103的复位引脚是低电平有效,所以上拉电阻要接到3.3V。

// 复位电路
// NRST引脚:低电平复位

3.3V ---[10kΩ]--- NRST
                  |
                 [100nF]
                  |
                 GND

你可能会问:要不要加复位芯片?我的答案是:体温计这种低速设备,完全没必要。一个RC复位电路足够可靠了。我做了几十个项目,从来没在复位电路上出过问题。

3.3 电源需求分析

体温计的功耗是个关键指标。你想啊,用户可能把体温计放在抽屉里半年,拿出来还得有电。所以电源设计要精打细算。

工作模式 电流消耗 说明
运行模式(72MHz) 约50mA 测量和显示时
睡眠模式 约10mA 待机状态
停机模式 约2μA 深度休眠

看到这个表格你就明白了:体温计大部分时间应该处于停机模式,只有按下测量键时才唤醒。我习惯用RTC定时唤醒,每秒钟检查一次是否有按键按下,这样功耗可以控制在微安级别。

核心要点:STM32F103的停机模式电流只有2μA,配合一颗200mAh的纽扣电池,理论上可以待机10年以上。当然,实际使用中要考虑电池自放电,但用个三五年完全没问题。

3.4 PCB布局要点

嗯,这部分是我最想说的。很多工程师画原理图时很认真,一到PCB布局就开始放飞自我。我见过最离谱的,把晶振放在板子边缘,旁边还跑了一根大电流的电源线——结果晶振频率被干扰得乱七八糟。

关于STM32F103最小系统的PCB布局,我总结了几个原则:

  1. 晶振要靠近芯片:OSC_IN和OSC_OUT的走线越短越好,最好不超过10mm。晶振下面不要走其他信号线。
  2. 去耦电容要就近放置:每个VDD引脚旁边放一个100nF电容,走线要先经过电容再到芯片引脚。
  3. 模拟地和数字地要分开:虽然STM32F103内部已经做了隔离,但外部最好还是用0Ω电阻或磁珠连接模拟地和数字地。
  4. 复位引脚要加保护:NRST引脚容易受到干扰,可以在靠近引脚的地方加一个100nF电容到地。

我的小技巧:画PCB时,先把晶振、复位电路、去耦电容这些敏感元件摆好,再画其他走线。就像盖房子先打地基一样,基础打好了,后面怎么折腾都不怕。

好了,关于主控芯片选型就聊这么多。下一章咱们聊聊体温传感器的选型和接口设计,那才是真正决定测量精度的关键环节。