STopen硬件设计2-基于STM32F103最小硬件系统设计

本章我们接续上一章<STopen硬件设计1-如何分配STM32F103的IO资源>。
在完成我们需要的功能定义和IO分配后,我们就可以开始最真实的硬件设计之旅了。
本章为最基础篇,旨在引导嵌入式开发小白有一个正确的设计流程和概念,老鸟略过。
在此也不讲解专门的设计软件如何操作和使用,重在设计思维和过程及方法。
万丈高楼平地起,在复杂的系统也是一个一个部分的组建起来的,设计就是一个加法的过程,一步一步的添砖加瓦,完成最终的目标。
在设计PCB之前,我们先要完成原理设计工作,当然在这个过程中,你也得同时考虑使用什么器件,器件的规格,以后的采购和生产是否方便,性价比是否好等等与量产有关的东西(小白暂且忽略,以设计达到功能要求为第一次目标)。
在这里插入图片描述

一个最小系统的设计,参考上图所示,我们只需要完成除绿色部分以外的引脚处理就可以完成我们的最小系统设计,这也是st提供的工具的好处,如果没有就需要根据IC的引脚顺序,抛开普通IO和功能IO,一个引脚一个引脚的进行设计处理。
我们按照以下步骤来进行:

  1. 先确定电源部分
    电源包括供电和参考地,我们根据规格书确定它需要的电压和电流大小,然后选择对应的供电方案。在设计原理图的时候我们先完成IC芯片的电源和地端的连线,并且标识好网络名称,具体供电方案后续再完成。如果有多个电源供电要求的,需要分开供电,比如数字(IO和内核使用),模拟(模拟电路使用,比如比较器,DAC等),参考源(一般ADC部分使用)。复杂的芯片可能还有不同部分要使用不同的供电电压。
    同时根据系统要求,配置好电源的滤波电容,一般原则每一个电源引脚对应一颗电容,容值取0.1-2.2uF,模拟和参考部分可以用10uF和0.1uF并联。
    本系统统一使用3.3V的电源,CPU部分电流<100mA。
  2. 确定时钟
    首先确定需要使用的时钟类型,本例子我们使用外部高速时钟和外部低速时钟。
    内部的高速时钟,用来做精确定时和PWM控制应用精度都不够,如果你的系统只是用来控制一些IO动作,对时间不敏感,那么也可以选择内部RC振荡器,节省成本。本例子高速时钟晶体我们使用常见的8Mhz的晶体,因为usb的时钟需要48Mhz,使用8Mhz经过倍频上去就比较容易,不需要小数倍频的PLL,整数就可以,容易取得最好的时钟精度。
    低速时钟是用来做RTC用的,提供比较精确的时间。为什么用32768hz呢,因为2^15=32768,经过分频后刚好可以得到1s的计时脉冲。所以32768Hz的晶振也叫钟振。
    晶振的匹配电容,根据经验值先选取一个差不多的数值,等你拿到晶体规格书以后再来选择,不影响我现在电路图的设计,当然你也可以一次性把晶体和电容数值确定下来。
  3. 确定复位
    系统上电的时候需要一个外部复位脉冲,根据规格确定需要的时间常数RC,一般我们用电阻电容构成的RC电路就可以达到要求。
  4. 确定boot模式
    对于STM32F系列来说,它都可以选择系统启动的时候的boot模式(也就是从哪里开始运行程序),我们默认从flash启动,所以boot引脚直接接地。
  5. 引出调试接口
    我们需要通过JTAG接口下载程序进行调试,一般使用最简单的SW模式,两根线就可以达到这个目的。
    在这里插入图片描述

如上图,到此为止,我们就完成了一个最小系统的基本设计,然后加上电源,调试输出串口等就可以进行程序运行了。
这就是一个小的不能再小的基本系统了。
然而,它除了可以满足你编译程序,下载程序,运行不与外界交互的代码以外,并没有什么实际用途。一个系统总不能孤芳自赏,不与“人”交互吧?所以我们还需要一步一步的添加其他的模块来完成整体方案的设计,下一章我们开始讲解如何按照预定的计划一步一步的完成系统的17个功能的设计。
原创文章,欢迎转载,请注明来源,未经书面允许,请勿用于商业用途。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值