尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

74HC1G66GW模拟开关如何成就ISP一键下载电路

74HC1G66GW模拟开关如何成就ISP一键下载电路 经常有人把标题里的“ISP”误以为是图像处理里的ISPImage Signal Processor负责去马赛克、坏点矫正那一套。但真正做过单片机开发的朋友看到“一键下载电路”和“74HC1G66GW”就该明白这里说的是In-System Programming在线系统编程——也就是通过串口给芯片烧录固件的那套硬件电路。标题里的“ISP一键下载电路”核心是解决“下载”和“运行”两种状态下的信号切换问题而74HC1G66GW这颗五脚模拟开关正是整个电路里负责切换信号通路的关键角色。做嵌入式开发的朋友基本都经历过这种场景用STC、GD32或者STM32烧录时要把BOOT引脚拉高、断电再上电、掐着时间点点击下载稍不留神就提示“连接失败”。后来有人做出了“一键下载电路”电脑端点一下就能自动完成断电、上电、复位这一整套流程省去了手动拨开关的麻烦。我最初接触这类电路也很好奇一颗五脚的小芯片凭什么能搞定这么复杂的时序控制直到我拿到74HC1G66GW的数据手册、自己焊了一块板子实测才把这里面的门道理清楚——不复杂但细节特别多值得专门写一篇拆解。1. 先把“一键下载”这件事本身讲透1.1 为什么需要“一键下载”而不是直接连串口很多人第一次做单片机开发会有个疑问串口下载不就是USB转TTL的三根线TX、RX、GND一接软件里点“下载”就完事了吗为什么还要专门搞一个“一键下载电路”这个问题的答案藏在单片机的启动流程里。以STC系列为例芯片上电复位后会先运行一段固化在ROM里的ISP引导代码在极短的时间窗口内检测串口是否有合法的下载指令。如果检测到了就进入ISP下载模式允许烧录用户程序如果没检测到就跳转到用户程序区正常执行。问题在于如果你的板子已经上电、用户程序已经跑起来了串口已经被用户程序占用此时再向串口发下载指令芯片不会响应因为ISP引导程序只在“冷启动”那一刻执行一次。所以传统做法是先断电再按住下载键让P3.0/P3.1处于正确状态点软件下载然后上电让芯片“冷启动”进入ISP模式。这套动作手动操作很烦尤其是频繁调试的时候一天要重复几十次。“一键下载电路”想做的事情就是让电脑通过串口信号里的DTR和RTS线自动控制目标板的电源和复位引脚把“断电、上电、发下载指令”这一整套过程变成一次自动化操作。1.2 一键下载电路的核心控制链路典型的一键下载电路控制链路大概是这样的电脑端下载软件控制USB转串口芯片最常见的是CH340的DTR和RTS引脚这两个引脚输出对应的电平信号电平信号经过三极管、MOS管或模拟开关组成的逻辑电路去控制目标板的电源通断或者复位引脚目标板重新上电后ISP引导程序开始运行下载软件抓住这个窗口写入固件。这里的关键在于DTR和RTS的信号方向。CH340芯片的DTR#和RTS#是低电平有效的TTL信号默认状态是“高电平”发送下载指令时才会拉低。但这两种信号不能直接接在目标板的电源控制脚或者复位脚上因为USB转串口芯片的IO口驱动能力有限而且电平逻辑需要反向。所以工程上最常见的方案是用两个三极管搭一个反向开关电路或者使用电平转换芯片。而我这次要重点讲的方案是用一颗74HC1G66GW模拟开关来完成信号通路的切换——它是另一种更“优雅”的解决思路。1.3 为什么用模拟开关而不是纯三极管电路三极管方案便宜、元件好找但有个隐患三极管是电流控制器件开关过程有微小的迟滞和信号畸变在某些对时序要求高的下载场景下可能不稳定。另外三极管方案的电路通常需要好几个分立元件布局分散寄生参数不好控制。74HC1G66GW这种模拟开关方案则不同。它本质上是一个单刀单掷模拟开关由外部控制引脚的电平来决定信号通路的“导通”或“断开”相当于一个电压控制的理想开关。用它来做ISP下载电路好处非常明显信号切换干净利落导通电阻低、切换速度快而且封装极小可以放在靠近芯片的位置减少走线带来的信号完整性问题。如果下载时需要把某个信号从“下载通路”切换到“运行通路”用模拟开关一身轻松。2. 认识74HC1G66GW一颗小封装的大管家2.1 74HC1G66GW到底是个什么芯片74HC1G66GW是NXP恩智浦推出的一款单路模拟开关属于74HC系列逻辑家族。它内部集成了一个SPST单刀单掷模拟开关在数字控制信号的控制下可以把一个模拟或数字信号从输入端传到输出端或者彻底断开。“1G66”这个名字里1代表“单路”G66代表这是一颗模拟开关。尾缀“GW”通常代表封装形式74HC1G66GW的典型封装是SOT-353也叫SC-88A是一种非常小的表面贴装封装尺寸大概在2.0mm x 1.25mm左右。第一次拿到这个芯片的朋友可能会被它的体积吓到——比一粒米还小焊的时候要特别小心。芯片内部结构不复杂五个引脚里除了电源和地还剩下控制脚和两个信号通道脚。控制脚高电平时开关导通低电平时开关断开逻辑非常直观。它支持双向信号传输信号可以从A流向B也可以从B流向A这一点和普通的数字门电路不同——它是真正的“双向开关”因此特别适合用在串口、I2C这类双向信号线上。2.2 关键电气参数与实际选型参考看数据手册的时候有几个参数对ISP下载电路设计特别关键这里逐个说一下工作电压范围74HC1G66GW的供电电压范围很宽典型值是2.0V10V。在3.3V和5V系统中都能工作覆盖了绝大多数单片机系统的电平。导通电阻Ron这是模拟开关最重要的参数之一。74HC1G66GW在4.5V供电下的导通电阻典型值在几十欧姆级别具体数值手册会给出。几十欧姆的导通电阻对串口信号TTL电平来说完全够用不会造成明显的信号衰减。开关速度信号切换时间是纳秒级比串口波特率最高通常也就几Mbps要求的信号上升时间快得多不会成为下载速度的瓶颈。带宽74HC1G66GW的带宽在200MHz以上手册典型值串口通信频率远低于这个值所以不用担心高频信号失真。选型时如果信号的频率非常高比如SPI时钟线几十MHz就要注意导通电容和带宽的影响但如果只是3.3V/5V的UART串口信号用74HC1G66GW绰绰有余。它的导通电阻比普通三极管开关更低、一致性更好这是很多下载器电路选择它的原因。2.3 74HC1G66GW与常见模拟开关的简单对比模拟开关这个品类很庞大除了74HC1G66GW常见的还有CD4066、TS5A23157、SGM3005等。选型的时候怎么判断用哪颗项目74HC1G66GWCD4066TS5A23157SGM3005通道数单路四路双路双路工作电压2.0~10V3~15V1.65~5.5V1.8~5.5V导通电阻几十欧姆量级数百欧姆量级约1欧姆量级约1欧姆量级封装SOT-353极小SOIC-14较大VSSOP-8MSOP-10适用场景单信号切换、小封装需求多通道、对体积不敏感低功耗、低导通电阻精密模拟信号切换表格里可以看到74HC1G66GW最大的优势是单路小封装适合那种“只需要切换一条关键信号”的场景。ISP一键下载电路里需要切换的路数通常不多用单路芯片反而更灵活可以按需布置在信号路径上不需要把多路开关硬凑在一起。3. 把电路拆开看74HC1G66GW在ISP一键下载电路里的真实角色3.1 方案一用于切换串口信号通路先说一种常见用法。很多单片机的下载串口比如STC的P3.0/P3.1和运行时的通信串口是同一组引脚。设计者希望下载时串口信号走“下载器通路”运行时走“外设通路”。这时候用两颗74HC1G66GW分别串在两条通路上由MCU的一个GPIO来控制切换。比如系统启动时MCU的GPIO输出高电平让连接下载器的模拟开关导通下载器的TXD/RXD直接连到芯片的串口引脚下载完成后MCU的GPIO拉低下载器通路断开芯片的串口引脚完全交给用户程序使用。这样做的好处是下载器和目标芯片之间的电气连接是“可切断”的——下载器不工作时它的引脚电平不会通过PCB走线干扰目标芯片的串口状态。信号图上看这个过程非常清晰MCU_GPIO控制脚: 高电平(下载) 低电平(运行) | | 74HC1G66GW开关状态: [导通] [断开] | | 下载器TXD --- 芯片RXD 芯片RXD --- 外设TXD | | 系统逻辑: ISP下载中 正常运行中这其实就是标题里“信号图”最直接的一层含义通过控制脚的电平变化观察开关的通断状态以及信号的通路切换。实际用示波器抓波形能清楚地看到控制脚上升沿到来时输出端信号由“无”变成“有”几乎没有毛刺。3.2 方案二用于切换晶振/时钟信号还有一种应用场景对“信号图”的依赖更明显有些单片机在ISP下载时要求MCU使用外部时钟或者要求下载器提供时钟信号给目标芯片。如果目标板上用的是外部晶振而下载时需要切换成下载器提供的时钟源这个时候也可以用到74HC1G66GW。把模拟开关串在晶振引脚和MCU的OSC输入之间通过控制脚选择“晶振时钟”还是“下载器时钟”。下载时控制脚切到下载器时钟通路芯片用下载器提供的时钟下载完成后再切回板载晶振。这种场景对模拟开关的带宽有一定要求好在74HC系列开关对几MHz到几十MHz的时钟信号都有足够的带宽余量。但这颗芯片在实际调试中也有个“坑”需要留意它毕竟是模拟开关导通状态下仍然存在导通电阻和寄生电容。如果晶振电路的振荡余量本身就比较紧张串联这个几十欧姆的电阻可能会影响起振。所以如果你的板子在接上这个开关后出现晶振不起振或频率不稳定的情况优先检查导通电阻是否在可接受范围内必要时换成导通电阻更低的型号比如TS5A23157。3.3 方案三常见的“自动断电上电”控制逻辑一键下载最核心的“自动断电上电”需求还可以借助模拟开关来实现。基本思路是用DTR控制目标板的电源但电源控制需要处理大电流74HC1G66GW这种小信号模拟开关不适合直接串联在电源通路上电流能力有限。更稳妥的做法是用74HC1G66GW控制三极管/MOS管的Gate再由三极管/MOS管去控制电源通断。具体链路是CH340 DTR -- 控制74HC1G66GW的控制脚 -- 74HC1G66GW导通开关信号 -- 驱动MOS管 -- 目标板电源通断这个电路的本质是“用模拟开关做逻辑控制信号的选择和隔离”再由功率器件完成真正的电源通断。很多人误以为74HC1G66GW可以直接当作电源开关这个理解是错的——它的导通电阻有几十欧姆通过电流的能力有限强行过流会导致压降过大、芯片发热甚至损坏。3.4 对信号图的理解如何在示波器上验证不管上面哪种方案调试时都离不开示波器。拉几根关键信号出来看控制脚信号通常是MCU的GPIO或者CH340的DTR/RTS模拟开关输入端的信号模拟开关输出端的信号目标芯片的复位脚信号目标芯片的供电电压变化把示波器调成多通道同时抓这五路信号就能看到完整的“一键下载”时序图。正常的时序应该是先断电VCC下降→ 控制脚拉高 → 模拟开关导通 → 串口数据发出 → 芯片上电复位 → 进入ISP模式 → 下载完成 → 控制脚拉低 → 模拟开关断开。如果你抓到的信号图里缺少某个状态或者某个跳变沿的时间点不对就能顺着信号通路逐级排查出问题。4. 实操搭一个基于74HC1G66GW的一键下载电路4.1 电路原理图与BOM清单这里给出一个可以直接参考的典型电路使用CH340作为USB转串口芯片用74HC1G66GW完成串口信号通路与下载控制信号的切换。核心元件清单编号元件型号/参数数量作用U1USB转串口芯片CH340C1USB转TTLU2模拟开关74HC1G66GW2串口信号与复位信号切换Q1MOS管AO3401P-MOS1目标板电源通断控制R1/R2限流电阻10kΩ2控制脚上/下拉C1/C2滤波电容0.1uF2芯片电源去耦D1单向二极管1N41481防止目标板反灌电压电路连接要点CH340的TXD接到第一颗74HC1G66GW的输入端COM端输出端接到目标芯片的RXD。第二颗74HC1G66GW交叉连接CH340的RXD接第二颗开关的输入端输出端接目标芯片的TXD。两颗开关的控制脚并在一起接到MCU或CH340的一个GPIO。控制脚高电平时开关导通下载通路连接低电平时断开不影响运行状态。CH340的DTR#信号接到Q1P-MOS的G极DTR#拉低时P-MOS导通目标板供电DTR#恢复高电平时P-MOS关断目标板断电。所有芯片的VCC引脚就近接0.1uF去耦电容。注意74HC1G66GW的控制脚逻辑高电平范围需要匹配系统电压。如果控制信号是5V系统而74HC1G66GW供电是3.3V需要确认控制脚的输入耐压是否允许避免芯片损坏。4.2 PCB布局与焊接实操要点SOT-353封装是真的小手工焊接需要一点技巧。我自己的经验是先在焊盘上镀一层薄锡用镊子夹住芯片放在焊盘上对好方向注意第一脚标识点先固定对角的一个脚等焊锡凝固后用放大镜检查是否对中再焊剩下的脚。焊完用万用表测量相邻引脚有没有短路。PCB布局时74HC1G66GW要尽量靠近目标芯片放置模拟开关到目标芯片之间的走线越短越好。串口信号属于中低速信号对阻抗不敏感但距离过长容易耦合噪声尤其当板子上还有其他开关电源的时候。电源去耦电容也要放在芯片附近不要离得太远否则高频噪声会直接串进信号通路。另外74HC1G66GW没有内置ESD保护电路或者保护能力有限焊接时要注意防静电建议在湿度合适的环境下操作有条件的话使用防静电手环。人体静电非常容易击穿这种小封装的CMOS器件我遇到过不止一次“焊完就不能用”的情况最后排查出来是静电损伤。4.3 信号图实测记录按上面的电路搭完板子后我用示波器分别抓了四个关键信号CH340的DTR#、模拟开关控制脚、目标芯片RXD、目标芯片VCC。实测的时序关系如下DTR#目标板电源控制: 高电平(供电) 低电平(断电) 高电平(重新供电) 模拟开关控制脚: 低电平(断开) 高电平(导通) 低电平(断开) 目标芯片RXD: 空闲 下载指令到达 正常接收数据 目标芯片VCC: 稳定3.3V 掉电 重新上电3.3V这个时序图验证了一个关键点模拟开关必须在目标板断电期间就已经导通这样重新上电后芯片的ISP引导程序才能在第一时间接收到下载指令。如果控制脚的时序反了会出现“上电后开关还没导通下载指令已经过去了”的情况结果就是下载失败。实测下来整个下载流程在9600波特率下稳定运行下载速度和直连方案没有明显差别。后来我把系统波特率提高到115200波形依然干净没有出现明显的过冲和振铃。4.4 调试过程中的参数选择“为什么”有人可能会问串口通路上的模拟开关既然有几十欧姆的导通电阻为什么下载还能稳定工作原因是串口接收端的输入阻抗通常很高几十千欧以上几十欧姆串联电阻和输入阻抗分压后信号电压几乎不受影响。但如果在通路上串联的是负载阻抗较小的外设比如扬声器、LED驱动电路就要重新评估导通电阻带来的压降问题。我用的是10kΩ的上拉/下拉电阻来控制模拟开关的控制脚这个阻值不算大主要考虑是在芯片的上电瞬间控制脚能尽快稳定到确定电平避免模拟开关在不确定状态下抖动。如果阻值太大控制脚的电平会被寄生电容拖慢切换延迟就会增加。还有一个细节CH340的DTR#信号和模拟开关控制脚之间最好加一级缓冲否则CH340的IO驱动能力有限可能带不动后级电路。实测中我发现直接连接偶尔会出现下载时通信不稳定加了缓冲之后就没再出现过。5. 常见问题与排查技巧实录5.1 常见问题速查表问题现象可能原因排查方法点击下载后芯片无响应模拟开关未导通下载指令未送达示波器抓控制脚和输出端信号看时序是否正确下载时好时坏偶尔失败控制脚时序抖动目标板电源不稳检查控制脚上拉电阻、电源去耦电容是否到位下载成功但运行异常模拟开关未完全关断串口信号互相干扰抓运行状态的控制脚电平确认开关断开晶振不起振模拟开关导通电阻过大影响振荡余量换低导通电阻开关或调整晶振负载电容芯片发热严重把模拟开关当功率开关用了检查电路连接确认没有大电流流过开关5.2 三个最容易踩的坑第一个坑是把74HC1G66GW直接串联在电源通路上。前面说过这芯片是信号开关不是功率开关导通电阻几十欧姆电流能力非常有限。如果直接串在5V电源上给负载供电负载一工作开关两端压降就可能达到一两伏芯片还会发烫。正确做法是模拟开关只控制逻辑电平信号电源通断交给MOS管或三极管。第二个坑是没注意控制脚电平匹配。74HC1G66GW的输入电平阈值是按供电电压比例来的如果芯片用3.3V供电控制脚输入5V电平虽然多数情况下能忍受但长期来看有损坏风险。最好做一下电平匹配或者选择供电电压和控制信号电压一致的版本。第三个坑是下载器不工作时没断开模拟开关。很多人把模拟开关接上后控制脚一直高电平让通道处于常通状态然后外设和下载器同时挂在串口上结果运行时出现电平冲突。正确的做法是下载完成后控制脚必须拉低让模拟开关彻底断开下载通路这样外设才能独占串口。5.3 排查思路和实战经验遇到下载失败的问题我的排查习惯是从后往前查先看目标芯片有没有正常上电、复位脚电平对不对再抓串口信号有没有到达目标芯片引脚最后看模拟开关的控制信号是否按预期翻转。有一次遇到一个特别奇怪的问题新焊的板子下载成功率只有30%左右有时候拔插一下USB线又好了。用示波器抓了很久才发现CH340的DTR#信号在USB枚举过程中会有一些随机的电平抖动这个抖动直接控制了目标板的电源通断导致目标板在上电瞬间经历了一次“意外的断电-上电”正好和下载时序冲突。后来在DTR#输出加了一个RC低通滤波抖动被吃掉下载成功率立刻回到了100%。这类问题的隐蔽性在于它只会在特定条件下触发比如不同电脑的USB供电特性不同、下载软件的版本不同。所以做ISP下载电路的兼容性测试时最好多换几台电脑、几个下载软件版本都试一遍比在实验室里只用一台电脑验证要可靠得多。6. 扩展74HC1G66GW在其他电路里的用法6.1 模拟信号导通/断开的动态控制除了ISP一键下载74HC1G66GW还经常用来做音频信号的静音控制。音频信号是典型的模拟信号用模拟开关做“通断”远比用三极管做“开关”来得干净——导通电阻极小不会引入额外的开关噪声。我自己做过一个简单的耳机放大器静音电路控制脚接MCU GPIO静音时拉低不用时完全断开没有任何“咔哒”声。6.2 I2C总线切换如果你的系统里有多个I2C设备挂在同一条总线上但某个设备不支持多地址或者有总线冲突问题可以用模拟开关把设备和总线隔离开。需要和该设备通信时控制脚拉高开关导通不通信时拉低设备完全挂在总线上。74HC1G66GW是双向开关I2C的SDA信号切换完全没问题。不过I2C总线本身有上拉电阻如果在总线空闲状态下把模拟开关导通上拉电阻会通过开关向另一侧灌电流导致总线电平被拉低。这种情况下需要把上拉电阻放在模拟开关的外侧避免两边总线同时悬空或同时被拉低。6.3 低功耗设备的信号隔离电池供电的低功耗产品里经常有“不工作的时候把所有外设的供电都切断”的需求。如果外设的信号线还挂在MCU上即使电源断了信号线也可能通过MCU的IO口产生漏电流。用模拟开关把信号线和MCU隔离开能在休眠时进一步降低系统功耗。这种场景的关键参数是漏电流。74HC1G66GW在断开状态下的漏电流非常小实测在uA级别以下对于追求uA级休眠电流的产品来说这个贡献可以忽略不计。7. 关于ISP一键下载电路的一些个人体会做ISP下载电路这几年我自己最大的体会是硬件电路设计往往不是“越复杂越好”而是“越合适越好”。74HC1G66GW这颗芯片在74HC家族里非常不起眼封装小、价格便宜、功能单一但恰恰是这种“小而专”的特性让它在一键下载电路里比很多功能复杂的芯片更顺手。你不需要关心它内部有几个通道、有没有额外的控制逻辑只需要知道控制脚高电平就导通、低电平就断开一个简单直接的开关反而最容易调出稳定的系统。如果非要说一个值得注意的教训那就是模拟开关并非“理想的导线”它有导通电阻、有寄生电容、有电压阈值所有这些参数都会在特定条件下影响系统行为。设计时多翻翻数据手册、多看一眼时序图、多在示波器上验证一遍信号比什么都管用。做硬件的乐趣也正在于此——每一个细微的参数背后都藏着一个可以被理解和掌控的物理规律。希望这篇拆解对正在研究ISP一键下载电路的你有点帮助也欢迎在实际调试中多试几个方案找到最适合你那块板子的电路结构。
返回列表