FlyMcu串口下载&STLink Utility

1、FlyMcu

FlyMcu串口下载,同STC-ISP(51单片机下载)。

使用步骤:

1、STM32的USART1通过串口转usb连接到电脑

2、通过keil生成Hex、bin文件

生成bin、hex文件可参考

keil生成bin文件(简单)-CSDN博客

  创建的Hex文件在工程的Object中。

 

 3、进行烧写

选择对应的串口和波特率

 然后选择文件,可选择hex(此软件不能烧写bin文件)文件。

 跳线帽配置boot0 boot1为0 1。然后重新复位

 

 然后点击开始编程下载

将跳线帽改成0 0 ,重新上电就能自动运行。

系统存储区解释:

系统存储区(0x1ffff000)的bootload为引导烧写区域(内部为自举程序),ST公司指定了特定的通信接口进行引导烧写。在更新过程中,通过自举接口USART1,接收USART1数据,刷新到程序存储区flash中0x08000000。相当于手机的刷机模式,电脑的pe系统。进行辅助自我更新。

程序一键下载电路:

可使用电路自动控制Boot0引脚和RST复位引脚的电平,使得在上电烧写程序时自动改变,烧写完成后恢复。

可使用usb转串口芯片CH340G的RTS、CTS和DTR、DSR(4个流控引脚,我们可以当作普通的GPIO使用),RTS和DTR为输出引脚,可以用来控制STM32的Boot0和RST(需要外围的控制电路)。

配置的高低电平在CH340G会应用

另外可使用编程后自动运行,运行一次,此次不需要修改跳线帽。同时不能使用编程到flash时写选项字节。这次运行为手动指令。重新上电还是需要修改跳线帽位置。运行成功会显示成功从0x0800000运行。

 

其他功能(boot0 boot1 在 1 0 模式下): 

1、读flash内的程序,需要在boot0 boot1 在 1 0 模式下,读取的是STM32系统存储区从0x08000000开始的bin(无地址信息,hex文件有地址信息)程序。

2、清除芯片,需要在boot0 boot1 在 1 0 模式下,将flash内的程序全部擦除为ff。

3、读取期间信息可以将以下信息读出。

4、选项字节设定

  • 读保护字节,会防止程序被读出,开启后也不能下载程序,可以解除读保护(解除时会清空数据)
  • 硬件选项字节,了解使用
  • 用户数据字节,自由使用的字节,这些字节只能在上位机例如此软件中修改。
  • 写保护字节,可以对flash的每几个页进行单独写保护,例如想对flash最后几个字节存储固定数据,不想被修改,那么可以写保护。但是如果对写保护字节的程序进行烧写覆盖,会报错。

配置完成后选择采用设置

然后勾选编程到flash时写选项字节。这样在烧写程序时可顺便对选项字节设定。

2、STLink Utility

STLink下载,需要进行安装,也需要使用STLINK的驱动。

使用:

1、连接,使用STLINK,无需修改跳线帽

2、保存当前设备程序 

3、 断开连接和擦除芯片

 4、烧写程序

烧写后程序自动运行,最后有选择,默认的可以不更改。

5、选项字节配置,target-option bytes

 内容和flaymcu相同。灰色的选项表示芯片没有此配置。配置完成后使用Apply配置应用,可直接更改选项字节。

6、重启后进行固件更新

重启(下电)后点击ST-LINK-update,连接后看到当前STLINK固件版本和更新固件版本

点击更新 

更新完成! 

3、一键下载电路

1、CH340芯片特点

  • 全速USB设备接口,兼容USBV2.0。
  • 仿真标准串口,用于升级原串口外围设备,或者通过USB增加额外串口。
  • 计算机端Windows操作系统下的串口应用程序完全兼容,无需修改。
  • 硬件全双工串口,内置收发缓冲区,支持通讯波特率50bps~2Mbps。
  • 支持常用的MODEM联络信号RTS、DTR、DCD、RI、DSR、CTS。
  • 通过外加电平转换器件,提供RS232、RS485、RS422等接口。
  • CH340R芯片支持IrDA规范SIR红外线通讯,支持波特率2400bps到115200bps。
  • 内置固件,软件兼容CH341,可以直接使用CH341的VCP驱动程序。
  • 支持5V电源电压和3.3V电源电压。
  • CH340C/N/K/E/X/B内置时钟,无需外部晶振,CH340B还内置EEPROM用于配置序列号等。
  • 提供SOP-16、SOP-8和SSOP-20以及ESSOP-10、MSOP-10无铅封装,兼容RoHS

2、CH340系列芯片

3、CH340引脚定义

4、一键下载电路原理

STM32下载,在NRST复位后BOOT0  = 1高电平即可进行烧写。默认断开不生效。

DTR#和RTS#都是输出类型,FlyMCU(一键下载工具),会控制CH340这两个引脚的高低电平状态,通过控制DTR#和RST#这两个引脚的高低电平状态,从而控制STM32的BOOT0 和 RESET。选择DTR的低电平复位,RTS 高电平进 BootLoader。

我们需要注意一点:CH340G上电后DTR#和RTS#都为高电平,在用MCUISP烧写软件时,我们在软件下方选择“DTR的低电平复位,RTS高电平进BootLoader”,CH340G IC在实际操作时引脚的变化为“DTR#拉高,RTS#拉低”,即软件设置和实际情况是取非的,相反的。

RST#和DTR#是低电平有效,因此没有动作的时候都是保持高电平的。

控制流程:

初始:下载软件配置DTR的低电平复位,RTS 高电平进 BootLoader。电路中DTR#、RST#默认高电平
启动:因为CH340C的DTR和RST发送为非门DTR#维持高,RST#拉低。DTR#高电平,Q1的b-e有电压差(电流存在),那么Q1的c-e导通,NRST接到RST#线为低电平。RTS为低电平,Q2的c-b有电压差(电流),Q2的c-e导通,BooT0为高电平。
复位:NRST接到RST#线为低电平,单片机复位。BooT0持续为高电平。

100ms后复位结束,改变电平:DTR#电平跳变(拉低),RST#不变(拉低)。此时复位结束。单片机启动后4个上升沿锁定boot0电平。为1,启动到系统存储bootload。

下载结束:RST#先变成高电平DTR#在变成高电平。RST#先变成高电平,BOOT0=0,退出烧写模式。DTR#在变成高电平,Q1的b-e无电压差,不在复位。烧写结束,重新上电即可使用。或者烧写时软件勾选烧写完跳转运行。
注:下载结束时之所以RST#先变成高电平DTR#在变成高电平。是防止DTR#先变成高电平时,RST#仍然低电平导致复位,再次进入bootload。

信号时序图: 

三极管工作原理

 其他辅助电路:

NRST稳定高电平,按钮控制复位

 

 STM32晶振电路

 复位后手动高电平BOOT0按钮,以及供电LED显示

BOOT1拉高,平时不用的引脚持续拉高

外部晶振

 

 USB插头和SWD烧写口插头

 

 参考:

看了一些博主的分享经验以防自己以后碰到先放在下面:

  • 目前最稳定的情况是由外部USB接口的5V供电(防止RTS有2.5V的电,防止BOOT0不能回0,稳定供电使CH340芯片引脚电平稳定)。
  • CH340G,需要加12MHz的晶振,否则无法正常工作;
  • 另外有CH340T等系列是不需要增加晶振的。而且CH340有两种供电方式,上面我提供的是5V供电,还可以3.3V供电,区别是3.3V的V3脚不需要外接电容,而是要直连到3.3V。
  • 对于CH340转换成的USB接口,有些电路会在D+那里加一个1.5K上拉到3.3V,目的应该是将USB口变为高速口,但我用软件查看了,无论加不加上拉电阻,这个USB口都是全速口。
  • 这两周在查找一个问题,就是MPU6050在我两块开发板上面展现出来的速率不一样,自己画的板子数据很慢,串口打印到虚拟机很不灵敏,相比之下买的开发板很灵敏,我对调了STM32都解决不了问题,对比了电路怀疑是CH340的区别,然后对CH340有了更深的认识,最后发现是我自己画的板子STM32的晶振旁路电容全都是104的,对于一个硬件工程师来说,真是很低级的错误,但也说明,电容用大可以正常工作,但是运算速率会变慢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值