我设计了一个简单的STM32开发板。下面是原理图和PCB布局图:
上图中仅显示了与我的问题有关的设计部分。
我的问题是:我试图使用STM32 Discovery Board的内置ST-Link对该自定义开发板进行编程,但还无法成功。PC上的ST-Link Utility应用程序可以识别编程器,但无法检测到目标MCU。我收到的错误消息是:“目标未连接”和“ ST-Link USB通信错误”。
以下是有关我的问题的一些相关事实:
- STM32发现板工作正常:我可以使用其内置的ST-Link对其板载STM32 MCU进行编程。还行吧。
- STM32 MCU已按照正确的方向焊接在定制板上。我检查了两次。
- 我已经检查了VDD和SWD迹线。它们连接良好(没有焊接问题)。Boot0引脚为0V。NRST引脚为3.3V。
- SWD电缆很短,只有7-8厘米长。
- 我的自定义板上的STM32与发现板上的STM32具有相同的类型。
我已按照STM32 Discovery Board手册中的说明进行操作,该手册说明了如何使用Discovery Board对外部STM32 MCU进行编程。更具体地说,我卸下了2个CN3跳线,然后按照下表连接板子:
我还卸下了发现板上的电桥SB11(以便NRST引脚可以正常工作)。
- 我已经尝试过ST-Link Utility应用程序和Keil。我收到的错误消息是相同的。
- 最初,我没有连接上表(SWO)上的引脚6,因为据我所知这不是必需的。但是在那之后我也将其连接起来,但是仍然无法解决问题。
- 我还从引脚NRST到GND添加了一个100nF的电容,然后从该引脚向VDD添加了一个100k的上拉电阻。问题仍然存在。
- 我也尝试过使用ST-Link Utility程序的“重置时连接”模式。也没有运气。
我怀疑设计可能有问题,但是我不确定。请帮我解决问题。
非常感谢你 :)
据我所记得,您必须同时为st-link和自定义板供电。定制板的SWD连接器中的3.3V必须为st-link提供3.3V的电压以进行检测。
—
davidrojas 16/12/29
@davidrojas:谢谢您的回答。好吧,目前我是通过PC上的USB端口为ST-Link供电的。定制STM32电路板由单独的外部3.3V电源供电。但是,这两个板的接地已经连接(如上表所示)。同样,来自我的定制板的3.3V也连接到ST-Link上的VDD_TARGET。你觉得够了吗?
—
user3286500 '16
应该足够了,是的。另一个问题可能是线SWDIO和SWCLK的长度和布局,因此,过去我遇到了间歇性连接的问题。它们必须尽可能短。也尝试降低SWD的速度。
—
davidrojas
我已将SWD速度从默认的1.8 MHz降低到400 kHz以下,但仍然没有成功。至于电缆的长度,在我的设置中,SWD连接的总长度(从ST-Link到目标STM32)约为12-13厘米。这仍然在限制范围内吗?
—
user3286500 '16
您是否注意到芯片下方的接地点是物理隔离的,实际上并未连接到任何接地引脚?接地引脚之间的实际连接遵循芯片外部的弯曲路径,并且其中一些实际上可能是隔离的。您需要调整间隙,以使接地倾倒处没有孤立的孤岛,这将有助于确保芯片的所有接地引脚都更接近相同的电位。
—
Dave Tweed