最近我做的STM32F103VCT6单片机系统第二版打样回来后,发现不能进行ISP下载了,跟第一版相比,isp部分电路走线完全没改过。但是使用SW下载模式是可以的,程序下好后,ISP串口也能正常进行通讯。在ISP模式下,用串口助手发送bootloader握手字节0x7F,回收到0x7F和0x79两个字节,正常板应该只会收到0x79一个字节的,这个0x7F是为什么出现的,有没有人遇到同样情况的,又是怎么解决的。本人已经试过的方法:
1.更换单片机,max232及周边电容,串口信号驱动ic等
2.电源电路也更换过,试过用第一版的板供电
ISP的方式下,boot0和boot1的组合设置不一样会导致启动方式不一样。这个具体好好看手册。isp的方式需要从系统存储区启动的
设置没问题的,这个我可以肯定。如果不是从系统存储区启动通过串口助手发送0x7F也不会有回传字节了
我记得我之前用的是正点原子给的flymcu这个软件捯饬过,没有问题的。。。。。。
问题还是出在硬件上,我是采用的hc245做信号驱动的,器件在bootloader引导程序下,一开始串口的TX应该是还没有初始化成推挽输出的,此时单片机到hc245之间的tx引线是处于一种悬空状态的,易受干扰,此时串口tx脚的电压万用表测量是2V(刚好在5V供电的hc245高低电平输入分界线附近,我第一版的该脚电压1V以下,就算受到干扰波动也是在高低电平分界电压2V以下)左右,当接收到串口助手发送过来的数据字节后,TX引线受到RX引脚数据的扰动,hc245输入端检测到这个波动以后,驱动端将信号放大输出到232,此时串口会检测到由高电平转低电平(这个是串口数据发送启动信号,导致串口认为此时有数据接收到),所以我会回收到0x7F这个多余字节,从而导致通讯握手不成功,这个字节不是单片机发出来的,而是因为干扰串入的。同时又因为单片机接受0x7F是成功的,bootloader启动,串口初始化,此时tx脚被初始化为推挽输出,后面的通讯也就不会有多于字节回传了。应用程序串口正常也是同样的道理,推挽输出已经建立,此时的tx脚不受rx信号的干扰。tx引脚对地加一个电阻后我的ISP下载就恢复正常了。我在论坛上看到也有人跟我有类似的情况,但是他是换单片机换好的,我猜测他的问题应该跟我类似,只是换了单片机型号以后tx引脚干扰电平在高低分界线以外而已,如果在比较复杂的环境还是会出现isp下载不成功的。这个问题是我在没有示波器的情况下花费了3天时间才搞定的,希望我的这些经验对遇到类似问题的人有所帮助,少走弯路。如果其中有所不妥,欢迎指正,感激不尽。附件附我isp下载部分电路。
想不到soso姐还时常关注帖子的回复。。。。。。O(∩_∩)O哈哈~