This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我们 要将器件置于低功耗关断模式、我们使用空闲模式和通过 CAN 消息唤醒。 此方案工作正常。
但是、我们需要进一步降低电流、因此需要将器件置于待机或 HALT 模式、但需要在 CAN 消息上唤醒。 如何执行此操作?
是否有任何一个使用了 CAN 消息作为唤醒的待机或 HALT 模式?
请提供建议。 我们需要尽快解决这个问题。
此致、
Pandurang Khutal
Pandurang、
查看您当前的数字,您似乎根本没有进入低功耗模式。
一些与 LPM 相关的位/寄存器受 EALLOW 保护。 可以想象、EALLOW 在代码的其他位置被意外关闭。 在调试完成之前、请注释所有 EDIS 指令。
连接调试器后、在执行 IDLE 指令之前、检查 LPMCR0寄存器是否写入了正确的值。 实际上、您应该在调试器已连接的情况下单步执行代码、以确保代码按应有的方式工作。 例如、它实际上是否跳转到 RAM 来执行闪存断电函数和 IDLE 指令?
请"按原样"在 C2000ware 中运行 Example_2806xHaltWake 项目、并查看您获得的当前编号。 如果您使用该代码作为参考、您应该能够轻松找出代码的错误。 它还会告诉您在您自己的硬件上需要的数字。 此外、您的硬件是否能够测量仅流入您的 MCU 的电流? 换句话说、您测量的电流是否也会流向电路板上的其他一些元件?
如果您使用串联电阻器进行电流测量(以利用欧姆定律)、请非常小心选择的值。 选择高阻值电阻器以获得可测量的压降很有吸引力(因为 HALT 模式电流在 uA 领域)。 但是、这样一个电阻器也会在加电期间使内核"电流"耗尽、并将器件置于一个未定义的状态。 考虑到所有3个 LPM 中的电流值相同、我怀疑这是发生的情况。 您的代码可能根本无法执行。 这就是我希望您在连接调试器的情况下单步执行代码的原因。
无需通过代码禁用待机或 HALT 模式中的外设时钟。 在设计中自动完成的操作。
只有在 IDLE 指令成功执行后、才会得到该错误。
您是否按照我的建议从 C2000ware 运行示例代码? 这一步非常重要。
当电流处于 uA 范围内时、依靠电源中的显示屏并不是一个好主意。 请使用在 uA 领域具有良好精度的台式计量器。
您好、Haresh、
根据您的建议、我使用了万用表、并在所有三种模式下测量了电流。 这些电流低于。
空闲睡眠模式电流40mA
待机睡眠模式电流29mA
停止睡眠模式电流26mA
通过从 RAM 运行 LMP 代码、我能够将器件置于 HALT 模式、但它不会在 CAN 消息上唤醒。 您能否使用上面的代码检查什么会导致问题的发生?
我在待机模式下检查了器件是否正确唤醒了 CAN 消息以及用于中止模式唤醒的相同逻辑、但器件未被唤醒。
谢谢、
Pandurang Khutal
Pandurang、
26mA 的 HALT 模式电流看起来不正确。 器件未处于 HALT 模式或您的仪表读数不正确。 这是 C2000ware 的示例代码吗? 请确认。 如前所述、在 uA 领域测量电流非常棘手。 如果仪表没有足够的分辨率/精度,您可能会得到错误的读数。 请记住、您可以在尽可能低的范围内获得最佳精度。 当您启动代码时、您处于 MCU 的"运行"模式、其中100mA 范围是合适的、但在 HALT 模式中、10mA 范围是合适的。 同样、当您从 HALT 模式中唤醒时、您会回到运行模式。 您使用的仪表应具有出色的自动测距功能、能够无缝切换范围、而不会中断 MCU 的电源(或电流不足)。 我们在实验室中使用6 1/2位万用表。 您使用的万用表的品牌/型号是多少?
如何确保仅测量流入 MCU 的电流? 我们讨论的是哪个电源轨(Vdd 或 Vddio)? 您是否使用片上 VREG?
在不连接任何万用表的情况下执行"使用 CAN 的 HALT 模式唤醒"测试。 一旦您使该流量正常工作、请将万用表带入实验中。
您是否已确保满足 HALT 模式唤醒信号的最小脉宽要求(如数据表中所示)? 您能否提供唤醒信号的示波器捕获?
CAN 比特率是多少?
您使用的是什么时钟源?
您能否与我私下分享您电路板的原理图?
总之、这是我希望您遵循的调试顺序:
您好、Haresh、
我已经尝试 使用 C2000ware 的示例代码 、所消耗的电流为@26mA、是相同的。 为了测量电流、我们使用 Tenma 72-7720万用表。
我们尚未使用片上 VREG。 我们将测量电路板的总电流 、而不是 Vdd 和 Vddio。
为了实现唤醒、我们在没有将万用表与连接到电路板的电源串联的情况下尝试了、但控制器仍然无法唤醒。 CAN 比特率为250kbps。 我们使用外部 OSC 作为时钟源、PLL 使能、内核频率为90MHz。
根据数据表、XCLKOUT 输出在 HALT 模式中默认被禁用。 控制器已正确唤醒。
一个观察结果是、我们使用来自 TI-CAN1042HVDRQ1的 CAN 收发器、它将 STANDBY 引脚作为控制引脚。 控制器进入 HALT 模式后、引脚的状态是什么。 引脚状态将保持还是将变为三态?
我们现在没有用于 直接监控 Vdd 和 Vddio 线的板。 进入电路板的电源为12V、通过使用 LDO、我们生成了进入微控制器的3.3V 电压。 我们通过将万用表与12V 电源串联来测量电流。
问题是控制器未通过 CAN 消息在 HALT 模式中唤醒。 但使用相同的逻辑、控制器在待机模式下唤醒。 请建议。
谢谢、
Pandurang Khutal
Pandurang、
如前所述、您需要使用工作台万用表、其中的6个1/2数字表示 HALT 模式电流。
您不应测量电路板的总电流以实现暂停。 您必须仅测量流入 VDD 和 VDDIO 电压轨的电流。 正如 Mark 提到的、电路板上的其他组件可能会导致这个26mA 的电流。 如果您有用于 MCU 电源轨的串联铁氧体磁珠、则可以将其拆下并在该点插入万用表。
关于收发器、GPIO 引脚确实保持其状态为 HALT。 对于唤醒、您是否测量了 CANRX 引脚的脉冲宽度?
您好、Haresh、
根据我们的讨论、我们修改了代码并在电路板上进行了测试、但仍然无法通过 CAN 消息将控制器从 HALT 模式唤醒。
我更改了唤醒源、而不是 CAN 消息上的唤醒。我使用 GPIO 引脚27作为唤醒源、并从 HALT 模式正确唤醒。
您能不能建议为什么它没有从 CAN 消息唤醒?
谢谢、
Pandurang Khutal