STM8S103F3P6无法下载程序报30200、30004、30006等错误的排查方案
背景
近日,时隔多年后,业余时间搞一个STM8S的小板子,来玩一玩。却没想到,焊接后下载不进去程序,报swim error [30004],硬生生的难了我好一会儿。
虽说多年没有碰STM8了,但当年自认为玩的还算溜,多年以后,怎么连程序都下载不进去了?岂有此理~!
先说结论:随手在实验室中找的0.1uF的电容,容值不对,不知道哪个兄弟干的好事儿,swim接口中的NRST引脚的0.1uF电容,拆掉后,一切正常了。
利用本次机会,总结一下STM8常见的连接不上STLINK,下载不进去程序的常见问题吧~!
如下:
swim error [30200]问题及解决
- PC端与STLINKV2断线未连接。
- 线材损坏、USB接口不良等情况会造成此问题
swim error [30004]问题及解决
- swim接口中的NRST引脚的电容容值异常
- swim接口中的NRST引脚,对GND短路
swim error [30006]问题及解决
- 板子中的CPU未上电,3.3V供电异常
- VCC引脚虚焊,但GND引脚连接正常
- GND引脚虚焊,但VCC引脚连接正常
- swim接口中,NRST引脚未连接,断线
- swim接口中,SWIM引脚未连接,断线
- swim接口中,NRST引脚和SWIM引脚都未连接,同时断线
- swim接口中,NRST引脚,对VCC短路
- swim接口中,SWIM引脚,对GND短路
- swim接口中,SWIM引脚,对VCC短路
以下网友类似案例,本人未验证!!!
开始寻找原因,来回的调试,屏蔽代码,最终才发现这个程序用到了HALT停机模式,导致空闲状态时,芯片一直处于停机模式,将
PWR_UltraLowPowerCmd(ENABLE);
halt();
这两行屏蔽掉,程序就可以正常通过IAR下载了。
gdi-error[40409]
- VCAP引脚无的2.2uF的电容,或容值异常
总结
- STM8S103F3P6,支持仅STLINK-V2供电进行烧写和在线调试
- 报上述的swim error[30200],swim error[30004],swim error[30006],gdi-error[40409]几个错误时,多数是硬件问题、连接问题,切勿上来就怀疑“芯片坏了”
- 注意线材连接的可靠性,也许在某次不经意的烧写或调试过程中,因为接触不良,会造成芯片锁死。芯片锁死再解锁嘛~!具体方法是用STVP,去改写OPTION BYTE选项页中的ROP,把它改为Read Out Protection OFF,贴个图吧,如下:
- 另外,请注意Swim接口中,NRST引脚电容的容值,注意MCU的VCAP引脚的电容,老老实实的按官方手册的建议去配置,别胡乱改来改去,如果要改,也要清楚配置的是否正确