设计与开发

单片机烧不进程序 软件工程师在调试STM32电路板时,突然烧录不了了,硬说硬件坏了

小编 2024-11-26 设计与开发 23 0

软件工程师在调试STM32电路板时,突然烧录不了了,硬说硬件坏了

新来的软件工程师在调试一块电路板,电路板上的主控是stm32单片机。软件工程师在调试软件的时候,突然发现stm32单片机烧录程序烧录不了了。刚开始调试时,每次都是能正常烧写程序的。他试了很多方法,都解决不了。先是关掉和重新打开keil编译软件,又把电脑关机又重新开机,最后把调试器的驱动卸载又重新安装,结果都是一样,怎么都烧录不了。但是,找来stm32的开发板,用相同的调试器,烧写相同的程序,却又能成功烧写。

软件工程师无计可施后,就找到了我,跟我说电路板坏了,程序怎么都烧录不成功,但是用开发板却能正常烧录,应该是在调试的过程中,硬件不小心被他弄坏了,叫我重新给他弄一块电路板。

我跟他详细了解了情况后,跟他说硬件应该没有坏。可是他不相信,他说他已经试过很多方法了,都没有解决,程序也证明是没有问题的,因为在开发板上是能正常烧录的,除了硬件出了问题,他实在是想不出来是哪里出了问题。

我微笑着跟他说,等我简单弄一下,电路板你又可以正常烧录了,别担心。他一脸不屑地看着我,根本不相信我说的话,好像是说,你就装吧,一会你就知道错了。

我懒得跟他解释,不慌不忙地打开STM32的烧录软件,连接好调试器和电路板,并给电路板上电,然后进行芯片程序擦除操作。眨眼的功夫,芯片程序擦除成功了。

我把电路板还给他,并跟他说,电路板已经好了,可以正常烧录了,不过不能用他当前的程序烧录,要用他以前烧录成功的程序烧录。

他半信半疑地看着我,然后按照我说的方法去试了。奇迹出现了,他用他以前调试的并且烧录正常的程序烧录,结果烧录正常了,不管烧录多少次,都能正常烧录。

他喜出望外地看着我,一个劲地说我牛,然后又问是怎么回事。我跟他说,电路板的代码不能一字不漏照搬开发板的参考例程,因为两者的原理图不一样,用到哪些就添加哪些,不然很容易出现这个烧录问题。

程序如何下载到单片机中?单片机常用的四种烧写程序方式介绍

单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程IDE来实现编程。在学习单片机之前,要先清楚单片机程序是如何烧写到单片机内部的,在烧写的过程中需要用到什么工具?因为不通用的烧写工具可能价格较贵,比如说Micorchip单片机使用的ICD系列编程器,单台价格在600-1000元人民币之间。今天和大学来认识一下单片机最常用的四种烧写方式和所使用到的工具。

1.使用JTAG接口实现

JTAG接口是一种标准的测试协议,可以实现编程时在线调试,利用单步追踪可以很方便的查找代码的Bug,大多数的单片机都支持这种接口。这种接口除了电源线和复位引脚之外,还要用到单片机的四个引脚,分别是:TDI、TMS、TCK、TDO,他们所代表的含义如下所示:

TDI--数据输入 ,所有写入寄存器的数据都是通过TDI接口串行输入的;TMS--模式选择 ,Jlink输出给目标CPU的时钟信号;TCK--时钟信号 ,所有数据的输入输出都是以该时钟信号为基准的;TDO--数据输出 ,所有从寄存器读出的数据都是通过TDO接口串行输出的;

以上这四个引脚都是协议里强制要求的,而且协议建议在设计电路时要选用上拉电阻。JTAG接口有多种形式,常用的20引脚、14引脚和10引脚。以20引脚JTAG为例,所设计的JTAG烧写电路如下图所示:

JTAG接口

上图中JTAG接口都通过电阻上拉了,有的单片机的这几个引脚在内部已经上拉,所以这几个上拉电阻可以省略,减少了成本和PCB空间的占用。

JTAG接口烧录方式常用的工具为J-Link,实物图如下图所示。

Jlink实物图

相信大家都见过或者听过这个烧写工具,这个工具很通用,但是大家在使用的时候一定要注意版权信息,因为这个工具是有版权的,前两年因为版权风波,网购平台还集中整治过一次。

2.SWD接口烧录方式

SWD是一种串行调试接口,与JTAG相比,SWD只需要两根线,分别为:SWCLK和SWDIO。他们的含义如下:

SWDIO --串行数据线,用于数据的读出和写入;SWDCLK --串行时钟线,提供所需要的时钟信号;

一般来说,大多数单片机的JTAG接口和SWDIO接口是复用的,SWD也是用J-Link工具来实现的。所以在使用的时候,只需要在软件界面做一下选择,使用SWD方式还是JTAG方式,硬件上无需改动。除了J-Link外,意法半导体的ST-Link也是支持SWD模式的。

SWD接口

SWD的接口如上图所示,可以看出,SWD和JTAG是相互复用的,由于SWD只需要两根线所以大大减少了对单片机GPIO口的占用,SWD方式也是可以在线调试的。

3.ISP烧写方式,用UART实现

使用过国产51单片机的朋友都清楚这种烧写方式,这种烧写方式是通过单片机的UART串口来实现的,所需要的工具也比较简单-USB/TTL。这个USB/TTL的芯片可以通过MAX232、CH340G等芯片来实现,通过MAX232实现的UART烧写电路如下所示:

UART串口烧写电路

在与单片机连接的时候,一定要注意交叉连接,所谓交叉连接即,单片机的TXD接串口RXD,单片机的RXD接串口TXD,否则数据通信失败。51单片机在使用该方式下载时需要断一下点再上电才能下载。

STM32单片机可以使用UART来实现程序下载,但是需要选择BOOT的模式,现在通过CH340G芯片可以实现自动ISP的下载方式,即不需要手动设置BOOT模式。

4.SWIM单总线下载方式

这种下载方式是针对STM8系列的单片机,这种方式只需要一根线即可实现程序的下载,所使用的工具为ST-Link,如下图所示:

ST-Link

以上为几种常见的烧写方式以及所使用的工具,欢迎大家留言评论,如果转载请注明作者信息和头条出处,感谢支持。

相关问答

单片机烧不进程序 一般是什么問題-ZOL问答

单片机坏了,或者引脚与插座接触不良都可能烧录不进程序。你在建一个文件,把原来的程序复制到新的文件里就得了,我挨几次了都是这样弄的。STC的芯片在上电后首...

51 单片机程序烧不进 去?

有多种原因可能导致51单片机程序烧不进去,以下是一些可能的解决方案:1.检查连接确保电路板、电缆和编程器之间的连接正确无误。在检查之前,使用电动工具小心...

单片机 无法 程序 ?

1.单击下载按钮,让软件向单片机写入程序,如果出现这个提示无法下载,请在下载状态下关闭单片机电源再重新打开,看烧写过程开始没有2.如果还没有,请检查C...1...

单片机 突然就 不进 去了?

第一:检查晶振等(就是单片机本身的电路是否可靠)。第二:是否在打开STC-ISP软件后不小心碰串口线,导致STC-ISP软件与串口失去联系(重新打开STC-ISP或者拔下...

自己焊的 单片机 最小系统 烧不进程序 -ZOL问答

你看看是不是TXD和RXD接反了,反了就烧不进去的~什么片子,说明白单片机坏了,或者引脚与插座接触不良都可能烧录不进程序。4条回答:【推荐答案】首先确定usb转...

单片机烧 不进 原因,在别人电脑就可以,在自己的为啥不行?

如果你使用的是ISP方式烧录,无法下载程序的话,应该是串口的问题(使用USB-232应该是USB口有问题)。如果用编程器的话烧录软件一般是没有问题的,除非你的系统...

烧到 PIC 单片机 程序 没反应是为什么-ZOL问答

单片机没工作,晶振不起振或者程序的问题你要开发PIC单片机,得一定有调试器,Microchip公司的调试器都能同时作为烧录器用。如ICD2,ICD3,PICKIT2,PICKIT3等。...

怎么用keil把 程序烧进单片机 ?

需要利用下载器和下载软件才能将keil程序输出的hex文件烧录到单片机中。具体操作请参照以下步骤,演示单片机为51单片机。1、首先准备好51单片机最小系统板和...

为何 单片机烧完 程序 好使 重新上电点就不好使-ZOL问答

问题中没说清楚单片机系统是做什么用的,你的单片机系统是不是有外接传感器或者其他设备,烧程序用的是USB供电或者从烧写器给单片机系统供的电,由此我的理解是:...

单片机烧录 进去 程序 ,为何就是没有现象?-ZOL问答

还有一个原因是程序有问题,呵呵。检查下吧你改变一下程序的时间。voidmain(){whiel(1){led1=0;}}还要确认硬件是否已经运行起来了程序飞了吧。最后...

猜你喜欢