接口部分
一、TTL 转 USB 驱动电路设计
方案很多,本设计采用的芯片是 CH340E 。
该芯片内部已经集成了振荡器,不需要外部增加晶振。如果其他型号的芯片内部没有振荡器,则外面需要加一个晶振。
再看这篇笔记的时候,你可能有点懵圈,为什么很多资料说的都是 USB 转 串口,包括 CH340 数据手册,截图如下:
我想说的,什么口转什么口,看你从什么角度看这个问题。
- 数据手册里说的是USB 转 串口,在在 MCU 的角度,连接 USB 接口,并将 USB 的接口转换成了其他接口出去。
- 站在外部设备的角度,就是其他的接口转换成了 USB 接口输入到 MCU 内部。这里的标题保留了老师上课的原标题,方便后续对课程的复习。
1.1原理图
可以通过该电路
- 芯片死锁时,可以通过该接口烧录程序进行恢复
- 打印程序运行状态信息
二、RS-485 接口设计
2.1原理图
- RS-485 为准双工通信,DE_nRE 用于切换接收还是发送的方向。
- 开始工作时,有瞬间电流,需要电容来蓄能。
- AB口就是 RS-485 的总线。
- TVS管
起到一个保护的作用,样机可以不用焊接。如果是产品就要考虑到恶劣的环境,需要加上这些保护,甚至是更高级的保护。 - 阻抗匹配电阻(下面专门开了特别栏目讲解)
在调试的时候,传输距离很短不需要匹配电阻。
但是在实际应用中,如通讯距离几百几千米,就需要匹配电阻来获得能量达到最佳的传输性能。 - RS485 空闲时为高电平,开始传输数据时拉低电平。R25,R27让总线空闲时处于高电平,避免RXD端出现 0x00乱码。
三、特别栏目-阻抗匹配
3.1引入实验
3.1.1产生信号
用信号发生器产生宽度大概是 50ns 的脉冲信号
3.1.2反射信号
实验:使用一个三通的接头,不仅仅输入到了示波器,同时在后面接一段 10 米长的同轴电缆,同轴电缆的另一端是悬空的,什么也没接,理论上说一段断头的导线应该是不会对信号产生什么影响的。
现象:但是在示波器上显示,在原来这个脉冲的右边出现了一个几乎一模一样的脉冲,如上图。
原因:
- 可以把这个脉冲信号类比为声音信号,原本在空气中好好的传播,结果遇到了一堵墙,传不过去了,所以也就被反射了回来。
- 那这个电信号也是一样的,原本它在电缆中传播,结果到这边到头了传不过去了,所以就只能反射回来,再一次被示波器捕捉到了。那显然我们可以认为这个反射波的存在让原本的信号严重失真了。
- 这个实验中的脉冲宽度是 50 个纳秒,换算出来等效为一个 20 兆比特率的信号,是一个比较低频的信号了,所以用了一根 10 米的走线去观察它的反射。
那对于那些几百兆、几个 g 的高速信号来说,根本不需要 10 米的走线,只需要厘米级别的走线就有可能受到反射波的影响了。
3.1.3消除反射信号
- 那在刚才的实验中,同轴电缆的边上是断开的,可以看成是对地接了一个无穷大的电阻
- 把这个无穷大的电阻分别换成了50K、5K、 500 欧姆、 50 欧姆的电阻,再去测量波形
- 得到了下面几张图,可以看到电阻为50K、5K、 500 欧姆时,它的反射波形还是存在的
- 但是会随着电阻的减小而变小。到了 50 欧姆的时候,这个反射就突然消失了。
3.2进入正题-阻抗匹配
3.2.1标准的通信模型
上图是一个标准的通信模型,有信号源、传输线以及接收端。不管是USB、UART 还是PCIE、DDR,都是这样子的,信号从信号源出发,经过传输线进入到接收端。
3.2.2阻抗与信号反射
不管是信号源、传输线还是接收端,它内部都有一些寄生的电阻、电容以及电感,他们都会对高速信号的传输产生阻碍的作用,也就是所谓的阻抗。
那当信号在这三个部分中传输时,如果相邻部分的阻抗不一致,信号就会在接触点发生反射。
这个其实有点像是在光在不同介质中传播一样,当介质的折射率发生改变时,光就会在分界面上产生一部分的反射,折射率差的越多,反射也就越强烈。
3.2.3阻抗匹配
上面的实验中,信号发生器的阻抗是 50 欧姆,在它的说明页上有标注。
这根铜轴电缆它的阻抗也是 50 欧姆,这两者之间就不会产生反射。
最后这边的电阻可以看成是一个接收端,只要这个电阻不等于 50 欧姆,那么这个铜轴电缆跟电阻交界处就会产生反射。
所以为了避免反射的存在影响信号质量,就要确保信号源、传输线以及接收端的阻抗要基本一致,这就是所谓的阻抗匹配的意义。
3.2.4 PCB中实现
绝大部分情况下都需要在 PCB 上画走线,一般情况下信号源和接收端的阻抗芯片厂家都已经定义好了。比如说 USB 的话是差分 90 欧姆, SDIO 的话是单端 50 欧姆,只需要按照他们的要求画一根对应阻抗的走线,把发射端以及接收端连接起来就可以了。
问题就来了,如何在 PCB 上画一根任意阻抗的走线呢?
此时需要找到 PCB 板厂了。以大家熟悉的嘉立创为例,在他们的官网上有一个专门计算阻抗的页面,比如说我们要画一根 50 欧姆的走线。
根据这个结果,只需要在 top 层画一根宽度 60.5600mil 的走线,就可以得到一根阻抗为 50 欧姆的走线了。
注意点:
- 在这根走线的反面要画一个参考用的地平面。
- 阻抗跟走线的长度没有关系,但是和其他的参数都有关系。比如说你修改了 PCB 的厚度, PCB 的层数,铜厚都会影响到最终的计算结果
3.3总结
在一个通信系统中,信号源和接收端的阻抗一般都是确定的,我们要做的就是找一根阻抗和它们相等的走线,把它们连接起来,否则的话阻抗不匹配就会产生反射,影响信号质量。
参考:新手入门高速PCB?先搞清楚什么是阻抗匹配。_哔哩哔哩_bilibili
四、CAN接口设计
4.1原理图
- 5V 供电。
- 与单片机相连的管脚:发送、接收和使能。
那你要自己独立思考到一个需要注意的点:该 CAN 芯片是 5V 供电,那它在手册中定义这些管脚的高低电平必然是与这个芯片本身的 VCC 相关,比如高电平是 2V~VCC+0.3V。这个问题需要认真阅读芯片手册。
其中提到:单片机→芯片,单片机的高低电平都在该芯片的接受高低电平范围之内。
芯片→单片机,该芯片的高可能会有 5.3V ,单片机能接受吗?幸运的是,单片 机为了可以兼容这中类型的芯片,有些管教有 FT 功能,可以兼容 5V。 - CAN 总线的输出。
- 为了降低工模干扰,设计直接参考芯片手册,输出电压是电源电压的一半。
五、TF 卡接口设计
5.1原理图
- 这是卡座自己的一个信号,不是标准信号。
默认情况下是高电平,卡插入这一管教就和地相连接,产生低电平,下拉成低电平。
单片机就可以通过该管教的信号来识别卡是否插入;也可以通过协议来判断卡是否插入。 - 是标准信号。
六、USB2.0接口设计
6.1原理图
这里是简化的设计,就只有电源、地、USB信号。环境恶劣需要加很多保护。
七、IIS 接口设计
7.1原理图
IIS 是多媒体传输接口,此处为备用接口,给需要时扩展数字音频。线有:时钟,信号、数据。
八、扩展
8.1GPIO口
在原理图中预留了 10 个 GPIO 口用于需要的时候扩展接口。
8.2其他扩展
无线部分
一、WIFI 模块电路设计
使用的芯片是ESP-12S,设计之前将手册完整、认真的看一遍。
1.1手册重要信息提炼
1.1.1管脚信息
- 1脚:复位管脚
- 3脚:使能管脚
- 8、9脚:控制电源,给芯片供电
- 15、16脚:串口通信管脚
其他管脚一般用于二次开发,比如 ADC 采集,或者 IO 口。
1.1.2引脚模式
下载模式和启动模式
1.1.3输入输出的逻辑电平
一定要注意电平匹配
1.1.4功耗
功耗和芯片工作模式、信号强度有关。在下表中最大功耗为 170mA ,设计时要确保能够提供一个最大的电流。
1.1.5内部电路图
- 复位信号:内部已经有上拉信号,外部不用再设计上拉电路
- 使能信号:内部已经有上拉信号,外部不用再设计上拉电路
- 供电电路
- 板载天线:为了方便可以直接使用
陈梦醒疑问?
复位和使能引脚在内部始终上拉,外部要怎么控制也改变不了它内部上拉的电路事实啊?
陈梦醒解答!内部的上拉电路只是默认情况下使芯片保持工作状态。例如,可以使用一个开关或者一个微控制器的输出来连接到复位或者使能引脚引脚,当按下开关或者微控制器输出信号时,它们会将复位引脚拉低,触发复位操作。这种外部控制机制会覆盖内部的默认上拉,因为电路总是采用最低电平的状态。
1.2设计电路
- 通过串口通信,连接单片机的 AT 串口
- 复位和使能:芯片内部已经有上拉,外部直接控制就可以。
二、GPRS 模块电路——电源部分设计
采用的芯片是SIM800C。
2.1手册
2.2设计
- 钽电容:耐压比较差,在选型的时候其耐压最好是其两端电压的两倍。
- 稳压管:当信号线上产生一个干扰的尖峰,起到保护的作用的,避免烧掉芯片。
三、GPRS 模块电路——开关机电路设计
3.1手册
3.2设计
四、GPRS 模块电路——SIM 卡电路设计
4.1手册
注意 RC 滤波电路和 TVS管稳压。
4.1设计
此处设计的尺寸是:弹片式的中卡。(卡是有不同的大小尺寸的)
五、GPRS 模块电路之天线口电路设计
5.1原理图
- π型网络:用于天线匹配。
比如说板子已经做好了,去匹配天线,当参数不一致的时候,调整这里的参数来匹配。 - 天线的接口:到时候可以使用胶棒的天线
- 此处导线需要甄选一个 50 欧姆的电阻进行阻抗匹配,因为天线信号频率是比较高的,进行阻抗匹配才能保证信号地额稳定,PCB 时详解。
六、芯片的其他部分
- 串口控制:参考硬件设计手册。
- TCP 检测引脚:当 TCP 断开之后会反馈信号。
- 状态指示引脚
- 2.8V 输出引脚,将其引出
- 网络指示灯,也将其引出
- 未使用的音频功能
- 未使用的二次开发
电机部分
一、单极性步进电机 与 双极性步进电机 驱动设计
1.1电机的结构
左边单极性步进电机里面有两个大线圈,并在中间引出都引出抽头,将两个大线圈分成了四个小线圈,故又叫四相五线步进电机。又因为电流只有一个方向,又叫单向步进电机。
右边双极性步进电机里面就只有两个线圈,没有中间的抽头,所以又叫两相四线步进电机。该电机电流有两个方向,需要桥路来驱动,改变线圈电流的方向。
1.2原理图
1.2.1单极性步进电机
-
此处为四项五线,所以这里有五跟线。
其中 1 线是公共端,可以接电源,称为 com 端。
其他是电机的其他四相,只需要控制每一项的通断,用的是 ULN 2003A 来驱动。 -
ULN 2003A 是一个反向器,输入 0 则输出 1 ,连接着上面所说的电机的其他四相。
到时候,输入 1 → ULN 2003A → 输出0 → 电机的其他四相就是0 → 公共端为1 就导通回路了。
只需要改变供电的次序就可以控制电机的转向。
1.2.2双极性步进电机
单极性电机的控制方式不能控制双极性电机,双极性电机需要有桥路来控制,因为需要改变 1.1中右图中线圈的电流方向。
这里采用的控制芯片是 LV8548MC 芯片,该芯片可以控制两台直流电机驱动或者一台步进电机驱动(此处)。
原理图如下:
三、两路有刷直流电机驱动设计
3.1原理图
用的控制芯片还是上面的 LV8548MC 芯片,是该芯片控制两台直流电机驱动的使用方法。
四、无刷直流电机接口设计
是一个接口的设计,并没有设计驱动芯片
4.1无刷直流电机结构
无刷电机有三相,所以需要三个桥路,六路 PWM 波来控制。
下面还有三路A、B、C 用霍尔器件来感应的反馈电路,切换电流方向来改变电机的转向。
所以加一起要预留 六路 PWM 控制信号 + 三路输入信号。
4.2原理图
- 三路霍尔元件控制信号
- 六路 PWM 波
上面电路为接口设计,后续需要驱动无刷直流电机在设计驱动板和它对接,可以用高级定时器产生六路 pwm 控制驱动桥开关、霍尔信号切换相位。
五、旋转编码器接口设计
用于检测电机的转速和方向。
旋转编码器有一根轴,电机转动时,带动这根轴转动。
如果是输出两根线则只检测转速;如果是输出四根线则只检测转速和方向。
5.1原理图
下图是输出四根线则检测转速和方向。
六、电源滤波电路设计
电机转动产生低频干扰,可以使用 LC 滤波。
6.1原理图
后续真实连上电机后,观察它的纹波情况,来调整 L 和 C 的数值。
STM32主控部分
一、电源设计
1.1芯片上的电源设计
芯片功能比较强大,为了保证每一个模块可以正确可靠的运行,配了很多电源口。
第一,这些电源口比较分散,比较好走线;
第二, 这样耦合最短。
在这里模拟信号供 AD 采集用的,内部一般提供吧 AD 芯片。此处的电流都是非常小的,所以数字地和模拟地分不分开都无所谓。如果电源功率非常大,则数字地和模拟地需要分开,不要相互干扰
1.2单独电源设计
STM32 手册中每一部分的设计都有详细的参考说明,以下的部分也是,就不再重复了。
1.2.1数字电源
LC滤波
每一个电源都配一个电容进行滤波
1.2.2模拟电源
二、复位,BOOT 设计
2.1复位
2.2 BOOT电路
三、0SC 晶体电路设计
3.1主晶振
特别注意:匹配电容计算方法如下:
晶体负载电容=(C39*C52)/(C39+C52)+线上寄生电容 +芯片寄生电容|
匹配电容=(负载电容-几pF)*2
PCB 布局布线,走线尽量短,品体背面铺地
3.2副晶振
同上
四、SWD 调试接口设计
方便应用,提供了3种接口,分别为排针,XH座子,DC3牛角座
五、RTC 时钟超级电容供电设计
系统上电则是系统的 4V 进行供电,系统不上电就是超级电容进行供电,并且不供电的时候电路不能有较大的漏电。
RTC 时钟属于是典型的低功耗电路。
5.1原理图
- 断电后超级电容 C55 为 RTC 时钟供电,该电路在其他共同作用下,超级电容充电停止电压大概为3.3V。
- R14为充电限流电阻。
- 为了防止电流外泄增加二极管 D9 ,该 316 二极管反向漏电流必须非常的小,在做低功耗电路时一定要查看电路手册。
- 肖特基二极管,它的反向漏电流是比较大的。它存在的意义是分压,为了进一步降低充满后的电压。
六、Flash 芯片设计
就通过一个 SPI 接口就可以,该芯片可以用于存储一些图片等。
七、整体信号规划设计
7.1总览
- 简化应用,尽量少用针帽进行切换
- 调试串口与智能显示屏共用1个串口
- GPRS与WIFI 无线共用1个串口
- RS-485 单独使用一个串口
- 串口 3 与 4 被 SDIO 口占用
- 无刷电机与 IIS 共用 TFT 屏接口
7.2注意事项
7.2.1 事项1
注意右边用红色标注的串口一部分。USB 一定接到该串口一才能烧录程序,不能随便接。
7.2.2 事项2
尽管所有的管脚,都支持一个外部中断,但是每一个管脚只能接一路中断。
比如说下图的按键就是外部中断,其中 EXTI-1, EXTI-2, EXTI-3, EXTI-4 都是外部中断,不能同时存在两路 EXTI-1,如果同时存在也只有一路可以起作用。
7.2.3事项3
在硬件设计的过程中一定要充分考虑软件设计。
有一些不能复用的口,只能用于特定功能;有一些可以复用的口,要考虑如何复用。
可以采用 stm32 cubemx 进行辅助。
整体模块化设计总结部分
本节课核心思想提炼如下:
无论是硬件设计还是软件设计,一定要注意模块化的设计。
- 比如将大的系统设计在原理图栏分成一个一个模块的原理图纸,而不是一整页原理图。
- 比如将一个大的系统设计提供一个原理图设计总览,可以一目了然的看清各个模块之间的联系。
模块化的设计方便阅读,方便修改,方便移植,方便日后维护。