我为我的 LPC1517 项目重新铺设了电路板,以移动 SWD 插座。数据和时钟直接传输,但 0V 电压则绕到一个小型(1 瓦)降压稳压器的后面。如果我想从麦克风前置放大器中获得 -130dBV/√Hz 的信号,我不会使用这种 PCB 跟踪技术,但对于具有 1V 抗噪能力的数字信号来说,速度并不快,我想应该没问题--但是没有--出现了大量 ACK、Flash 写入失败之类的错误。 我剪断了轨道,换上了一条沿着数据和时钟轨道走向的导线,然后就成功了。
因此,SWD 就像是 SPI 的半双工版本,MOSI 和 MISO 复用到一个引脚上,运行频率为 1MHz;所以重要的时间是时钟转换。其他都不重要。因此,可能有三种情况会妨碍它的工作:边沿过快导致接地反弹,边沿过慢导致抖动,或者目标阻抗过高导致干扰进入。因此,我尝试了几种方法--220pF 跨时钟到地、1k 下拉和 10k 串联阻抗--1k 似乎最有希望,但没有真正成功。
LPCXpresso 崩溃了 - 我强行退出,然后重新启动。
然后一切正常
所以,我比以往任何时候都更加困惑。
同一批的另一块板容易出错,但是如果我的示波器接地夹连接到电路 0V,则可以正常工作。
我听您说过,这意味着电路应正确接地,但电路 0V 与电源接地相连,而示波器却没有。
另一个令人困惑的问题是,从提交闪存写入" 时出现的"目标错误显示"system rejected access at location x"; 但我遇到的所有错误中,位置 x 都在 RAM 中。
不同的电路在机柜中与开关电源相邻时不会连接。把它从柜子里拿出来,就可以正常使用了。
我觉得这一切都很令人费解,因为我一直使用 SPI,速度是它的十倍,而且没有过多考虑 PCB 跟踪问题。如果效果这么差,我的 LED 显示器就会像启动器失灵的荧光灯管一样闪烁。
有人有什么想法吗?
我花了三天时间确信这是硬件故障,直到我意识到我在初始化代码中翻转了两个引脚。突然之间,传感器数据变得有感知了,但是在我玩 Slope Game 时为了放松而发生迷你崩溃之前,情况并非如此。
有趣的是,即使是微小的 PCB 布线选择也会导致重大问题,尤其是像 SWD 这样的敏感信号。这让我想起了大米纯度分数的不可预测性--有时,看似简单的事情会呈现出意想不到的复杂性!
> 有人有什么想法吗?
我会尝试降低 SWD 时钟频率,看看效果如何。
我建议是一个数量级,即 100 千赫或更低。
这样调试并不有趣,但可以证明一点。
我创建了一个名为 Debug 的单例和一个始终位于顶部的基本文本框。我现在可以不打印,而是
Debug.output(text)
因此,在我测试时,它就会出现在游戏中。当你只有一台监测时,有时,几乎每时每刻都会让事情变得容易得多。
模拟人生 4》满意度积分作弊器最近派上了大用场,当时调试任何东西的唯一方法就是实时更新我的视网膜所观察到的确切坐标,而使用 print() 会很麻烦,而且会激怒戈多。"减少文字印刷量"
此外,它还能实时捕捉仅出现的问题,而无需密切关注 Godot 输出日志。
不太确定你期望我在参考手册中找到什么,而我在帖子中还没有提到过。在 LPC15xx 手册的三页中,除了连接图和两个引脚都有上拉功能外,几乎没有其他内容。它甚至没有说明 SWCLK 只是输入,而 SWDIO 是双向的。我的大部分信息来自ARM关于该主题的白皮书。
至少我很高兴恩智浦不再建议在 SWCLK 上使用下拉电阻(pullDOWN)了--那会严重破坏抗噪能力,尤其是在您碰巧获得与内部上拉电阻相同的电阻时。
无论如何,我进一步进行了实验,并在SWCLK输入中添加了施密特触发信号。我尝试了 74LVC1G17 和一对 74HC14 的栅极。结果令人震惊。在我追踪不太好的板上,错误率从65%下降到零。100 次尝试中没有一次编程失败(1G17 和 HC14 没有区别)
然后,我将导线延长到标准的 150 毫米以外。在 LPC-LINK 和 targert 之间的 1 米引线上没有出现过任何故障。3 米处仍未出现故障。除此之外,无缓冲 SWDIO 线路上电缆的体电容也成了问题,误差逐渐增大。
下一步是在使用高噪声开关电源的电路上进行试验!
磁滞似乎可以解决问题,PIO0_18 引脚也有一个磁滞选项,但我敢打赌,在 SWD 操作期间,它不会打开。但我想知道,如果我在软件中设置了 IOCON 寄存器的第 5 位,那么在下一次编程时,迟滞功能是否仍会开启?
想尝试的人请注意:您的 SWCLK 输入(74LVC1G17 的输入)现在需要一个下拉电阻。我用的是 3.3kΩ。这个值并不重要,因为连接太短,不能被视为传输线,所以从技术上讲,它不是"终端" 。
你好 IanBenton、
TIC
-----------------------------------------------------------------------------------------------------------------------
注:如果本帖回答了您的问题,请点击正确答案按钮。Thank you!
-----------------------------------------------------------------------------------------------------------------------