type
status
date
slug
summary
tags
category
password
icon
最近看到不少公众号的博主都在推这个优秀的开源项目【点晶之笔-CW32多功能测试笔】,里面讲解了比较多的软硬件的相关知识,同时较好的实现了相关的功能,非常适合相关知识的学习与了解。
其硬件开源在立创商城,地址为
项目代码托管在Gitee。
根据文档,详细的拆解每个模块的左右及相关的知识,对项目有一个详细的了解。作者文档开篇讲述了起因及构想,详细的构想去作者文档去观看,我们这里从2.1电源与电池管理入手。
电源输入部分,采用了当今最常用,最先进的Type-C接口,作者考虑到项目的拓展性,并没有采用6P的Type-C,而是采用了16P的Type-C,采用SBU1、SBU2来进行后期的升级及拓展,使用CC1、CC2对地下拉电阻使得使用Type-C to Type-C时准确的识别设备。同时作者考虑到采用设备的输出信号可能会发生信号误判,造成危险,关于Type-C,可以查看USB官方网站对于Type-C的介绍:头版 |USB-IF。
充电方面作者采用采用了Tp4057,这款芯片以SOT23-6封装和较小的外围器件实现了较多的功能,非常适合单节锂离子充电,作者提到了可编程的充电电流,RPROG=2K时可以达到500mA,能够较快的对电池进行充电。同时,此芯片有两个开漏输出的LED充电指示灯,用于充电状态指示,关于开漏输出可以查看下面关于开漏输出。
其系统的上电逻辑方面,作者单独使用了一个章节进行讲解,其实这是一个非常经典的电路,在不少的文章帖子中都有用到。大致可简化概况为控制PMos来进行的,其中sw1可类比为手机开关按键。
对于单片机的供电采用LDO芯片XC6206进行供电,通常所用的聚合物锂电芯的电压范围在2.5V-4.2V之间,此款LDO压差在240mV,大约当低于3.5V时,芯片将不具有稳压能力,但3.5V仍然在单片机电压范围内。这里没有使用电荷泵芯片对单片机进行供电,预计是考虑到其电压的输出误差原因。采用XC6206的一个原因而不是常用的AMS1117一个重要原因就是XC6206其较低的静态偏执电流可以达到μA级别,适合延长电池寿命的场合,而AMS1117其典型值在5mA级别,其对电池的损耗较大,且其压差要求较高,需要在1V以上,不适合用于电池供电 的场合。
Type-C引脚定义
USBType-C是在2013年底公布,2014年开始有量产产品推出,经过多年的发展,如今已经成为了主流的USB接口。全功能的Type-C插座包含了24根引脚,线缆中有22根导线连接两端的接头,缺少的两根是两端的插座的B6和B7之间没有进行线缆连接。
其接口定义和实物效果如下。
Type-C在正反插入时,线缆的连接方式是不相同的。
- 当插头正向插入时,接座的A1~A12连接插头的A1~A12,插头的B1~B12连接插头的B1~B12
- 当插头反向插入时,接座的A1~A12连接插头的B1~B12,插头的B1~B12连接插头的A1~A12
其公头母头定义如下
其引脚定义及功能定义如下
针 | 名 | 描述 | 针 | 名 | 描述 |
A1 | GND | 接地 | B12 | GND | 接地 |
A2 | SSTXp1 | SuperSpeed差分信号#1,TX,正 | B11 | SSRXp1 | SuperSpeed差分信号#1,RX,正 |
A3 | SSTXn1 | SuperSpeed差分信号#1,TX,负 | B10 | SSRXn1 | SuperSpeed差分信号#1,RX,负 |
A4 | VBUS | 总线电源 | B9 | VBUS | 总线电源 |
A5 | CC1 | Configuration channel | B8 | SBU2 | Sideband use (SBU) |
A6 | Dp1 | USB 2.0差分信号,position 1,正 | B7 | Dn2 | USB 2.0差分信号,position 2,负 |
A7 | Dn1 | USB 2.0差分信号,position 1,负 | B6 | Dp2 | USB 2.0差分信号,position 2,正 |
A8 | SBU1 | Sideband use (SBU) | B5 | CC2 | Configuration channel |
A9 | VBUS | 总线电源 | B4 | VBUS | 总线电源 |
A10 | SSRXn2 | SuperSpeed差分信号#2,RX,负 | B3 | SSTXn2 | SuperSpeed差分信号#2,TX,负 |
A11 | SSRXp2 | SuperSpeed差分信号#2,RX,正 | B2 | SSTXp2 | SuperSpeed差分信号#2,TX,正 |
A12 | GND | 接地 | B1 | GND | 接地 |
USB 2.0差分信号只会连接其中一边。因USB Type-c Plug 无B6、B7。
功能 | 引脚 | 描述 |
USB3 | A2,A3,B2,B3,A10,A11,B10,B11 | USB3数据传输 |
USB2.0 | A6/B6(D+),A7/B7(D-) | USB2.0数据传输 |
配置 | CC1,CC2 | 配置功能接口,插拔检测,供电协议信息传输,Vconn功能 |
辅助信号 | SBU1,SBU2 | 辅助信号 |
供电 | VBus,Vconn,GND | 供电 |
关于CC1、CC2
USB Type-C定义了CC pin,理解了CC pin的功能,大致上就等于理解了Type C。
其中作者用5.1K的下拉电阻下拉CC1、CC2确定设备为耗电方(Sink。其主要功能就是进行Type-C的接口双方角色的识别工作,当然CC1、CC2只能用于CtoC的线缆,作者在原文档中也有说明,在使用AtoC时,CC1、CC2悬空。
关于双方角色的确定和识别,是Type-C相对于USB规范定义了更多的角色类型。在USB规范中,USB是一个主从总线,在一条USB总线中,只能有一个USB主机,其余设备都是从机。在USB设备还没有连接到总线上时,其主从关系是一般是确定的(OGT除外)。USB的下行端口(DownStreaming Face Port,DFP)一般为主机,而而USB的上行端口(UpStreaming Face Port,UFP)为从设备。在USB2.0甚至3.0时代,大部分接口都是Type-A或Type-B,从接口外观也能轻易的看出主从关系。
相对于USB的定义,Type-C由于引进了PD充电规范和实现主从切换功能,其角色类型更多,其分别为
- 纯供电方:只能工作为供电方(Source),不可通过供电协议切换成耗电方(Sink)。
- 默认供电方:默认工作为供电方,可通过供电协议切换成耗电方。
- 纯耗电方:只能工作为耗电方,不可通过供电协议切换成供电方。
- 默认耗电方:默认工作为耗电方,可通过供电协议切换成供电方。
- 可切换的双重角色:默认工作为双重角色(DRP),可通过供电协议切 换供电角色。
- 双重角色的可供电设备:默认工作为双重角色,可通过供电协议切换
- 供电角色,具有DFP和UFP功能但不能工作为USB主机,如HUB的上行端口(UFP)。
- 双重角色的耗电主机:默认工作为双重角色,可通过供电协议切换供 电角色,具有DFP和UFP功能但不能工作为USB设备(detico),如 Hub的下行端口(DFP)
供电角色 | 连接初始通信功能角色 | 说明 |
供电方(Source) | 下行端口(DIP) | 接口进行供电 |
耗电方(Sink) | 上行增口(UIP) | 接口进行充电 |
双重角色 (Dual Role Port,DRB) | 双重角色(DFP或者UFP) | 接口既可以是供电方,但可以是耗电方,在连接上 双角色(DRP)(DEP或者UPP) 地切换,只有当连接了设备时才能确定。当连接的设备是供电方时,此接口就是耗电方;当连接的设备是耗电方时,此接口获是供电方;当连接的设备也是双重角色时,此接口可能是供电方也可能是耗电方。 |
- 从供电的角度出发,接口可以是供电方(Source)或者耗电方(Sink)或 是双重角色(DRP)。
- 从通信功能的角度出发,接口可以是下行端口(DFP) 或者上行端口(UFP)或是双重角色。
- 对于功能角色,它是在连接时根据供电角色确定的,当供电角色是供电方时,则功能角色默认是DFP;当供电角 色是耗电方时,则功能角色默认是UFP。
角色 | 供电方 | 耗电方 | 双重角色 |
供电方 | 不工作 | 工作 | 工作 |
耗电方 | 工作 | 不工作 | 工作 |
双重角色 | 工作 | 工作 | 工作 |
TYPE-C的接口双方角色的识别其实是通过TYPE-C接口中的两根CC线进行检测设置的。如下图所示:
这里的线缆器件是指有eMark芯片的线缆会用到 Vconn 供电,当一个 CC 确认方向后 Source 端的另一个 CC 会切换成 Vconn为Emark 供电,带有 Emark 芯片的线缆能通过 CC与设备进行通信,反馈此线缆的温度,承受电流能信息,对于大功率充电的安全性还是有很大帮助的。
- 接口1作为供电方,接口的两根CC线上会加上上拉电阻(Rp);
- 接口2作为耗电方,接口的两根CC线上会加上下拉电阻(Rd)。
- 当两个接口相连时, 接口1识别出对方的Rd下拉时,则认为连接成功并且检测出对方的角色是耗电方;
- 当接口2识别出对方的Rp上拉时,则认为连接成功并且检测出对方的角色是供电方。如果两个同是供电方或者耗电方的接口相连,那么双方都不能识别出想要的Rd下拉或者Rp上拉,双方都不能工作。
作者将CC1、CC2通过5.1K进行下拉,将设备作为耗电方用于后面的充电器件,其耗电方Rd的电阻值一般固定,供电方不同的Rp阻值告诉耗电方自己默认的供电电流能力。
耗电方的Rd的定义如下:
Rd = 5.1kΩ±20%
供电电流能力 | Rd的电压值 |
900mA | 0.15~0.61V |
1.5A | 0.70~1.16V |
3.0A | 1.31~2.04V |
确定了在没有供电协议PD的功能时,可以提供5V 900mA,1.5A或3A的电流,其更大的充电功率根据PD协议来说可以通过CC管脚的信号协商来说实现更大的供电功率。更多的CC pin的功能需要查阅官方手册,这里只说明CC线下拉5.1K电阻的原因,在很多项目中都采用了5.1K的下拉电阻,如peng-zhihui/ST-Link-Nano: 自制超迷你的ST-Link模块。 (github.com)
同时,Type-C电缆仅填充一根 CC 线。通过监控 CC1 和 CC2,下行端口 (DFP) 可以确定电缆是否已连接以及线缆的方向。
供电的 Type-C 线缆,无论是电子标记的还是管理型的供电线缆,都有连接到非 CC 线路的下拉电阻器 (Ra )。监测 Ra允许 DFP 识别供电 Type-C 线缆的存在和方向。
CC1 | CC2 | 状态/Status | 方向/Orientation |
— | — | 没有连接/Nothing connected | n/a |
Rd | — | 已连接 UFP/UFP connected | 正向/Normal |
— | Rd | 已连接 UFP/UFP connected | 翻转/Flipped |
— | Ra | Power Cable, no UFP connection | 正向/Normal |
Ra | — | Power Cable, no UFP connection | 翻转/Flipped |
Rd | Ra | Power Cable with UFP connection | 正向/Normal |
Ra | Rd | Power Cable with UFP connection | 翻转/Flipped |
关于SBU1、SBU2
CC是Type-C接口的灵魂所在,而SBU1及SBU2却几乎没有提起,SBU1和SBU2为辅助信号,在不同的应用场景具有不同的用途,例如在ALT MODE 模式下进行DP信号传输时,作为音频传输通道,在进入TYPE-C模拟音频耳机附件模式,则作为麦克风信号传输通道。而作者预留了SBU1及SBU2,用于扩展线路。
关于开漏输出(OD门)
开漏输出又称作为漏极开漏输出,在数字电路中又被称作OD门,在单片机输出中往往存在开漏输出和推挽输出,如C8051单片机的P0端口和STM32的GPIO中也存在开漏输出。在面试中也常常被问到,这次在芯片手册中看到开漏输出,好好的整理一下关于开漏输出的一些资料。
漏极开路,存在P沟道开漏和N沟道开路,其P沟道可以输出高电平、高阻态;N沟道可以输出低电平和高阻态。
对于N型开漏,当芯片内部输出的逻辑电平到达门级G为高时,漏极D和源极S导通,电流可以由Out引脚流向地被拉低,表现为Out输出低电平,具有拉电流的能力。当门级G输入为低时,N1截至,漏极D和源极S不导通,D和S之间电阻趋近于无穷大∞,表现为其Out引脚为高阻态,既没有输出电流的能力,也没有拉电流的能力,基本相当于开路。通常我们见到的OD门基本都是N型开漏。
对于P型开漏,情况类似。当门级G输入为低时,N1导通,Out引脚具有输出电流的能力,表现为输出高电平。当门级G输入为高时,N1截至,表现为其Out引脚为高阻态。
同样,相对于Mos,三极管也存在集电极开路(open collector),也称作OC门,其内部与OD门类似
OD门转换电平
在51单片机的学习中,我们将P0端口连接至一个上拉排阻,使得开漏输出有了输出高电平的能力,其高电平的输出能力取决于外部上拉电阻,同时可以通过改变上拉电阻接的电压来改变输出的电平,实现电平转换。如在OD门外部接12V加上拉电阻,其就具备了12V高电平的输出能力。但输出电流能力取决于上拉电阻的阻值,其阻值愈小,输出电流能力愈强
OD门逻辑线与
在IIC中我们经常听到线与逻辑,当多个器件挂载在IIC总线上时,只要有一个器件输出了低电平,整个总线也会被拉低只低电平,实现线与逻辑。
关于推挽输出
在面试中经常问到开漏和推挽,这里在仔细的梳理一下推挽电路。推挽输出是单片机常用的输出方式,通过两不同极性晶体管连接的输出电路。推挽电路采用两个参数相同的功率BJT管或MOSFET管,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小效率高。
推挽输出既可以向负载灌电流,也可以从负载抽取电流。如果输出级的有两个三极管,始终处于一个导通、一个截止的状态,也就是两个三级管推挽相连,这样的电路结构称为推拉式电路或图腾柱(Totem-pole)输出电路。
采用上N下P的形式,其中三极管供电为负电压即为互补对称式射极输出器。简称OCL电路。常用于音频放大电路。
在芯片中广泛存在的是采用Mos管的推挽电路。
关于开关机经典电路
当关机状态下按下按键,PMos导通,控制系统上电后将三极管导通代替按键按下,实现开机自锁的功能。此时就按键就可以当作一个普通按键使用。
同时又可将按键当作关机按键使用,按下时间超过阈值后执行关机动作,将三极管关断,当按键松开后,PMos也随之截至,系统失电。采用PMos是为了是单片机等逻辑器件有着良好的共地。
此类电路多是使用按键按下使得系统得电,控制后实现自锁开机,随后软件检测按键按下时间实现关机。类似的开关机电路参考:元器件测试仪中的“一键开关机电路” (dianlua.com)。
NMos和PMos
在电路符号中,PMos的中间箭头是朝外的,跟放P一样朝外,NMos相反。
在电路中,PMos电流由S流向D,与体二极管相反。NMos由D流向S,与体二极管相反。如果Vgs>0,NMos导通;Vgs<0,PMos导通。所以PMos通常做上管,NMos通常做下管。这样更容易控制。PMos的S通常接电源,D接负载。但在日常的应用中,很少用PMos做上
如果PMOS放在灯泡下面:S极隔一个灯泡靠经电源。当低电平输入开启PMOS时,由于PMOS导通,此时S极相当于接地,如果要继续保持PMOS导通则输入电压需要低于0V,这是无法做到的,同理NMOS放在灯泡上也会有类似的问题。
但是对于芯片这种需要良好共地的元器件,则必须使用PMOS,这样不仅可以有良好的共地同时PMOS远离VCC不会使芯片有漏电流而导致io口输出异常,因此作者采用PMos对系统进行开关机。如下图所示。
关于LDO
LDO是线性稳压器的一种,能在电源电压变化或负载电流变化的时候仍然能提供稳定的输出电压,线性稳压器通过输出反馈,参考源对比,误差放大器等组成控制电路,来动态的调节输出电压,相对于开关稳压来说,线性稳压器的精度更高,但输出电压要小于输入电压,线性稳压器通过晶体管将多余的电能转换为热量。
通常线性稳压器的输入和输出压差要求较高,常用的7805,7812等,至少要有2-3V以上的输入压差,而LDO(Low Dropout Regulator),也称低压差线性稳压器,其压差可以达到几十毫伏。
经典的LDO就是1117系列,其每年在全球的出货量都非常高,被广泛应用在微控制器电路当中。其封装形式通常为SOT-223,下图为其封装。通常使用1117都被要求外部配置一颗10uF钽电容作为旁路电容,大大的提高了使用成本。
输出电压精度
其常用的厂家生产的1117输出电压精度通常在±1.5%.其3.3V版本输出电压约在3.25V~3.35V之间。
元件型号 | 空载输出电压 | 满载输出电压 |
AMS1117 | 3.33V | 3.3V |
TLV1117 | 3.27V | 3.26V |
NCP1117 | 3.31V | 3.3V |
ME1117 | 3.28V | 3.26V |
CJT1117 | 3.32V | 3.32V |
空载输出是在输出电流为 0mA 时的输出电压值 满载输出是在输出电流为 800mA 时的输出电压值
输出纹波控制
输出纹波用于衡量线性稳压器输出电压的平稳程度,是一个叠加在直流稳定值之上的交流分量。通常只需要把这种纹波控制在
20mV
以内,就能够满足正常的使用。元件型号 | 空载输出电压纹波 | 满载输出电压纹波 |
AMS1117 | 17.6mV | 19.2mV |
TLV1117 | 16.2mV | 18.4mV |
NCP1117 | 15.8mV | 16.8mV |
ME1117 | 16.7mV | 17.6mV |
CJT1117 | 16.2mV | 16.8mV |
动态电压波动
因为线性稳压器的后级负载通常是动态变化的,所以就会导致其输出电压发生波动,这种波动是衡量线性稳压器性能一个非常重要的参数。
元件型号 | 波动电压大小 |
AMS1117 | 344mV |
TLV1117 | 94mV |
NCP1117 | 134mV |
ME1117 | 216mV |
CJT1117 | 172mV |
通常 1117 系列的输出电容都会要求使用钽电容,而非相同容值的陶瓷电容,这是因为钽电容的寄生电阻较大,而陶瓷电容的寄生电阻较小。 换而言之 1117 系列的电源环路稳定性,非常依赖于拥有更大寄生电阻的钽电容,从而提升其动态响应性能。
在实际的使用中,不能使用陶瓷电容作为滤波电容,同时静态电流也比较大(毫安级别),因而不适用于低功耗场景,加之假货与翻新件泛滥成灾,因该尽量减少1117系列的使用。
除1117系列外,可以考虑其他系列的LDO。
LDO 型号 | 封装形式 | 静态电流 | 输出纹波 | 动态响应 | 输出精度 |
XC6206 | SOT-23-3 | 1.4uA | < 5mV | 680mV | 0.6% |
ME6206 | SOT-23-3 | 8.3uA | < 5mV | 11.6mV | 0.9% |
ME6211 | SOT-23-5 | 36.9mA | < 5mV | 18.2mV | 0.6% |
RT9193 | SOT-23-5 | 70uA | ㅤ | 12mV | 2% |
- 对于 SOT-23 封装的 LDO 线性稳压芯片,在
5V
转3.3V
的情况下,最大输入电流应当控制在200mA
以内。如果需要使用更大的输出电流,则可以考虑使用 1117 系列;
- 特瑞仕的 XC6206 静态电流较小,适合低功耗场景,但是需要注意它的动态响应和纹波都比较大;
- 微盟电子的 ME6211 和 ME6206 系列性价比较高,小批量采购不容易购买到假货;
- SOT-23-5 封装的 LDO 元件相比于 SOT-23-3 多出一个
ENABLE
控制引脚(关断之后电流较小),如果需要控制输出就选择 SOT-23-5 封装,如果希望更小的封装,则可以选择 SOT-23-3 封装;