一. 前言3 j2 q+ o9 _, @9 ~& ?. l 有客户反映在用 ST-Link 调试、下载 ST8S 系列单片机程序的时候出现了问题, 同一块板子在二十几天前调试均正常,现在重新修改就下载不进去,无法调试。问题描述如下: 1、无法下载,错误显示为:**Connection error(usb): swim error[30006]:comm init error:chip does not answer 换了电脑、电脑重启、换了 ST-Link 均无效。 2、用 ST-Visual programer 下载出现错误:Cannot communicate with the board 而导致无法下载。 ) h3 o4 B- d7 P& A 二.SWIM Error[30006]中的问题分析 解释这个问题,分别从软硬件的角度去分析原因。. m7 R$ K3 Y' T% f " n. C7 [% j" L$ d 1. 软件方面 检查是否屏蔽了 SWIM 模块,打开对应 STM8S 单片机对应的参考手册,参阅 SWIM disable 部分的寄存器,Description of global configuration register(CFG_GCR),检查软件是否对其 bit0 位进行了屏蔽。# a& t8 u' O+ ?9 Z2 T0 T* Z ; o' Q6 t8 K9 v* O9 h5 a( r 2. 硬件方面 确信不是软件方面的原因后,最好选用一个简单的 STM8S 的标准示例库函数,或自己编写一个空的函数工程,进一步排除软件方面的干扰。然后检查硬件连接接口。% W0 J$ U6 U; J0 W 关于 SWIM 的标准调试接口,很简单,与单片机对应的 GPIO 口直接相连即可。 8 f* J; B5 u& N G 通过万用表测量,检查其硬件设计的接口是否正确。端口正确的话,检查与调试器 ST-Link 的连接。- B$ N n" J* U) @* J+ g 关于 ST-Link 部分的接口,可以参见 UM1075 的手册。通过比对,发现其对应的接口线的定义分别如下图,有些客户制板时,并不是按照这样默认的引脚定义,此时需要按下图的定义进行跳线。 + z8 r( [ U' B+ s* M- Q6 P 7 w/ A0 m! V- w8 [; u, x4 z 当该客户按照上述的定义重新连接 ST-Link 后,程序能重新下载了。 / |/ f: w+ A- z! h6 N( e/ r( k 三. 结语4 `" i0 e3 L. [2 \0 o7 P7 i 在分析该 swim error[30006]的原因的时候,也发现,如果 MCU 的电源不供电,也会导致该错误的产生,所以,简单总结下分析方向:软件 SWIM 模块,硬件电源是否上电,硬件的接口是否连接正确。- p5 n, V' P& \/ M0 P3 D4 |! | ; v8 X, \+ Z1 q6 m% h1 \$ n% P& @ |