声明:绘制原理图和PCB的软件为嘉立创EDA。根据B站尚硅谷嵌入式之原理图&PCB设计教程学习所作个人用笔记。
目录
一、原理图详解
51核心板原理图
1、TypeC接口
(1)TypeC接口介绍
TypeC接口引脚分布
TypeC接口上下两排引脚功能都是关于中心点对称的,因此TypeC接口正插还是反插,都不影响引脚的接触顺序,所以大大简化了使用过程。
A1,A12,B1,B12:接地;
A2,A3,A10,A11,B2,B3,B10,B11:分别是两个差分信号对,它们是为了高速数据传输所准备的,这个项目不需要高速数据传输,了解即可;
A4,A9,B4,B9:VBUS相当于电源正极;
A5,B5:两个CC引脚,是在TypeC协议中用来协商充电协议的,还可以协商设备身份(判断主从设备,靠CC引脚上的电阻来判断);
A6,A7,B6,B7:USB2.0数据传输;
A8,B8:用来传输视频或者音频信号,有些扩展屏幕就是TypeC一线通,一根线就可以完成充电、控制和视频传输,否则有些扩展屏幕就得单独接视频线,单独接电源线。
实物照片
由于有些引进在实际项目中不需要用到,而且两排引脚不方便焊接,因此实际项目中我们采用16Pin引脚的TypeC接口。
这里把GND和VBUS都焊在一起了,因此从外面数只有12个引脚,但是还是按实际内部16引脚来称呼。具体实物也只有一排引脚,更方便实物焊接了。
(2)TypeC原理图
具体元器件的参数和型号,可以通过查看数据手册,和之前介绍的引脚相对应,即可拿来使用。
引脚1,12:直接接地;
引脚2,11:连接到电源总线上VIN_5V上,中间的F1是一个自恢复保险丝,电容C2和C5一端接地,另一端接电源VIN_5V,这样是为了让电源电压更加平稳,它们有过滤杂波(滤波)的作用。
引脚3,9:SBU1-2用来传输视频或者音频信号,这里用不到,加上非连接标识。
引脚4,10:CC1和CC2连接5.1kΩ的厚膜贴片电阻后,接地。
引脚5,6,7,8:接到网络标签USB_D+和USB_D-上,这样其他模块就可以通过同名网络标签直接连接到这里。
外壳引脚13,14:也接地,为了防止手上的静电影响USB的数据传输,损坏后面的元件;
自恢复保险丝的工作原理
传统保险丝经过熔断后,就需要更换保险丝,但是自恢复保险丝是由聚合物和导电颗粒组成,当产生高温时,聚合物会膨胀,导致导电颗粒间的距离增加,从而断开了导电路径;当温度降低时,聚合物会收缩,又使得导电颗粒重新接近,重建导电路径。
充电协议:
当一个充电设备(上游设备,如快充头)连接到一个受电设备(下游设备,如手机)时,充电头首先通过CC引脚检测连接的设备类型和方向。
如果检测到下游设备符合规范(例如CC引脚上有5.1k欧姆的电阻值到接地),充电头才会把这个设备识别成需要充电的设备,会默认提供5V的初始电压进行供电。这是所有USB充电协议的基础行为,以确保设备可以安全启动和进行初步通信。
当5V的供电开始一段时间后,如果CC引脚连接的是快充协议的一些其他芯片,这时候才会跟充电头进行快充的协商。
2、5V转3.3V
之所以需要5V转3.3V,是因为在以后的嵌入式开发中,有很多传感器或者芯片的工作电压是3.3V。
这里采用的芯片是低压差线性稳压器(LDO),如果我们选择了一个固定输出为3.3V的LDO,无论输入电压是5V、6V还是8V,它都能稳定输出3.3V。它只能降压,无法升压。
3、单片机电源开关
这个开关是一个自锁开关,用来控制单片机的供电,右边的VCC是给单片机供电的电源网络。
前面的电源模块能提供5V和3.3V的供电,自锁开关又控制着一个新的电源网络VCC,后面会把MCU(单片机芯片)挂在VCC下面,这样就可以通过自锁开关,控制VIN_5V和VCC两个电源之间的导通,来控制单片机的电源。
4、单片机
芯片选型
芯片选用STC公司生产的89C52RC,这个芯片拥有丰富的网络学习资源,适合新手学习单片机。封装类型选择QFP封装,适合在PCB上安装。
批量导出芯片引脚为网络标签步骤
将pinName内容,复制到netname中,然后再用查找替换功能,去掉小数点,再把其他多余的名字去掉,最后将文件保存,再导入到立创EDA即可。
5、排针
排针主要是用来引出单片机引脚,方便接入一些外部设备。
6、晶振电路
中间矩形就是晶振元件,它在特定的电路接法下,可以产生机械振动,然后在它的输出引脚产生一定波动的电压波,如下所示。
现代CPU的运作需要依靠时序波动的电压信号来捕捉上升沿,并在这些上升沿到达时推动芯片内部指令的执行,即每次来临一次上升沿,代码就会继续往下执行一步。
1MHz意味着每秒钟,晶振震动次数为一百万次。
晶振一般分为无源晶振和有源晶振。
无源晶振:必须依赖外部电路的支持才能进行稳定的震动,无源晶振和外部组成的让它可以震动的电路我们称为时钟电路。这里电路设计使用的是无源晶振,因此需要在原理图上再接两个电容。
有源晶振:元件内部自成一个时钟电路,我们只需给它的VCC引脚,GND引脚做相应的连接,就可以从第3个引脚上捕获震荡信号。
7、复位按键
复位按键的作用就是通过单片机的RST引脚,来做一个状态重置(复位)的操作。
单片机的复位引脚(RST)需要一个持续一定时间长度的高电平信号才能识别并执行复位操作。
在上电的瞬间,电容处于充电状态,此时电容相当于一根导线,RST引脚得到高电平。
在上电一段时间后,电容充满,此时电容相当于短路,这个时候RST将得到低电平。
按下开关后,RST引脚相当于直接接到VCC,此时RST引脚将是高电平,这个状态维持几十us,MCU就会清空当前状态,重新回到第一行代码开始执行。
电容的作用:电容在默认情况下是充电状态,当按下开关后,RST会短暂的和VCC直连,但是开关会很快弹起来,这时候的RST就会和VCC断开,为了保证有充足的高电平的维持时间来激活复位状态,就需要开关断开后,仍有一个电容能给RST继续供电。
电阻的作用:防止按下开关后,VCC和GND直连,导致电源短路。
8、MCU供电指示灯
这个指示灯也是VCC供电,和MCU芯片一致,只有当MCU芯片有电时,这个指示灯才会亮。
9、程序下载模块
其中RXD就是接收数据的引脚,TXD是发送数据的引脚。
当给芯片5V供电时,需要给V3引脚接一个电容,然后接地。VCC为3.3V时V3需短接到VCC。
RTS引脚和后面的自动冷启动电路相关。
TypeC接口有两个网络USB_D+和USB_D-,这两个接口主要是电脑通过USB接口用来传输数据的。
USB主要是通过一种差分信号的方式来进行传输数据,但是STC89C52RC这个芯片不支持差分协议,所以需要通过CH340N这个芯片将差分信号转化成STC89C52RC芯片可以支持的TTL信号。这样电脑才可以和芯片传输数据。
同理,芯片也可以通过TTL信号传送数据到CH340N,再转成差分信号的形式将数据发送给电脑。
TTL信号(单端信号):所谓单端信号,指的是只用一根导线来发送信号。这种发送信号的方式非常简便。如果A芯片要给B芯片发送数据,那么它只需要将导线上的电平一会儿置高,一会儿置低就可以了。
单端信号传输方式主要适用于短距离的板上通信,而不宜用于线缆通信。这主要是因为单端信号的抗干扰能力较弱。
例如,如果我们使用一根导线将电脑和单片机连接起来传输数据,而在此过程中如果不小心触碰了这根导线,可能会导致身上的静电释放到导线上。这种静电干扰可能会改变导线上的电平,从而导致接收端接收到错误的数据。
差分信号:为了克服单端信号易受干扰的问题,我们可以采用差分信号传输技术。这种技术涉及将发送端的原始信号转变为两个信号:D+ 和 D-。这两个信号通过两根导线传输,其中D+ 的波形与原始信号几乎相同,而 D- 是 D+ 的反相。这种方式可以显著增强信号的抗干扰能力。
在接收端,信号的还原过程非常直接。系统通过比较 D+ 和 D- 两条线上的电压差来确定原始信号的状态。如果 D+ 的电压高于 D-,则认定为数字信号 "1";相反,如果 D+ 的电压低于 D-,则认定为数字信号 "0"。
我们再将D+和D-两根导线绞在一起,这样它们就组成了双绞线。
在这种情况下,如果外部环境产生静电干扰,两根导线D+和D-会受到几乎相同的影响。这种干扰对两条线的影响是对称的,因此不会改变D+与D-之间的相对电压差。结果是,尽管存在干扰,接收端仍然能够准确地还原出发送端的原始信号。这展示了差分信号传输在保持数据完整性方面的强大能力,即使在高干扰的环境中也能维持信号的准确传输。
通过CH340N芯片的数据手册,能够查找到CH340N芯片连接到单片机的参考电路。通过参考电路,可以大致知道芯片的接法。
由于MCU的引脚RXD和TXD已经备注了P30和P31的网络标签,因此这里需要给这个引脚再弄一个网络标签,使得两个不同名字的网络标签可以连接到同一根引脚上。
在放置中,找到短接标识,然后将这个标识放置到两个引脚上。
然后再短接标识的另一端再延长导线,插入两个新的网络标签,这样就可以实现上面要求。
10、 通信指示灯
二极管右端接电源,左端接数据传输引脚,由于数据传输是一系列的高低电平,所以当RXD或者TXD为低电平时,两个二极管就会发光,当RXD或者TXD为高电平时,两个二极管就会熄灭。
因此可以通过二极管是否快速的闪烁来判断是否正在进行数据传输。
11、P0上拉电阻
在MCU芯片中,以P开头的引脚,都是有输出功能的,也就是芯片内部能够控制引脚是高电平还是低电平,一般分为两种控制方式:推挽输出和开漏输出。
(1)推挽输出
通过控制上下两个MOS管的导通和断开,来使得输出引脚是高电平或低电平,还是高阻态。
推挽输出又叫推拉输出,当引脚为高电平时,电流像是被从芯片中推出来一样;当引脚为低电平时,电流像是被从拉进电流中,因此得名。
(2)开漏输出
开漏输出只控制一个接地的MOS管,当MOS管断开,引脚为高阻态;当MOS管闭合,引脚为低电平。
这个开关在没有芯片干预情况下,默认是开路状态,且电流一定从MOS管的漏极流入的,因此这种控制输出方式就称呼为开漏输出。
之前的电路是无法通过引脚输出高电平的,因此这里增加一个上拉电阻连接到VCC来输出高电平。
当MOS管闭合时,跟之前电路一样,引脚是低电平状态;
当MOS管断开时,外设就会直接通过电阻拉到了VCC,因此外设收到的电平就是高电平。
开漏输出的优点:当芯片是5V供电时,像推挽输出,就只能通过引脚输出5V的高电平,但是开漏输出可以通过上拉电阻连接到一个3.3V的电源,因此开漏输出可以不局限于芯片供电电压。
在数据手册中显示P0引脚都是开漏输出模式的引脚,因此需要上拉电阻连接到高电平,来使得引脚能够输出高电平。
12、自动冷启动
单片机烧录软件过程中,必须要先把单片机断电后,再重新给电源,在开机启动中,单片机的P3.0\RXD引脚会检测是否有别的芯片传输过来的下载命令,只有检测到下载命令才会开始下载程序,如果下载成功,就会直接执行新的代码,如果在开机后没有检测到新的代码,它就会执行上次烧录进单片机的程序。
这种强行断电,再上电的开机方式,就被称为冷启动。如果按照上面的方法,每次都要按下两次开关,一次给单片机断电,一次给单片机上电,就会非常麻烦。
因此通过设计自动冷启动电路去检测CH340N芯片,如果检测到了下载程序的信号,它就会自动完成单片机掉电再上电的过程,这样每次下载程序就不需要按动开关了。
RTS(Request To Send,发送请求)引脚的作用是向其他设备发出“我有数据要发送,请准备接收”的信号,这种操作称为硬件控制流,它的作用是为了让下游接收数据的对象,能够把正在工作的内容停下来,做好接收数据的准备。
当芯片准备好发送数据时,RTS引脚会进入激活状态。如果在RTS旁边有一个#(即RTS#),或者名字上方有一个横杠,这通常表示它是以低电平激活的。
默认情况下RTS是高电平,当有数据要发送时,RTS会变成低电平,当数据发送完成后,RTS又会变回高电平。
当电脑点击下载程序按钮时, 开始跟CH340N芯片进行通讯时,这个RTS引脚就会被拉到低电平,MCU只有在上电时,才会响应CH340N。如果说MCU一直不断电,不重新上电,则RTS引脚会一直是低电平。
自动冷启动电路原理分析:
P沟道MOS管导通条件:源极接VIN_5V,栅极接RTS,剩下的就是漏极。
当RTS为5V时,MOS管的源极和漏极不会导通;
当RTS为0V时,源极和漏极电流就会导通。
(1)当RTS为高电平时,左边MOS管不会导通,右边MOS管会导通,此时灯泡(MCU)处于上电状态,电流如上图所示。
(2)当RTS为0V时,左边MOS管会导通,刚开始电容会处于充电状态,相当于一根导线,这时可以认为右边MOS管的栅极也是5V,因此右边MOS管在此时是截止状态,右边灯泡(MCU)就会被断电。
(3)当RTS为0V,电容充满电后,此时的电容相当于一个断路,后面的10欧姆可忽略,两个10kΩ并联相当于5k欧姆,与47kΩ串联,通过计算可得到右边MOS管的栅极电压为0.4V左右,因此这个MOS管会被导通,此时的灯泡又重新处于上电状态。
(4)当RTS恢复到5V时,右边MOS管仍处于导通状态,灯泡不会受到影响,左边的MOS管会瞬间截止,电容会对并联47kΩ的电阻一直放电,直到放空为止。
这个电路的缺陷在于不能短时间的连续下载程序,不然的话电容电还没有放完,又重新充电的话,右边的MOS管也就不会截止,自动冷启动电路就会失效,因此这个时候就需要电源开关,来手动给MCU断电和上电。
MOS管栅极连接10Ω电阻的作用:
MOS管的栅极具有一定的寄生电容,连接线和MOS管自身也会有一定的寄生电感。如果栅极的连接上没有任何的阻尼,这些寄生的电气效应可能会组成一个LC震荡电路,从而引起振铃现象。
在MOS管的栅极去串联一个电阻,以此来削弱振铃效应。
寄生电容:是电路中非设计意图的电容效应,由导体间电场耦合形成,常见于高频电路,可能导致信号干扰或性能下降。
寄生电感:是指在电路设计中未刻意引入,但由于导体布局或物理特性而自然产生的电感。
也是因为MOS管上的寄生电容,MOS管的栅极在电平拉高或拉低时,会遇到一个平台期,这个现象与米勒效应有关,因此也被称为米勒平台。它导致MOS管从开启转到闭合时的时间间隔延长。
也不能串联太大的电阻,这是因为随着我们串联电阻的阻值的升高,米勒平台会相应地延长。
通常,在栅极上串联10到100Ω的电阻是一种常见做法,这不仅可以有效抑制振铃效应,还能防止过长的米勒平台导致的开关延迟。在实践中,通常可以首选10Ω的电阻。
二、PCB布局
PCB的完整设计之前已经有详细介绍过了完整流程,因此本篇文章只写之前没有出现的一些问题。
1、板框尺寸
3个角小圆弧尺寸
大圆弧尺寸
板框整体尺寸
2、排针布局
排针方位需要跟上图保持一致,同时放置底层。
选中两排针,垂直指定中心间距分布为29mm,同时需要按上面排针中心左右居中。
同时对两个排针进行锁定功能,这样后面拖动其他元器件时,就不会影响这两个排针。
3、 模块布局规划
4、位号丝印调整
选中位号,然后按Ctrl+F,就会出现查找栏,点击查找全部,就能够实现对所有位号的选中。
将字体线宽和高度修改到上图所示,单位为mil,这样就能够让位号变得更小,更方便布局。
5、程序下载模块布局
这是布局完成后的芯片CH340N内部的VIN_5V线,它的背面会有一些蓝色信号线经过它,信号线的电压是会在0V和5V直接来回变化的,就有可能产生一些电磁感应在5V导线上,会让VIN_5V有一个上下波动,所以这个模块的供电尽管之前就用了电容滤波处理,但是这里还是继续得用电容滤波处理。
滤波电容离芯片越近越好,防止线太长,中间被其他信号线得电磁感应影响。
电源线一定要先经过电容,再到达芯片的电源引脚,这样可以让电容滤波效果达到最优。
6、单片机与晶振布局
原则上是两个连接的引脚越近越好,但是这里上面芯片需要流出位置来引出线,因此C12位置需要靠下一些。
所有的GND引脚都是通过一个铜皮来进行连接的,但是晶振下方是最好不要做铺铜处理的,目的是为了防止晶振和GND网络互相干扰。所以需要对晶振区域做一个禁止铺铜的设置。
用多边形工具将晶振区域围住,然后将该区域选择为禁止区域,然后将铺铜勾选上,既可以将晶振区域设置为禁止铺铜区域。
同时,选中图层,然后将属性中的图层改成多层,这样底层也能称为禁止铺铜区域。
三、PCB布线
1、TypeC接口和5V转3.3V模块布线
首先可以将GND的飞线隐藏,防止干扰到其他飞线的布线。
电流最早是从TypeC接口流入的,因此先从TypeC模块开始布线(快捷键Alt+W)。
从原理图可知,所有的电流都将从Type模块流向F1自恢复保险丝和它所在的这段导线,因此需要充分考虑这段导线的线宽和最大能承载的电流。
F1自恢复保险丝跳闸电流为1A,通过PCB走线载流计算器可以计算得到线宽最好要大于11.83mil,又因为要流出冗余,因此这段导线的线宽设置为20mil。
电源线一般都是先经过大电容滤波,再经过小电容滤波,先过滤低频噪音,再过滤高频噪音。
Type接口为了实现能正反插,有两个电源入口,因此需要将另外一个电源入口的导线连接到第一个电源入口处,但是这里明显需要绕弯,因此通过过孔(Alt+V)方式来连接。
同样的,过孔也需要考虑最大承载电流,通过PCB过孔载流计算器,可计算得到12mil孔径、18um厚度的孔壁铜厚,在10摄氏度下能承载的最大电流为1.462A,但是为了给实际施工有更大的冗余,通过经验判断,这里的孔径(过孔内径)可设置为20mil。
但是内孔径和外孔径的差值需要大于5mil,因此这里设置外孔径为30mil。
2、差分信号的布线
差分信号的布线与平时的导线布线有所不同。
两条差分导线的长短误差需要在合理的范围内。
如果布线完成后,上图提示没有显示符合规则的绿色,需要通过等长调节去调节它们之间的长度误差。
3、VIN_5V到VCC的布线
电源模块通过Type接口引入VIN_5V供电,通过自动冷启动电路变成VCC_SW,然后再通过电源开关变成VCC,最后的VCC才是给MCU供电的电源。
4、P1口的布线
P1口的飞线这里已经完全拧在了一起,所以需要先把线拧回来,再把导线接过去。
如上图所示,可以通过过孔和绕线的方式,将它们的排序给拧回来。
其他飞线难处理的,可以通过两个过孔穿过其他线来布线,这里就不多加说明了。布线完如下所示。
5、制作铜箔LOGO
插入文本,然后放置顶层。
然后复制一个放到边上。将边上这个文字切换到顶层阻焊层。
然后将当前工作图层,也切换到顶层阻焊层,然后将两部分文字重合。
将这部分文字区域设置为禁止铺铜区域,且该区域的圆角半径设置为1mm。
最后将该区域复制一份,将复制后的区域翻面。
将工作区设置为底层,然后将复制后的区域和复制前的区域重合,最后在铺铜以后就能得到文字的铜箔LOGO了。
6、铺铜
当对正反面铺铜完之后,还有GND飞线残留就可以在飞线的源头铺铜上,放置过孔的GND。
当放置了GND的过孔后,飞线就会自然消失。
晶振区域,禁止铺铜的部分,也可以通过在旁边的铜板上加一个GND的过孔,然后将晶振中需要连接GND的部分,连接到过孔上,这样飞线就可以完成了。
7、放置缝合孔
当觉得有些铜皮上的狭窄处难以通过大电流时,就可以在对应的铜皮上添加GND过孔,来增加它的载流能力。
设置完成后,框选整个板子。
板子上就会增加很多GND过孔,来增加铜皮的载流能力,尤其是上下两层铜皮,它们之间的载流能力。
7、检测DRC
完成所有的步骤后,最后记得再检测以下DRC,以防出现问题。
8、遇到的问题
CH340N灌电问题
当闭合自锁开关后,MCU供电指示灯亮,但是断开开关后,供电指示灯还是亮着的,因此通过排查故障,发现问题产生原因是CH340N充上电空闲时,RXD和TXD引脚都维持着5V电压,然后连接到MCU就会给芯片供电,让芯片的VCC引脚产生了3.3V电压。
通过查阅数据手册,可以找到解决问题的电路,将CH340N原理图转化成下图所示。
然后是PCB增加三个元件进去后,需要重新调整。
首先,将之前的顶层和底层的铺铜区隐藏,然后再开始布线。
CH340N的RXD和TXD引脚这里连接都需要删除,重新布线。
布线完成后,记得重新铺铜和DRC检查。
第二版本完成后,将核心板插上开发板后又遇到了第二个问题。
在自锁开关断开后,将核心板子插上开发板上,结果电源灯还是亮了,并且给开发板供电上了。
5V排针是一直有电源的,当MCU某个引脚为低电平时,就可能和5V排针形成下面的电路,导致5V能直接通过这个电路给MCU供电。
解决办法也很简单,只需要将5V排针接到自锁开关控制的VCC,而不是由TypeC接口供电的VIN_5V。同时,3.3V的排针也需要连接到由VCC控制的电源。
原理图的解决办法:只需要将5V转3.3V模块和排针模块的5V电压来源,由VIN_5V改成自锁开关控制的VCC。
PCB重新布线即可,然后需要重新来一遍泪滴,铺铜操作。