使用串口芯片CH340中的DTR引脚和RTS引脚来控制单片机复位引脚和BOOT0引脚的电平状态,从而实现一键下载。对于这个一键下载电路,重点是这2个地方没问题就足够理解了:1.得有看懂三极管电路开关状态的能力 2.得明白CH340的DTR RTS引脚电平状态是可以由软件来控制的
1.使用串口下载前,先这样连接:单片机串口1的tx1 rx1分别和ch340的rx tx连接,同时把boot0 boot1引脚都10k****下拉到地(若直接连地则电平状态无法改变了,也就无法切换boot启动配置了)
2.如图2,10k在这里:boot引脚拉一个10k电阻到排针
图2
3.图3为正点原子精英板usb转串口的ch340电路,使用flymcu软件来进行烧录。烧录软件的工作流程为:
(1)初始:DTR和RTS的初始电平都是高电平,如图3,此时Q2和Q3都不导通
(2)如图5的阶段1,DTR维持高电平,RTS拉低,此时Q2和Q3都导通,boot0拉高,同时单片机进入复位状态
(3) 如图5的阶段2,DTR也拉低,此时单片机从复位状态释放进行启动,由于boot0已经拉高,参考图4启动模式,单片机将进入系统存储器 。从图6可以看到,这个阶段,主要执行单片机信息查询和程序擦除动作
**(4)如图5的阶段3,DTR拉高,RTS维持低电平,此时单片机再次进入复位状态,同时boot0维持拉高状态
**
(5)如图5的阶段4,DTR再次拉低,单片机从复位状态释放,启动进入系统存储器。从图6来看,这个阶段再次读取单片机信息,然后进行烧录, 烧录完成后发送协议命令(系统存储器里面的bootloader程序,从flymcu打印的log来推断,至少包含了芯片信息查询、程序烧录、跳转到flash执行这三大功能)让单片机跳转到闪存地址执行,注意这里是从系统存储器程序里面直接跳转的(这一步需要在软件勾选 编程后执行 复选框才有的)
(6)收尾:以上烧录完成并执行以后,拉高DTR和RTS,恢复到平时的电平状态,断开Q2和Q3
图3
4.BOOT0 BOOT1引脚电平对应的启动模式
图4
5.除了初始和收尾,有四个阶段,用2张图来表示。图5是DTR和RTS的实际波形,图6是flymcu烧录软件打印的log信息。其中图6里面关于DTR和RTS电平的描述和实际波形相反,这是flymcu软件的问题。
图5
图6