拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

单片机ISP一键下载电路原理:串口信号切换与模拟开关应用

单片机ISP一键下载电路原理:串口信号切换与模拟开关应用

做单片机开发的兄弟,估计都被“ISP下载”折腾过。STC老用户应该记得,早期给51单片机烧程序,得先在软件里点“下载/编程”,再手动断开电源重新上电,这叫冷启动;手速慢了、时序不对,软件就卡在“正在检测目标单片机”,反复几次很磨人。后来很多开发板做了“一键下载”,串口软件里点一下,芯片自己复位、自动进ISP引导、烧完自动运行程序,全程不用碰电源开关。这里面的核心器件,除了CH340这类USB转串口芯片,还有一个不起眼的小家伙——74HC1G66GW,一颗单通道模拟开关,负责在“下载模式”和“运行模式”之间切换串口信号。这篇就围绕这个芯片,把ISP一键下载电路的原理、信号状态和实操坑位一起讲清楚。先说明一下,这里的ISP是In-System Programming,在系统编程,和图像处理那边的ISP(Image Signal Processor)不是一回事,嵌入式工程师看到这个词,第一反应都应该是前者。

1. ISP一键下载电路,到底在“一键”什么

1.1 传统下载方式的痛点在哪里

STC的51系列最早用串口下载程序,下载的前提是芯片上电复位后的一小段ISP引导窗口。引导程序会在这个窗口内监听串口,等待上位机发来的下载命令。所以必须“先点下载、再上电”,让MCU一复位就能听到来自USB转串口芯片的命令。如果MCU已经跑在用户程序里,串口被初始化成其他功能,自然不会响应下载命令,这也是很多新手第一次接触STC时被“冷启动”折磨的原因。

STM32的串口ISP也没舒服到哪里去。需要通过BOOT0引脚选择启动方式:下载前把BOOT0拉高、复位,让芯片从系统存储器启动,运行内置的ISP引导程序;下载完又得把BOOT0拉低、再复位一次,才能回到用户程序。来回拨跳线、反复按复位,做产测的时候效率很低。

这些操作的本质,都是在管理两件事:复位时序和信号通道。人手动去做的,无非就是“让芯片复位”“让串口数据能进芯片”。一键下载电路要做的,就是把这两个手动动作自动化。

1.2 一键下载电路的本质:复位时序加信号路由

一句话概括:上位机软件通过USB转串口芯片的DTR、RTS这些流控线,代替人的手指去按复位键、拨BOOT0跳线;再用模拟开关或三极管去切换串口信号,保证下载命令准确到达MCU的ISP引脚,而不是被其他外设抢走。

所以“一键”其实是把“点按钮、断电源、等复位、进引导、开始下载”这一串动作全部自动化。硬件上要实现的就两个功能:自动复位(含BOOT0控制)和信号路由。自动复位电路大家见得多了,三极管加RC就行;真正让很多人翻车的,是信号路由部分。

为什么要单独讲信号路由?因为很多真实项目里,MCU的串口不只是给下载用,旁边还挂着蓝牙模块、RS485芯片、4G模组等外设。如果这些外设一直挂在同一根信号线上,下载的时候会占线、拉电平甚至回应乱码,导致握手失败。这时候就必须有一个可受控的通断开关,把编程器的串口信号“接进来”或者“切出去”。这个开关选什么,直接决定电路好不好用。

1.3 为什么模拟开关成了信号路由的首选

用继电器切换行不行?当然行,很多老设计就这么干。但继电器是机械触点,体积大、寿命有限,切换速度也慢,频繁下载几次心里就没底。用三极管做双向开关也很麻烦,单个三极管只能单向通断,UART的TXD/RXD是两个方向,要控制得用两只三极管背靠背,导通时还有饱和压降,信号不干净。

模拟开关就是专门干这个的

返回列表