最近想尝试使用串口下载代码,遇到几个问题: 1、使用官方提供的Flash Loader Demonstrator V2.8.0,无法连接器件,使用示波器看了一下,这个软件也就在点“Next”的时候发了一个0x7F,然后就一直等响应,这样的设计不太科学吧,起码要发个几次才能断定到底有没有响应,吐槽一下,下面继续; 2、使用串口调试助手,根据AN3155全手工发送命令,响应正常,读出的bootloader版本号是V2.2,这个版本已经修复了那一堆上拉什么的问题,排除这个错误; 3、重点来了:使用串口调试助手只有在断电复位的条件下才能正常进入bootloader,使用复位按键无效。但是复位的确起作用了,因为在接收命令的状态下按复位键,就无法再正常接收命令和响应,同时对0x7F也没有响应,似乎进入到了某种不确定的状态; 4、发现了上面的问题以后,想用断电的方法试一下下载软件好不好使,结果变成了“无法识别的器件……”,使用串口调试助手发现断电以后再上电,然后打开串口发送0x7F,收到的是0x00,0x00,0x79,而不是单独的0x79,可能是这个原因造成了器件无法识别。再吐槽一下,这个软件设计的似乎不太用心,复位状态下器件串口不稳定也是常有发生的,结果软件仅仅根据收到的第一个字符就把这个设备给毙掉了…… 到现在这个问题还是没有解决,为什么复位按键没有用而必须要断电,只能求助各位大神了,谢谢!另外,大家在批量生产的时候都是怎么下载代码的?这个问题让我头疼了好久…… 硬件连接: 型号:STM32F107VCT6 BOOT0接高电平; BOOT1悬空,用万用表测量电压为0.04V。如果是因为BOOT1悬空的问题,那用串口调试助手应该同样不能正确的进入bootloader吧? 串口用的是PA9和PA10;直接用USB转TTL串口线; BOOT0接地后能正常进入自己的程序,先前使用jlink烧写程序,一直很稳定; 复位按键的连接跟参考手册上的一模一样,用示波器观察波形正常,先前用jlink的时候复位按键工作正常; |
BOOT 下载最好低电平, 悬空是一个未知状态 ,可能是高可能是低 ,你试试吧 |
下载问题已解决,MCU的调试串口连接到了MAX3232,复位以后被MAX3232的输入电阻拉成低电平,下载软件就认为MCU一直在给它发送0x00,而不是ACK。在调试串口的TXD接一个上拉电阻就解决问题了。但是通过复位按键无法重新进入bootloader依然无解…… |
绝对不能悬空的。以前忘记焊电阻,导致悬空怎么也下不进程序。把电阻一焊上,就好使了 |