STM32 单片机有Boot启动方式,在用UART串口下载程序时,需要手动设置Boot的启动方式,可能有点麻烦,通过设计电路可以实现自动ISP下载。下面和大家分享一下设计原理。STM32支持仿真器和串口下载程序。将要介绍的内容,属于串口下载,即我们通常说的ISP下载。
手动ISP下载程序,我们已经知道了,控制BOOT0引脚实现。STM32上电,会自动检测BOOT0引脚是什么电平,如果是高电平,等待用户下载程序;如果是低电平,运行用户之前下载到单片机的程序。所以我们需要把BOOT0引脚引出,然后控制其接地或接VCC来下载程序或者运行程序。在调试过程中,我们需要不断的控制BOOT0,非常麻烦。那么,自动ISP就该出场了。
自动ISP,把BOOT0与地直接连接,那么每次上电就会运行程序,而且只要点击电脑上的“下载”按钮,就开始下载程序,下载完程序,就开始执行。实现此目的,需要借助串口握手信号DTR和RTS。下面是深圳鹏远电通科技有限公司研发的免费ISP下载软件,请看红色的框里面的部分。
DTR连接RESET(复位引脚),控制复位,RTS连接BOOT0,用来控制程序运行或者等待下载。下面说明如何用USB转TTL芯片实现STM32自动ISP。CH340芯片如下图所示:
CH340芯片,DTR和RTS引脚在一般情况下是高电平,低电平有效。因为STM32的RESET引脚,也是一般情况下是高电平,低电平复位,所以DTR可以与RESET直接连接。但是BOOT0是高电平下载程序,低电平运行程序,正好与RTS相反,所以我们需要把它反相,加一个NPN三极管即可。电路如下图所示:
ISP软件的选择:
看了上图的选择,有些人一定会产生疑虑。按道理应该是低电平复位,然后低电平进入BOOTLoader呀。但是,有一点需要注意,它这里讲的高低电平,是针对电脑原始的9针串口的,也就是“232电平”,我们用的USB转TTL芯片是“TTL电平”,正好相反。下载过程和结果如下图所示:
注意:CH340在刚上电,稳定需要几秒钟时间,在此期间,DTR引脚会有两次或者三次的变低情况,这样会引起单片机上电后复位两三次,稳定后不会影响程序运行。如果不想让单片机上电复位好几次,上电的时候把DTR与RESET断开即可。
关键字:单片机 ISP 自动下载程序
引用地址:
解析单片机ISP自动下载程序电路设计原理
推荐阅读最新更新时间:2024-11-07 07:31
89系列单片机的型号编码
89系列单片机的型号编码由三个部分组成,它们分别是前缀,型号、后缀。它们的格式如下: AT89C;××× ×××× 其中:AT是前缀; 89C××××是型号; ××××是后缀。 下面分别对这三个部分进行说明,并且对其中有关参数的表示和意义作出相应的解释。 1.前缀 前缀由字母“AT”组成,它表示该器件是ATMEL公司的产品。 2.型号 型号由“89C××××”或“89LV××××”或“89S××××”等表示。 “89C××××”中,9是表示内部含Flash存储器;C表示是CMOS产品。 “89LV××××”中,LV表示低电压产品。
[单片机]
stm32单片机进入休眠(STOP)模式后无法下载程序等问题解决
利用stm32单片机的休眠模式,使单片机间歇的休眠从而实现低功耗的目的。往往会出现进入休眠后无法唤醒,导致下一次程序烧不进去。通常的解决办法是:一般的开发板或单片机最小系统都会有复位键,按住复位键,点下载,然后松开复位键即可。 我遇到的问题是:误入了stm32(STM32L051C6T6)的STOP模式,又没有写入相应的唤醒方法,导致后续的程序不能下载。使用MDK5 点击load时总会出现No target connected。自己设计的最小系统又没有加入复位键。。。 有以下几种解决办法: 1、可以将单片机的NRST引脚引出来,外接复位键。(关于引脚查看可用ST官方软件STM32cubeMX,很方便) 2、通过IS
[单片机]
采用555定时器和单片机的RC测量系统设计方案
本文介绍了一种基于555定时器和单片机的数显式电阻和电容测量系统设计方案。该系统利用555和待测电阻或电容组成多谐振荡器,通过单片机测量555输出信号的周期,根据周期与待测电阻或电容的数学关系计算出电阻或电容值,再将之在LCD1602上显示出来。最后仿真结果表明该测量系统具有结构简单,方便实用等优点,能够测量一定范围内的电阻和电容值。 1.引言
在电子仪器、仪表的制造及使用行业,有大量的印刷 电路板 需要调试、测量与维修,需要对电阻电容的数值进行测试。
本文介绍了一种基于AT89C51单片机和555定时器的数显式电阻和电容测量系统设计方案,然后制作出电路实物,实现系统的功能。系统利用555定时器和待测电阻(或
[单片机]
单片机中十进制数在寄存器里的表示方式
unsigned char xdata pbuf ; //数据缓冲区 for(i=0;i 512;i++) pbuf =i; //向数据缓冲区中写入0~255 0~255,共512个字节 UART_Send_Str( 向缓冲区中装入完毕 ); 今天,在看这个程序,上面注释写着往数据缓冲区写入0~255 0~255。 明明是0~512为什么是0~255 0~255呢?? 呵呵,这里pbuf是char型的。到了256时,为10000 000,char中只能存储低8位。 可以通过这个程序来测试下,就知道,254是以2进制的形式存放在寄存器里的。 #include sfr LedPort =0x80;
[单片机]
基于STM32单片机的瓦斯监测与控制
本文设计出这一款基于STM32单片机煤矿瓦斯监测控制管理系统,包括甲烷气体传感器电路、温湿度传感器电路、Wi-Fi模块电路、报警电路、继电器控制电路及显示电路。 STM32单片机作为核心,具有监测煤矿矿井温湿度、瓦斯浓度参数的功能,并具有瓦斯浓度超限报警功能;具有自动强制通风功能;采集数据可通过液晶屏显示。监控数据和告警信息可以通过Wi-Fi模块传输到远程机智云端。 系统方案设计 本次设计的主要核心是机智云平台对煤矿瓦斯安全环境的监控,使用移植机智云GAgent的Wi-Fi/GPRS模组建立桥梁,使煤矿瓦斯监测系统采集的数据与机智云互联互通。煤矿瓦斯监测系统与机智云数据交互图如图1所示。 总体方案设计 煤矿瓦
[单片机]
PIC单片机用CCP1模块产生10位PWM波形程序
//该程序用于使CCP1模块产生分辨率为10位的PWM波形,占空比为50% #include p18f452.h void CCP1NIT(void) { CCPR1L=0x7f; CCP1CON=0x3c; //设置CCP1模块为PWM工作方式,且其工作 //循环的低2位为11,高8位为01111111=7F //高电平时间=(CCPR1L:CCP1CON 5:4 )*Tosc*(TMR2预分频) INTCON=0x00; //禁止总中断和外围中断 PR2=0xff; //设置PWM的工作周期=(PR2+1)*4*Tosc*(TMR2预分频) TRISC=0xfb; //设置CCP1引脚为输出方
[单片机]
STC89C52单片机 LCD1602液晶显示屏
LCD1602显示 VVcat #include reg52.h typedef unsigned char uchar; typedef unsigned int uint; sbit RS = P3^5; sbit RW = P3^6; sbit EN = P3^4; //判断液晶忙,如果忙则等待 void Read_Busy(){ uchar busy; P0 = 0xff; RS = 0; RW = 1; do{ EN = 1; busy = P0; EN = 0; }while(busy & 0x80); } //写LCD1602命令一个字节 void Wr
[单片机]
一文读懂汽车控制芯片(MCU)
本文从工作要求,性能要求,产业格局,行业壁垒四个维度,分别介绍车身、底盘、动力、座舱四个域的 MCU 芯片 。并整理了国产MCU芯片的应用现状,供从业者参考。 1.控制类芯片介绍 控制类芯片主要就是指MCU(Microcontroller Unit),即微控制器,又叫单片机,是把CPU的主频与规格做适当缩减,并将存储器、定时器、A/D转换、时钟、I/O端口及串行通讯等多种功能模块和接口集成在单个芯片上,实现终端控制的功能,具有性能高、功耗低、可编程、灵活度高等优点。 车规级MCU示意图 汽车是MCU的一个非常重要的应用领域,据 IC Insights数据,2019年全球MCU应用于 汽车电子 的占比约为33%。高端车
[汽车电子]