ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

STM32F103C8T6小系统板原理图详解:从电源、时钟到调试接口

STM32F103C8T6小系统板原理图详解:从电源、时钟到调试接口 1. 拿到一块STM32F103C8T6小系统板先别急着插电脑我见过太多新手快递一到手拆开包装就直奔电脑USB线一插打开Keil就开始点编译下载。结果呢板子上的灯不亮串口没反应然后就开始怀疑人生——是不是买到坏板了是不是芯片是假的是不是我电脑驱动有问题其实问题大概率出在一个最基础的环节你根本没搞清楚这块板子上到底有什么每个引脚是干什么的电从哪来信号往哪走。STM32F103C8T6小系统板也叫最小系统板市面上常见的版本大概长这样一块比大拇指指甲盖大一圈的蓝色PCB中间焊着一颗LQFP48封装的STM32F103C8T6芯片旁边有一个8MHz的贴片晶振一个32.768kHz的圆柱晶振有些版本省掉了一个Micro USB口或者Type-C口一个AMS1117-3.3稳压芯片一个复位按键一个BOOT0跳线帽或者按键还有一颗电源指示灯和一颗用户LED最后就是两排2.54mm间距的排针把芯片的GPIO全部引出来。就这么一块小板子它解决的核心问题是让你用最低的成本、最小的体积把STM32F103C8T6这颗芯片跑起来。你不需要自己画电源电路不需要自己焊晶振不需要自己搞复位电路插上USB就能供电接上调试器就能下载程序。它适合谁适合刚学完C语言、想从51单片机过渡到ARM Cortex-M3的初学者也适合需要快速验证某个外设功能的工程师还适合做课程设计、毕业设计的学生党。但前提是你得先看懂它的原理图。看不懂原理图你就不知道哪个引脚对应哪个功能不知道LED接在哪个GPIO上不知道串口用的是哪两个引脚不知道BOOT0该拉高还是拉低。这一篇我就带着你把STM32F103C8T6小系统板的电路原理图从头到尾拆一遍把每一部分的作用、每一个元件的选型理由、每一个引脚的功能都讲清楚。看完之后你拿到任何一块最小系统板都能自己分析出它的硬件结构。2. 整体电路架构一块最小系统板到底需要什么2.1 最小系统的定义与组成模块所谓“最小系统”指的是让一颗单片机能够正常工作的最简电路组合。对于STM32F103C8T6来说这个最简组合包括五个部分电源电路、时钟电路、复位电路、启动模式配置电路、调试接口电路。少了任何一个芯片要么不工作要么工作不稳定要么没法下载程序。市面上有些板子为了节省成本会把32.768kHz的RTC晶振省掉这没问题因为RTC功能不是必须的。但8MHz的主晶振、复位电路、BOOT配置、SWD调试接口这四个是一个都不能少的。你如果自己画板子也得把这四部分加上。我手头这块板子的原理图整体架构是这样的USB口进来的5V电源先经过一个二极管或者直接进AMS1117-3.3稳压成3.3V给芯片和所有外设供电。8MHz晶振接在OSC_IN和OSC_OUT两个引脚上配合两个20pF左右的负载电容给芯片提供主时钟。复位电路是一个10kΩ上拉电阻加一个100nF电容再并联一个复位按键低电平复位。BOOT0通过一个跳线帽选择接地或者接3.3V决定芯片从Flash启动还是从系统存储器启动。SWD接口引出SWDIO和SWCLK两个信号加上3.3V和GND一共四根线接上ST-Link或者DAPLink就能下载和调试。2.2 为什么选STM32F103C8T6这颗芯片你可能会问为什么市面上这么多最小系统板偏偏STM32F103C8T6的最多原因很简单性价比高、资料多、生态成熟。这颗芯片是ARM Cortex-M3内核主频最高72MHz64KB Flash20KB SRAM48个引脚其中37个是GPIO。放在十年前这个配置算是中端放在今天虽然不算强但对于学习来说绰绰有余。更重要的是它的国产替代型号非常多比如GD32F103C8T6、CH32F103C8T6等等引脚基本兼容价格更低。很多厂家为了降低成本会直接拿国产芯片替换但丝印还是印STM32。你如果买到这种板子用起来基本没区别但个别外设的时序可能会有细微差异这个后面讲调试的时候再细说。从原理图分析的角度STM32F103C8T6的引脚分布是有规律的48个引脚里VDD和VSS占了好几对分布在芯片四周这是为了降低电源阻抗提高抗干扰能力。VDDA和VSSA是模拟电源给ADC和内部模拟电路供电通常通过一个磁珠或者0Ω电阻和数字电源隔开再并联一个1μF和一个100nF的电容滤波。NRST是复位引脚低电平有效。BOOT0和BOOT1决定启动模式但BOOT1和PB2共用引脚所以一般只在需要的时候才配置。2.3 原理图阅读的基本方法看原理图我习惯按“电源流向”和“信号流向”两条线来走。电源流向是从USB口或者外部电源输入开始经过稳压芯片到各个模块的供电引脚。信号流向是从芯片的GPIO出发到各个外设或者接口。具体到这块板子你先找到USB口看它的VBUS和GND接到哪里。然后找到AMS1117-3.3看它的输入输出电容是多少输出接到哪些地方。接着找到芯片的VDD引脚看它们是怎么连到3.3V的有没有加去耦电容。再找到晶振电路看负载电容的容值。最后找到排针看每个引脚对应芯片的哪个GPIO。这个过程看起来繁琐但走一遍下来你对整块板子的硬件结构就了如指掌了。以后遇到问题比如“为什么我的串口收不到数据”你就能立刻想到去查串口用的是哪两个引脚有没有被其他外设占用电平是否匹配。3. 电源电路从USB 5V到3.3V的完整路径3.1 USB供电与输入保护大部分STM32F103C8T6小系统板都带一个Micro USB口或者Type-C口用来供电和下载程序。USB口的VBUS引脚提供5V电压GND接地。有些板子会在VBUS和稳压芯片之间串一个肖特基二极管比如SS14作用是防止电源反接。虽然USB口反接的概率很低但加上这个二极管成本也就几分钱能提高可靠性。我手头这块板子用的是Type-C口CC1和CC2各接了一个5.1kΩ的下拉电阻到GND。这是Type-C接口的标准配置用来告诉充电器或者电脑“我是一个需要供电的设备”。如果你自己画板子忘了加这两个电阻有些Type-C线插上去可能没反应因为充电器不知道该怎么供电。USB口旁边通常还会有一个自恢复保险丝比如500mA的串联在VBUS上。作用是当板子短路或者电流过大时自动断开电路保护电脑的USB口不被烧坏。这个元件很小但很关键。我见过有人做实验时不小心把3.3V和GND短接如果没有这个保险丝电脑的USB口可能就废了。3.2 AMS1117-3.3稳压电路详解AMS1117-3.3是一颗线性稳压芯片最大输出电流1A输入电压范围4.75V到15V输出电压固定3.3V。它的封装通常是SOT-223三个引脚输入、输出、地。原理图上输入端接5V输出端接3.3V地接地。关键在电容配置。输入端通常接一个10μF的钽电容或者陶瓷电容作用是滤除输入电压的纹波。输出端接一个22μF的钽电容和一个100nF的陶瓷电容作用是稳定输出电压防止自激振荡。AMS1117有一个特点输出电容的等效串联电阻ESR不能太小否则容易振荡。所以如果你用陶瓷电容替换钽电容可能会遇到输出电压不稳定的问题。我实测过用10μF的陶瓷电容代替22μF的钽电容大部分情况下没问题但个别批次的AMS1117会发热严重。还有一个细节AMS1117的压差大概是1.1V到1.3V。也就是说输入电压至少要比输出电压高1.3V它才能正常稳压。5V输入3.3V输出压差1.7V没问题。但如果你用3.7V的锂电池供电压差只有0.4VAMS1117就稳不住了输出会跟着输入往下掉。这时候你得换低压差的稳压芯片比如XC6206或者RT9013。3.3 电源指示与去耦电容布局板子上通常有一颗电源指示灯一般是红色或者绿色的LED串联一个1kΩ到2kΩ的限流电阻接在3.3V和GND之间。作用是告诉你板子已经上电了。这个LED的电流大概是(3.3V - 2.0V) / 1kΩ 1.3mA亮度足够又不至于太耗电。去耦电容是电源电路里最容易被忽视但最重要的部分。STM32F103C8T6有多个VDD引脚每个VDD引脚旁边都应该放一个100nF的陶瓷电容越近越好。这些电容的作用是滤除高频噪声给芯片提供干净的电源。如果去耦电容离芯片太远或者根本没放芯片可能会随机复位、ADC采样不准、通信出错。我见过一些廉价的最小系统板为了省成本只在整块板子上放了一两个100nF电容这是不够的。你自己画板子的时候每个VDD引脚配一个100nFVDDA再单独配一个1μF加一个100nF这是基本要求。布局的时候电容要尽量靠近引脚走线要短而粗先经过电容再进芯片引脚。4. 时钟电路8MHz主晶振与32.768kHz RTC晶振4.1 8MHz晶振电路与负载电容计算STM32F103C8T6的主时钟源有两个选择内部RC振荡器HSI和外部晶振HSE。内部RC振荡器的精度大概是±1%受温度影响大适合对时钟精度要求不高的场合。外部晶振的精度可以做到±20ppm甚至更高适合串口通信、USB、定时器精确定时等场合。小系统板上通常焊一个8MHz的贴片晶振接在OSC_INPD0和OSC_OUTPD1两个引脚上。晶振两端各接一个负载电容到GND容值一般是20pF。这个容值不是随便选的要根据晶振的负载电容规格来算。公式是这样的CL (C1 * C2) / (C1 C2) Cstray。其中CL是晶振的负载电容C1和C2是两个外接电容Cstray是PCB走线的寄生电容一般是3pF到5pF。假设晶振的负载电容是20pFCstray取4pF那么C1和C2应该选多少代入公式20 (C1 * C2) / (C1 C2) 4所以(C1 * C2) / (C1 C2) 16。如果C1 C2那么C1/2 16C1 32pF。所以两个电容都应该选32pF。但实际市面上很多板子用的是20pF也能起振只是频率可能会有几十ppm的偏差。对于串口通信来说几十ppm的偏差完全可以接受。晶振的选型也有讲究。8MHz是STM32F103的推荐值因为内部PLL可以把它倍频到72MHz。如果你用16MHz的晶振PLL倍频系数就得改代码也要跟着改。所以初学者最好用8MHz跟教程和例程保持一致。4.2 32.768kHz晶振与RTC功能32.768kHz晶振是给RTC实时时钟用的。这个频率是2的15次方经过15次二分频正好得到1Hz方便RTC计数。STM32F103C8T6的RTC功能比较弱只有一个32位的计数器没有日历功能需要软件自己算年月日。但配合后备电池可以在主电源断电后继续走时。小系统板上32.768kHz晶振接在PC14和PC15引脚上。这两个引脚和OSC32_IN、OSC32_OUT复用。如果你不用RTC这两个引脚可以当普通GPIO用但要注意它们只能承受3.3V而且驱动能力较弱。晶振两端同样需要负载电容一般是12.5pF或者6pF具体看晶振规格。有些板子为了省成本不焊这个晶振只留两个焊盘。你如果需要RTC功能可以自己补焊。但要注意PC14和PC15引脚上电默认是作为OSC32功能的如果你要当GPIO用需要先关闭外部低速时钟再配置成普通IO。4.3 时钟配置的软件对应关系硬件上焊了8MHz晶振软件上也要对应配置。STM32的时钟树是这样的HSE8MHz经过PLL倍频到72MHz作为SYSCLK。SYSCLK经过AHB分频器得到HCLK72MHz给内核和总线用。HCLK经过APB1分频器最大36MHz给APB1外设用经过APB2分频器最大72MHz给APB2外设用。在标准库或者HAL库的时钟配置代码里你需要设置PLL的倍频系数。8MHz乘以9等于72MHz所以PLLMUL要设为9。如果你用的是国产替代芯片比如GD32F103它的PLL倍频系数可能略有不同需要查对应的数据手册。我踩过的一个坑有一次用了一块国产替代板子代码是按STM32的时钟配置写的结果串口波特率怎么都不对。后来查了半天发现那颗芯片的HSE起振时间比STM32长标准库里的等待超时时间不够导致时钟没切过去就继续跑了。解决办法是把HSE起振超时时间改大或者直接用内部RC先跑等HSE稳定了再切换。5. 复位电路与启动模式配置5.1 复位电路的工作原理与元件选型STM32F103C8T6的复位引脚是NRST低电平有效。复位电路的作用是上电时给NRST一个短暂的低电平让芯片复位正常工作时保持高电平按下复位按键时拉低NRST手动复位。典型的复位电路是一个10kΩ的上拉电阻接在3.3V和NRST之间一个100nF的电容接在NRST和GND之间再并联一个复位按键。上电瞬间电容两端电压不能突变NRST被拉低芯片复位。随着电容充电NRST电压逐渐升高经过大概1ms左右达到高电平阈值芯片开始工作。这个时间常数是R*C 10kΩ * 100nF 1ms足够芯片完成上电复位。复位按键的作用是手动复位。按下时NRST直接接地电容放电松开时电容重新充电芯片再次复位。按键旁边通常还会并联一个100nF的电容作用是消抖。机械按键按下和松开时会有抖动产生多个脉冲电容可以滤除这些抖动保证复位信号干净。我见过一些板子省掉了复位按键只留了上拉电阻和电容。这样也能工作但调试的时候不方便。比如程序跑飞了你想复位一下只能拔插USB线麻烦。所以复位按键最好留着。5.2 BOOT0与BOOT1启动模式详解STM32F103C8T6的启动模式由BOOT0和BOOT1两个引脚决定。BOOT0是专用引脚BOOT1和PB2复用。启动模式有三种BOOT0BOOT1启动模式用途0X主Flash启动正常运行程序10系统存储器启动串口下载程序11嵌入式SRAM启动调试用很少用小系统板上BOOT0通常通过一个跳线帽或者按键来选择。跳线帽插在左边BOOT0接地芯片从Flash启动插在右边BOOT0接3.3V芯片从系统存储器启动可以用串口下载程序。BOOT1一般直接接地因为系统存储器启动只需要BOOT0为1BOOT1为0。这里有个细节BOOT0引脚内部有下拉电阻但阻值比较大大概几十kΩ。如果你悬空BOOT0它可能会被干扰导致启动模式不确定。所以一定要通过跳线帽或者电阻明确拉高或拉低。我刚开始学的时候不知道BOOT0是干什么的跳线帽随便插结果程序下载不进去。后来查了资料才知道用SWD下载程序时BOOT0必须接地也就是从Flash启动。如果你用串口下载BOOT0要接3.3V下载完再改回接地重新上电才能运行新程序。5.3 启动模式在实操中的注意事项用SWD下载程序BOOT0接地这是最常用的方式。ST-Link或者DAPLink通过SWDIO和SWCLK两个引脚可以直接读写Flash不需要改变BOOT0的状态。下载完程序复位一下就能运行。用串口下载程序BOOT0接3.3VBOOT1接地芯片进入系统存储器启动模式。这时候芯片内部的一段Bootloader程序会运行通过USART1接收数据写入Flash。下载完成后把BOOT0改回接地重新上电芯片从Flash启动运行你刚下载的程序。串口下载的优点是只需要一个USB转TTL模块成本低。缺点是速度慢而且每次下载都要手动切换BOOT0麻烦。所以我建议初学者还是买一个ST-Link或者DAPLink几十块钱支持SWD下载和调试效率高很多。还有一个坑有些板子的BOOT0跳线帽质量不好接触不良导致启动模式时好时坏。你如果遇到程序偶尔能跑偶尔不能跑可以检查一下BOOT0的电平是否稳定。用万用表量一下BOOT0对GND的电压正常应该是0V或者3.3V不能是中间值。6. 调试接口与GPIO排针6.1 SWD调试接口的引脚定义与接线SWD是Serial Wire Debug的缩写是ARM Cortex-M系列芯片常用的调试接口。它只需要两根信号线SWDIO和SWCLK加上电源和地一共四根线。STM32F103C8T6的SWDIO接在PA13SWCLK接在PA14。这两个引脚上电默认就是SWD功能不需要额外配置。小系统板上SWD接口通常引出一个4针的排针顺序是3.3V、SWDIO、SWCLK、GND。有些板子还会引出RESET引脚变成5针。接线的时候ST-Link或者DAPLink的对应引脚要接对。我见过有人把SWDIO和SWCLK接反了结果怎么都连不上芯片。其实接反了不会烧芯片但就是识别不到。你如果遇到“No target connected”的提示先检查接线。ST-Link V2的引脚定义是1脚3.3V2脚SWDIO3脚SWCLK4脚GND5脚RESET。DAPLink的引脚定义可能略有不同买的时候看清楚。接线尽量短最好在10cm以内太长容易受干扰导致连接不稳定。6.2 GPIO排针的布局与功能复用小系统板的两排排针把STM32F103C8T6的所有GPIO都引出来了。通常左边一排是PA口右边一排是PB口中间还有电源和地的排针。每个GPIO都可以配置成输入、输出、复用功能、模拟输入等模式。PA口的功能比较丰富PA0到PA7是ADC通道0到7PA8是定时器1的通道1PA9和PA10是USART1的TX和RXPA11和PA12是USB的DM和DPPA13和PA14是SWDIO和SWCLKPA15是JTDI。PB口也有各种复用功能PB0和PB1是ADC通道8和9PB6和PB7是I2C1的SCL和SDAPB10和PB11是I2C2的SCL和SDAPB12到PB15是SPI2的片选、时钟、MISO、MOSI。你如果要用某个外设先查数据手册的引脚定义表看哪个引脚支持这个功能。然后配置GPIO的复用功能寄存器把引脚切换到对应的外设。注意同一个引脚可能支持多个复用功能但同一时间只能用一个。比如PA9既可以做USART1_TX也可以做TIM1_CH2你用了串口就不能再用定时器。6.3 板载LED与按键的电路分析大部分小系统板上都有一颗用户LED通常接在PC13上。为什么是PC13因为PC13在芯片的角落布线方便而且PC13的驱动能力虽然弱但驱动一个LED足够了。LED的接法有两种一种是阳极接3.3V阴极接PC13输出低电平点亮另一种是阳极接PC13阴极接GND输出高电平点亮。我手头这块板子是第一种PC13输出低电平点亮。PC13的驱动能力有限最大输出电流大概3mA。所以限流电阻不能太小一般用1kΩ到2kΩ。如果用220Ω电流可能超过10mA长期工作会损坏引脚。这一点在你自己画板子的时候要注意。有些板子还有一个用户按键接在PA0上。按键一端接PA0另一端接GNDPA0内部上拉。按下时PA0为低电平松开时为高电平。按键旁边通常并联一个100nF电容消抖。你写代码的时候可以用轮询或者外部中断来检测按键。用外部中断的话PA0对应EXTI0可以配置成下降沿触发。7. 常见问题与排查技巧实录7.1 板子插上电脑没反应怎么办这是最常见的问题。你插上USB线电脑没有任何提示设备管理器里也找不到新设备。排查思路是这样的第一步检查USB线。有些USB线只能充电不能传数据。你换一根线试试最好用手机原装的数据线。第二步检查电脑的USB口。换一个USB口或者换一台电脑。有些台式机前面的USB口供电不足插后面板试试。第三步检查板子上的电源指示灯。如果灯不亮说明5V没进来或者稳压芯片坏了。用万用表量一下USB口的VBUS和GND之间有没有5V。如果没有检查USB座子有没有虚焊。如果有5V但3.3V没有检查AMS1117的输入输出。第四步检查芯片有没有发烫。如果芯片发烫严重可能是短路了赶紧拔掉。用万用表量一下3.3V和GND之间的电阻正常应该是几百欧姆以上。如果接近0欧姆说明有短路可能是焊接问题或者芯片坏了。7.2 程序下载失败的原因分析程序下载失败Keil或者STM32CubeProgrammer提示“No target connected”或者“Flash download failed”。原因可能有以下几种一是SWD接线问题。检查SWDIO、SWCLK、GND、3.3V四根线有没有接对有没有接触不良。用万用表量一下通断。二是BOOT0状态不对。用SWD下载时BOOT0必须接地。如果BOOT0接3.3V芯片从系统存储器启动SWD就连不上了。三是芯片被读保护了。有些板子出厂时设置了读保护防止程序被读取。你需要用STM32CubeProgrammer解除读保护但解除读保护会擦除Flash程序就没了。四是调试器驱动问题。ST-Link需要安装驱动DAPLink通常免驱。你可以在设备管理器里看看有没有识别到调试器。如果识别到了但Keil里选不到可能是Keil的调试器配置不对。五是芯片本身的问题。如果以上都排查了还是不行可能是芯片坏了。换一块板子试试如果新板子能下载说明旧板子的芯片挂了。7.3 串口通信乱码或收不到数据串口通信出问题先检查硬件TX和RX有没有接反STM32的TX要接USB转TTL模块的RXSTM32的RX要接模块的TX。接反了收不到数据但不会烧芯片。然后检查波特率。STM32的串口波特率是由时钟分频得到的如果时钟配置不对波特率就会有偏差。比如你外部晶振是8MHz但代码里按12MHz算波特率就会差50%收到的全是乱码。用示波器或者逻辑分析仪量一下TX引脚上的波形算一下实际波特率。还要检查电平匹配。STM32的串口是3.3V电平如果你接的是5V的USB转TTL模块可能会损坏STM32的RX引脚。最好用3.3V的模块或者加电平转换电路。最后检查代码。USART的初始化代码有没有使能时钟GPIO有没有配置成复用推挽输出TX引脚有没有配置成复用推挽RX引脚有没有配置成浮空输入或者上拉输入这些细节错了串口就不工作。7.4 常见问题速查表现象可能原因排查方法解决方法电源灯不亮USB线坏、USB口坏、稳压芯片坏量VBUS和3.3V电压换线、换口、换稳压芯片芯片发烫短路、芯片坏量3.3V对GND电阻排查短路点、换芯片下载失败SWD接线错、BOOT0不对、读保护检查接线和BOOT0电平重新接线、改BOOT0、解除读保护串口乱码波特率不对、时钟配置错量TX波形算波特率改时钟配置、改波特率LED不亮LED接法不对、GPIO配置错量GPIO电平改代码、检查LED极性按键无反应按键坏、GPIO配置错量按键按下时GPIO电平换按键、改代码8. 从原理图到实操我的调试经验分享8.1 拿到新板子的标准检查流程我拿到一块新的STM32F103C8T6小系统板会按这个流程走一遍先目视检查。看看有没有明显的虚焊、短路、元件缺失。特别是芯片的引脚有没有连锡。USB座子的引脚有没有焊好。然后量电源。不插电用万用表量3.3V和GND之间的电阻正常应该是几百欧姆以上。如果接近0说明有短路不能上电。插上USB量3.3V电压应该是3.3V±0.1V。如果偏低或者偏高检查稳压芯片。接着测晶振。用示波器量OSC_IN引脚应该有8MHz的正弦波峰峰值大概1V左右。如果没有波形检查晶振和负载电容。注意示波器探头的电容会影响晶振起振所以最好用高阻抗探头或者用频率计。然后连调试器。接上ST-Link打开STM32CubeProgrammer看能不能识别到芯片。如果能识别读一下芯片的ID和Flash大小。如果识别不到检查SWD接线和BOOT0。最后下载一个点灯程序。用Keil或者STM32CubeIDE写一个最简单的GPIO输出程序让PC13的LED闪烁。如果灯闪了说明整块板子基本正常。8.2 国产替代芯片的兼容性实测我手头有几块国产替代芯片的板子比如GD32F103C8T6和CH32F103C8T6。实测下来大部分情况下可以直接替换STM32代码不用改。但有几个细节要注意一是HSE起振时间。国产芯片的HSE起振时间可能比STM32长标准库里的等待超时时间可能不够。你需要把HSEStartUp_TimeOut改大或者用HSI先跑等HSE稳定了再切换。二是Flash编程时间。国产芯片的Flash编程速度可能比STM32慢下载程序时如果超时时间太短会提示失败。你可以在Keil的Flash下载配置里把超时时间改大。三是ADC精度。国产芯片的ADC精度可能略差特别是低温或者高温环境下。如果你做精密测量最好用外部ADC。四是USB功能。有些国产替代芯片的USB功能不完整或者需要额外的校准。如果你要用USB最好先确认芯片支持。8.3 自己画最小系统板的注意事项如果你要自己画一块STM32F103C8T6最小系统板有几个地方容易出错一是去耦电容。每个VDD引脚配一个100nFVDDA配一个1μF加一个100nF。电容要靠近引脚走线要短。二是晶振布局。晶振要靠近芯片走线要短负载电容要靠近晶振。晶振下面不要走其他信号线最好铺地隔离。三是复位电路。NRST的上拉电阻和电容要靠近芯片复位按键要放在方便按到的位置。四是BOOT0跳线。BOOT0要引出跳线帽或者按键方便切换启动模式。五是SWD接口。SWDIO和SWCLK要引出排针最好按标准顺序排列方便接线。六是电源指示。加一个电源LED方便判断板子是否上电。七是丝印标注。每个引脚的功能要标清楚特别是电源和地的引脚防止接错。8.4 从最小系统板到实际项目的扩展思路最小系统板只是一个起点。你学会了它的原理图就可以在此基础上扩展出各种项目。比如加一个OLED屏幕做温湿度显示器。OLED用I2C接口接PB6和PB7显示温湿度传感器的数据。加一个继电器模块做智能开关。继电器用GPIO控制通过三极管驱动可以控制220V的电器。加一个电机驱动模块做小车。电机驱动用L298N或者TB6612接PWM引脚控制电机转速和方向。加一个无线模块做远程控制。比如LoRa模块或者蓝牙模块接串口实现远程数据传输。加一个SD卡模块做数据记录仪。SD卡用SPI接口接PB12到PB15把传感器数据存成表格文件。这些扩展项目的核心都是基于最小系统板的GPIO、串口、I2C、SPI等外设。你把最小系统板的原理图吃透了这些扩展就是搭积木。我个人在实际操作中的体会是STM32F103C8T6小系统板虽然简单但它是你进入嵌入式世界的一把钥匙。你把它的原理图分析清楚了以后遇到任何一款单片机都能用同样的方法去分析它的硬件结构。电源、时钟、复位、启动模式、调试接口这五部分是所有单片机系统的共性。掌握了这个框架你就能举一反三快速上手新的芯片和新的项目。
返回列表