logo资料库

STM32串口无法下载程序问题分析报告.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
STM32 串口无法下载程序问题分析报告 一、 下载部分原理图 图 1 RS232 接口 图 2 下载接口 需要通过串口下载程序,BOOT0=3.3V,BOOT1=0V,复位芯片,进入 ISP 下 载模式,图中所示,只需短接 1、2 脚,3、4 脚,按复位键或重新上电,芯片
进入 ISP 下载模式,等待握手指令。注意 BOOT0 通过下拉电阻接地,防止芯 片平常启动时意外进入 ISP 下载模式。 二、 下载软件 Flash Loader Demonstrator 图 3 串口下载程序软件 三、 下载程序 一般情况下,短接图 2 下载接口的 1、2 脚和 3、4 脚,按复位键芯片进入 ISP 下载模式,打开 Flash Loader Demonstrator,选择串口相应端口,按下 next 键,若握手成功则可进入下一步。 四、 问题分析 操作提示无法识别芯片,软件与芯片无法通过握手,首先我们对硬件的基本条 件进行了排查,BOOT0=3.3V,BOOT1=0V,按复位键复位电平正常,电平上升坡 度时间大概为 15ms,由于该板能够使用 STLINK 下载程序,又做了一次接收数 据返回的程序,以验证串口及 RS232 均没有问题,验证均通过。为此,我们需
要做更深入分析,为此我们要准备一些工具,对于硬件来说,示波器是必不可 少的,对于端口数据来说,Usb Hound 是一个很好的分析端口数据工具,下面 我们借助工具来做进一步的分析。 五、 监视分析 图 4 Usb Hound 端口选择 图 5 Usb Hound 运行
Usb Hound 使用非常简单,在 Device 项选择相应端口打勾,回到 Capture 界 面,点击 Run 即对端口数据监视。此时我们打开 Flash Loader Demonstrator 并选择相应端口,采用 9600 波特率,短接下载接口的 1、2 脚和 3、4 脚,接 好 RS232 端子引脚,按复位键,然后按 next 键 图 6 Usb Hound 监视 Loader Demonstrator 与芯片握手信息 从数据分析发现,58us 即收到返回数据 00,按照波特率 9600 计算,该数据并非 芯片发出,为验证这一想法,我按住单片机复位键,再一次按下 next 键,得到 同样的监视数据,查阅 Bootloader 说明书,软件端发送 0x7F,芯片返回数据应该是为 0x79,如今监视到的数据却是 0x00,而且我们已经验证了 0x00 是硬件产生而非芯片 发出,而串口的硬件前面初步排查的时候已经提到过,通过程序的收发都没有问题, 这时我想到用串口软件来进行一次测试。
此时返回数据是正常的,同样的硬件,为什么不同的软件会接收到不同的数据 呢?带着这个疑问,我用示波器对单片机的 TXD1 引脚进行了监视:
监视发现,返回波形是一致的,但是为何两个软件解析出不同的数据?反复对 比两个软件,很快发现其中的区别: 串口数据有起始位、数据位、校验位、停止位,其中起始为为 0,停止为为 1, 我们不难发现 Flash Loader Demonstrator 没有停止位选择这一项,而从示波 器波形来看,复位进入 ISP 模式以后,TXD1 空闲状态保持低电平,所以当 Flash Loader Demonstrator 发送握手信息后,将芯片 TXD1 引脚的空闲状态解 读为数据 0x00,并以此为依据判断芯片无法识别,由此也解开了无法下载的谜 团。细心的朋友可能会有一个疑问,为什么前面提到过,使用 STLINK 下载程序 验证程序收发时候,为什么就没有这个问题呢?问题很简单,程序运行后,会 对端口进行配置,TXD1 内部配置上拉电阻,所以 TXD1 空闲状态为高电平。
六、 解决办法 加 10K 上拉电阻到 TXD1 引脚,使其空闲状况保持高电平。 七、 总结 开发的过程中我们总会与到这样那样的问题,当遇到问题的时候,我们更需要 的是掌握解决问题的思维办法,顺着这个思维,一步一步走下去找到问题的根 本;同时也需要在实践的过程中更多的去注意这些细节问题,一个小小的上拉 下拉可能都会给你造成不少的困扰,在开发的路上没有小问题,每一个问题都 需要认真对待,之所以把这样一个小问题用文字的表达出来,也是希望能够带 给你帮助或者启发,在这里要感谢我的一个朋友,翁工,是他在开发的路上给 了我很多启发。 2014-08-05
分享到:
收藏