设计一款兼容ST207和GD207的开发板
在MCU的学习中,大部分人都是学习别人的开发板,例如正点原子、野火等,优点是有可靠的教程和代码,缺点是容易让人有种自己全部都学会的了错觉,听了课程编写了代码,运行正常。
这个时候,可以尝试自已做一块属于自己的开发板,尽管它的电气特性可能没有那么好,没有达到商用的标准,但这个过程中会踩到很多坑,这样对驱动的理解才会更进一步。MCU的开发板基本都是双层版,不要去仿制正点原子或野火的板子,最好自己设计,参考官方文档资料,建议提高一下动手能力,也提高了自己的软件开发水平。
本人大学期间做的东西基本都是在学长的基础上修改的。毕业了,公司产品从ST32转向国产GD32,发现自己在一些方面学习的很模糊,没有学习到精髓。所以设计一款兼容STM32F207和GD32F207的开发板,用来重温学习。
01、电源
下图来自STM32F207的datasheet。
①表示Vcap1和Vcap2接了2.2uf的电容接地,每个接1个电容;
②表示VDD1到VDD15接上VDD电源,再接电容,接地。Vss接地。PCB布局,尽量把电容离管脚近;
③表示可能有15个VDD,同理Vcap1和Vcap2只有两个方块,说明有两个电源引脚;
④表示VDDA连接VDDA,VDDA和VSSA,那么就是他们给ADC等模块供电,没有的话,就是VDD和VSS供电。其中Vref+和Vref-是ADC模块基准电压,可以直接连VDDA和VSSA;
⑤必须其中有一个VDD连接上4.7uf电容,(注意:STM32F10系列必须是VDD_3连接4.7uf电容);
⑥表示Vref+可以连接其他的基准电压,但是要连接10nf电容+1uf电容,其实就是并联。
注释:
10nf+1uf 就是并联电容
100nf = 104 10nf = 103 1uf=105
02、boot
下图见:STM32F207用户参考手册,编号RM0033
boot0可以不下拉电阻的,片内有下拉电阻,实际项目中,还是需要下拉电阻,保证在复杂电磁环境下从Flash启动;
采用跳电阻的形式选择,实际项目,只需要BOOT0就好,学习的板子,两个都设计吧。

STM32F207官方评估板电路:
03、复位电路
下图见datasheet
上图看出,官方建议下拉0.1uF电容,再接复位按键,当管脚是低电平的时候复位,官方评估板电路采用电阻降压,注释donot fit,
04、晶振
采用3225封装的无源贴片晶振。
晶振资料
Load Capacitance:负载电容
个人一般配18PF电容
下图是ST的评估板原理图
其中,低速时钟为了片内RTC
05、JTAG
根据ST的评估板,JTAG有上下拉电阻,实际应用中,使用SWD接口,只需要VCC,TMS,TCK,GND四根信号线,没有上下电阻也没有影响。
06、兼容设计
1、复位采用max809
2、无论是否使用模拟部分和AD部分,MCU外围出去VCC和GND,VDDA、VSSA、Vref(如果封装有该引脚)都必需要连接,不可悬空
3、兼容GD207和ST207,原理图上做一下图示四种处理
差异区别:
07、外设资源
设计兼容STM32F207和GD32F207的开发板,其他外设资源电路直接参看原理图。
板载资源有:
USB串口
网口(RTL8201)
两颗LED
RTC
NorFlash
电源(5V转3.3V)
TF卡
触摸按键
4个独立按键
8位并口LCD
USB
ESP8266的WIFI模块
ESP8266的USB下载口
原理图和PCB源文件可使用下面链接进行下载:
https://github.com/strongercjd/STM32F207VCT6

设计缺陷
四个角忘记放置定位孔
BOOT0和BOOT1的丝印错写为GND
很水的原理图和layout
没有纽扣电池供电给RTC
点击查看本文所在的专辑,STM32F207教程
免责声明:上述设计仅供学习参考使用,在普通室温环境下使用没问题,对于参考电路造成商业产品或工业产品故障,本人概不负责。
设计一款兼容ST207和GD207的开发板的更多相关文章
- 如何为编程爱好者设计一款好玩的智能硬件(三)——该选什么样的MCU呢?
一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计硬件积木的! ...
- 如何为编程爱好者设计一款好玩的智能硬件(十)——无线2.4G通信模块研究·一篇说完
六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(九)——LCD1602点阵字符型液晶显示模块驱动封装(下)
六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(八)——LCD1602点阵字符型液晶显示模块驱动封装(中)
六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(七)——LCD1602点阵字符型液晶显示模块驱动封装(上)
当前进展: 一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计 ...
- 一款兼容IE6并带有多图横向滚动的jquery特效
一款兼容IE6并带有多图横向滚动的jquery特效,自动切换多个图片的jquery特效效果, 为大家分享这个的原因是,这款特效在兼容IE6上面很完美,实用性就广很多了. 适用浏览器:IE6.IE7.I ...
- jQuery编写的一款兼容IE6的图片轮播幻灯片
jQuery编写的一款兼容IE6的图片轮播幻灯片,很不错的一款jquery特效.大家可以下载下来研究研究. 每隔几秒就自动切换一波图片,此效果兼容性还做的不错,适合居多的浏览器. 适用浏览器:IE6. ...
- 如何设计一款优秀的短视频 SDK
2017 年,短视频成为了创业的新风口,各种短视频 App 如雨后春笋般先后上线,视频越来越像文字.图片一样,成为每一个 App 不可或缺的一部分. 1. 包体一定要尽可能小 如何做到尽可能的减小 S ...
- .Net架构篇:思考如何设计一款实用的分布式监控系统?
前言 无论从最早期的unix操作系统,还是曾经大行其道的单体式应用,还是现在日益流行的微服务架构,始终都离不开监控的身影.如windows的任务管理器,linux的top命令,都可以看作是监控的面板. ...
随机推荐
- 圆周率PI
import math import time scale=30 s,m,=1,2 total,s,n,t=0.0,1,1.0,1.0 print("执行开始".center(sc ...
- DRF框架笔记
序列化器类的定义格式? 继承serializers.Serializer:字段 = serializers.字段类型(选项参数) 序列化器类的基本使用? 序列化器类(instance=None, da ...
- UML—20—001
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...
- 第一天——编程语言与python
------------恢复内容开始------------ what's the python? python是一门编程语言,编程语言就是人用来和计算机沟通的语言,语言就是人与人,人与事物进行沟通的 ...
- kubernetes环境搭建 -k8s笔记(一)
一.环境准备 1.硬件及版本信息: cpu&内存:2核心,2G 网络: 每台vm主机2块网卡,一块NAT用于上网,别一块配置成 "仅主机模式",网段为192.168.100 ...
- js深克隆与浅克隆
定义: 浅克隆: 克隆对象的一层属性, 如果对象还有对象的话,里面的对象没有进行克隆,只是把地址给了别人.也可以理解为只是简单的克隆了躯体,但是没有得到其灵魂: 深克隆:克隆对象的多层属性,对象里面还 ...
- C# Wpf Shape类继承关系
Path派生于Shape namespace System.Windows.Shapes { public sealed class Path : Shape { // Path 派生于Shape } ...
- GitLab CI构建SpringBoot-2.3应用
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- day114:MoFang:基于支付宝沙箱测试环境完成创建充值订单接口&服务端处理支付结果的同步通知和异步通知
目录 1.基于支付宝提供的沙箱测试环境开发支付接口 1.后端提供创建充值订单接口 2.前端调用AlipayPlus发起支付 3.注意:自定义APPLoader完成接下来的开发 4.下载支付宝沙箱钱包A ...
- cannot be converted to List<List<Integer>>
错误写法: List<List<Integer>> resList = new ArrayList<ArrayList<Integer>>(); 正 ...