主题中讨论的其他器件: MSP-FET
您好!
多年来、我们一直在多种不同的设计中使用 MSP430g2553器件、在这段时间内、我们看到了这些处理器的行为、我们无法理解或解释、更不用说修复了。
我们已经讨论过 FAE、有一次我们通过 FAE 来描述我们的问题、与 TI 进行了对话、但由于 TI 不知道这些问题、因此什么也没有。
因此、我们以各种方式解决了这些问题:
我们所面临的第一个主要问题是 MSP 长时间随机崩溃。 我们通过确保我们永远不会进入任何低于 LPM0的 LPM 模式来解决此问题、只要我们进入 LPM1或更高版本、我们就始终可以随着时间的推移而重复崩溃。
我们已交付数千个 MSP 器件、我们的主要最终产品包括一个板载 MSP 作为辅助协处理器、用于处理某些特定功能。 MSP 和主处理器之间的通信是通过 i2c 实现的、实际上、我们使用的每个 MSP430都通过 i2c 与"主机"系统进行通信、因此所有使用 MSP 的设计之间唯一的共同点(并且有10多种设计) 主机系统和子板之间的连接是通过 I2C 进行的。
我们提供 I2C 时钟+数据线、中断线(漏极开路)和3V3 + GND。 每个 MSP430处理器都包含一个用于2线 SBW 连接(显然是接地)的分线板、我们将其用于编程和调试。 这两条线路仅用于此目的、不用于任何其他用途。
由于调试与功能引脚分开、很难理解为什么我们会遇到问题、调试电路非常简单、多年来我们花费了大量的时间来尝试弄清我们为什么会遇到这些问题、 但我们从未能够达到它们的底部。 尤其是当调试中涉及的两条线路是专用的并且遵循数据表中的指南信息时。
目前、我将从第一个问题开始、LPM 模式崩溃、只能通过在 LPM0中运行来解决、我们希望在其他低功耗模式下运行、但在存在随机崩溃问题时无法运行。
MSP 可以通过 i2c 传输稳定的数据流、使用"超级循环"或"LPM0"、代码将永久正常运行、没有任何问题。 使用 MSP 的每个设计的功能不同、但有些设计非常重要、只需运行计时器来切换 IO 即可。 MSP 可响应 i2c 请求并更改 IO 的状态、所有这些都非常简单、在这种情况下工作正常。
一旦我们引入大于 LPM0的模式、情况就会出错。 这个问题在数小时或数天内可能并不明显、但最终、MSP 似乎锁定了、当它处于此状态时、它完全消失、我们不知道原因。
这种情况的明显答案是"使用调试器"、我们这样做了、我们将调试器连接到 SBW 引脚、直到 MSP 终止、调试器完全正常工作(我可以点击"Bbreak、MSP 暂停、我们可以看到它运行代码很开心、 我可以在 I2C 中断处理程序中放入断点、代码会很高兴地命中这些断点。)
当我们达到这种"恶意"状态时、调试器总是死机、无法中断代码- CCS 只会告诉您它无法停止目标、这就是她所写的、我们无法发现发生了什么错误、 代码为什么会死亡或实际发生了什么。
现在、正如我所说的、这种行为在所有电路板上都很常见、无论 MSP 上的应用是多么复杂或简单、因此也会使我们感到困惑、因为电源、接地、电容器和电阻器或电阻器这两者之间的关系非常小、 我们不应该在一个设计上出现这些问题、更不用说每个使用该特定处理器的设计、 我们在许多不同的芯片供应商中完成了无数个项目、在 MSP430似乎无法创建以我们希望的方式工作的设计之前、我们从未遇到过任何持续存在的处理器问题。
我们已经绘制了文档、勘误表、原理图、参考设计、我们自己的原理图、 我们的代码等等、我们看不到任何明显的东西、我们看不出为什么我们似乎有很多其他人似乎没有遇到的问题、 我进行了无数次搜索、并在谷歌上深入搜索了几百个结果、但仍然无法找到实际问题的答案。
我们发现的第二个主要问题是、多年来、MSP 的代码可能非常难以实现、 而这正是我的生产同事尝试使用 MSP-FET 仿真器(真正的 TI 仿真器)对器件进行编程时的主要原因、他们遇到了可怕的问题。 我必须返回查看特定函数的一些代码、其中涉及测试 MSP430的一些更改、但现在我在调试代码方面遇到了问题。
如果我们运行主微控制器、并且 i2c 正在运行、则 MSP 调试器将终止、直到您尝试停止调试器时、调试器提示无法停止并退出时、MSP 调试器才会终止。 如果我们停止主微控制器并终止 I2C、我们可以调试 MSP、但不能同时进行。 由于 MSP 调试和 I2C 引脚是单独的、因此我无法解释或理解这种情况的发生原因。 我和我的硬件同事在这一点上都感到困惑、真的不知道去哪里、我们已经在想象中的吸管阶段到达了混乱状态、因为什么都没有意义、我们不应该有这些问题、在电源、接地、 SBW 引脚无法正常工作、这似乎不可能、但我们在这里。
因此、我当前的问题是、当 I2C 流量被发送到 MSP 时、我无法通过 SBW 对 MSP430进行编程或调试。 我必须通过主处理器自己的调试器来停止主处理器、然后我能够在 MSP430上对代码进行编程和运行、我可以很高兴地点击"Break"、"PUT breaks"、 因此、对于需要4个连接到闪存的系统、所有操作都符合您的预期、并且需要运行 两个微控制器来调试代码的功能、这在这个阶段似乎是不可能的。
现在、它可能是一个红色鲱鱼、 但我只能看到 MSP430G2553上的 I2C 引脚具有双重用途、可用作完整的4线 JTAG。根据这一知识、我的警报铃会一直关闭。 I2C 是否会以某种方式干扰调试器连接、即使我们使用2线 SBW、这些 I2C 线路上是否存在恰好具有备用 JTAG 功能的流量?
它不应导致问题、MSP430的调试手册指示实际接口是通过专用 SBW 引脚上的特定波形来选择的(好的、RST 是一个共享的功能、但我们已将其隔离)。 由于 I2C 通信正在发生、因此出现无法对器件进行编程或调试的问题、这种情况似乎是偶然的。 这也与之前错误的行为类似、当发生 LPM0和 I2C 流量以外的任何情况时、该错误似乎会被触发。
我们是否在处理同一问题的不同表现? I2C 是这里的常见因素。
我已经阅读了这个特定处理器的勘误表、知道有一个特定的问题会导致调用不正确的异常、它详细说明了这个问题的权变措施、我已经按照它所说的那样实施了该解决方案、我还验证了当问题发生时、 错误异常得到了正确处理、并且这个特定的勘误表得到了正确处理。
我们还使用 MSP 引导加载程序的某个版本、但无论我们使用的是代码的引导加载程序版本还是直接运行的非引导加载程序版本、都会出现上述问题、因此引导加载程序不会成为此问题的一个因素。
这一问题非常普遍、以至于我们真的不知道问题可能是什么、多年来我们设计了如此多的器件、而且几乎每一个 MSP 器件都从未出现过这样的问题。 我们看不到任何明显的设计错误、它们很简单、我们很诚实地盯着它们这么长时间、阅读数据表、勘误表、参考设计、阅读论坛、但我们不能更深入地了解导致我们这么多问题的原因。
是否有人看到过我描述的行为?
有没有关于我们如何尝试找出实际问题的想法?
我们是否错过了显而易见的事实? 多么放松啊!!
我在这里附加了一个伪原理图、其中概述了所使用的通用方案、主要是将 i2c 线路更正为另一个处理器(MSP430始终是从处理器)、SBW 引脚拆分为连接器以连接 FET 仿真器。
每个特定设计的其余部分取决于使用 MSP 的实际功能、但不管它所做的是什么仅限于该 MSP、唯一的互连是通过 i2c 线。

