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.

[参考译文] CC1312R:在待机模式下生成 1mA

Guru**** 2928560 points

Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1649628/cc1312r-1ma-generation-in-standby-mode

器件型号: CC1312R
主题: SysConfig 中讨论的其他器件

我注意到 1mA 电流生成的时序模式。
AON_RTC 中的唤醒时间已从 8 小时更改为 2-7 分钟。
这与 AON_RTC 相关吗?
我附加了电流图。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shingo:

    您能解释一下图上的内容吗?  您的设备唤醒时是否有点标记?  它们间隔大约 30-40 分钟而不是 2-7 分钟 因此、不确定我是否正确解释。

    1mA 阶段、您说是每 12 小时定期发生一次? 它会在 1mA 停留几乎 3h 吗?

    此致、

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该图显示了 CC1312R 电路板的测量电流消耗。
    
    通常、它处于待机模式、由于 AON_RTC 或外部中断而变为活动状态、
    并在处理完成后返回待机模式。
    
    在待机模式下、电流消耗约为 10μA、但会发生一种现象、即即使在待机模式下、1mA 也会自发消耗、
    我在找到解决方案时遇到问题。
    
    我不明白为什么是 1mA。
    
    如图所示、存在规律性、因此我怀疑可能涉及 AON_RTC、
    如果有人知道原因或可能的解决方案、请告诉我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shingo:

    您在另一个线程中说过、当您更改为 LF_RCOSC 时、该问题会得到修复 、但发生在 LF_XOSC 时。 您能分享一下器件型号和电容值吗? 可能会随着时间的推移而漂移。

    我还是不明白这个情节,你说它每 2-7 分钟唤醒一次? 但我在图上看不到这一点。

    此致、

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更改为 LF_RCOSC 似乎未解决问题。
    
    这是因为这种现象的发生时间是未知的。
    
    32.768kHz 晶体振荡器和电容器电容:
    FC-135 32.7680KA-AG0
    引脚 4 (Q1
    ) 12pF GRM1555C1H120JA01D 引脚 5 (Q2) 15pF GCM1555C1H150JA16D
    
    每 5
    秒对图形数据进行一次采样、因此不会检测到 0.5 秒间隔、在此间隔期间、该数据以 2-7 分钟的间隔内变为活动状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shingo:

    感谢您提供更多详细信息。 您在另一个线程中说、只有复位才会使器件恢复到预期的电流消耗。 我想知道器件是否陷入故障中、就像其中一个故障

    static void nmiISR(void)   { while (1) {} }
    static void faultISR(void) { while (1) {} }
    static void intDefaultHandler() { while (1) {} }

    可以运行器件、直到在万用表中看到 1mA、然后连接 XDS110 调试器并启动 CCS 无工程调试会话、而无需复位器件。 暂停调试会话并检查调用堆栈。

    此致、

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有人告诉我、如果不进行复位、器件的电流消耗无法恢复正常、但我发现在大约 2.5 到 3 小时后器件会恢复正常、因此我在主题中发布了相关信息。
    我怀疑器件出现某种故障、但它并未属于示例中提到的任何状态 (NMI、FAULT)。
    应用程序正在正常运行。
    
    
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shingo:

    一旦您到达 1mA。

    1.您可以在暂停调试器时发布调用堆栈的屏幕截图吗?

    2.您还可以导出所有寄存器吗? 转到“View“->“Register“。 确保寄存器已更新、然后点击箭头按钮、将所有寄存器导出到 JSON 文件并在此处上传它们。

    此致、

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    连接调试器时、2.68mA 即使在待机模式下也会流动。
    
    因此、当出现 3.68mA 状态(1mA 添加到该状态)时、您应该准备 SNAP 和注册内容、对吧?
    
    使用的 CCS 版本为 10.4.0.00006。
    
    如果寄存器导出为 txt 格式、是否可以进行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shingo:

    当您看到 3.68mA 听起来不错时、停止调试器可以正常、但不确定调试器是否会阻止目标进入待机状态、以便您可以看到电流有任何差异。 先尝试一下、如果没有看到任何差异、可以先在独立模式下运行器件、然后连接调试器而无需复位目标器件、请查看调试 —SimpleLinkTm CC13XX/CC26XX SDK TI 15.4-Stack 用户指南 7.31.00.00 文档

    TXT 也可以正常工作。

    此致、

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在发生 1mA 事件时连接了一个调试器并转储寄存器内容。
    
    请查看内容。

    e2e.ti.com/.../reg0603.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shingo:

    我想在您分享此代码嗅探之前、我可能已经找到根本原因、您在这里处理 AON_RTC_CH0。  电源驱动器已使用 AON_RTC_CH0、请移除与 AON_RTC_CH0 相关的整个块并重试。 您如何注册 AonRTC_InterruptHandler?

    void AonRTC_InterruptHandler(void)
    {
    	uint32_t status;
    	
    	status = AONRTCEventGet(AON_RTC_CH0);
    	if (status) {
    		// チャンネル0の処理
    		AONRTCEventClear(AON_RTC_CH0);
    		g_aonRtcEventFlag |= AON_RTC_CH0;
    		OneshotEvent_Set( eEVTID_WOKEUP_BY_RTC_INTERVAL );
    	}
    
    	status = AONRTCEventGet(AON_RTC_CH1);
    	if (status) {
    		// チャンネル1の処理
    		AONRTCEventClear(AON_RTC_CH1);
    		g_aonRtcEventFlag |= AON_RTC_CH1;
    	}
    	
    	status = AONRTCEventGet(AON_RTC_CH2);
    	if (status) {
    		// チャンネル2の処理
    		AONRTCEventClear(AON_RTC_CH2);
    		g_aonRtcEventFlag |= AON_RTC_CH2;
    		OneshotEvent_Set( eEVTID_WOKEUP_BY_RTC_INTERVAL );
    	}
    
    }

    您是否使用 UART、我看到在寄存器中启用了它。 你能分享你的实现 UART1_CLOSE () 吗?

    此致、

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    关于 AON_RTC_CH0、通过调用
    
    AONRTCChannelDisable (AON_RTC_CH0)、在上电复位后的初始化期间将其禁用;
    
    我相信 AonRTC_InterruptHandler 是我在线程中发布的代码、但我根本没有更改它。
    
    “根本原因“是什么意思?
    
    UART 用于调试日志记录。
    
    UART1_CLOSE 的实现如下:
    
    void UART1_CLOSE
    
    (void){UART2_CLOSE (uart1Handle);
    
    GPIO_setConfig (IOID_26、GPIO_CFG_OUTPUT | GPIO_CFG_OUT_HIGH);
    
    GPIO_setConfig (IOID_25、GPIO_CFG_IN_PU);
    
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shingo:  

    如果检查 source\ti\drivers\power\PowerCC26X2.c、您可以看到已构建 ClockP 并用于 OSC校 准。ClockP 计时器在 kernel\nortos\DPL\TimerPCC26XX_nortos.c 中 初始化、它使用 AON_RTC_CH0。 通过禁用该引脚、计时器永远不会触发、校准永远不会完成、因此器件无法进入待机模式。

    请删除以下内容并重试。

    AONRTCChannelDisable(AON_RTC_CH0);



     status = AONRTCEventGet(AON_RTC_CH0);
     if (status) {
     // チャンネル0の処理
     AONRTCEventClear(AON_RTC_CH0);
     g_aonRtcEventFlag |= AON_RTC_CH0;
     OneshotEvent_Set( eEVTID_WOKEUP_BY_RTC_INTERVAL );
     }


    此致、
    Daniel
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将再次检查 PowerCC26X2.c 的内容、但
    在到目前为止的调试工作中、我发现
    
    AONRTCChannelDisable (AON_RTC_CH0)
    
    最初未实现。
    
    在这种情况下,我知道以下中断发生在意外的时间,导致通道变为活动
    
    状态:状态= AONRTCeventGet (AON_RTC_CH0);
    如果 (status
    
    
    
    ){//通道 0
    
    
    的处理 AONRTCeventClear (AON_RTC_CH0); g_aonRtcEventFlag |= AON_RTC_CH0);它不想被 Event_Set 清除,但却无意地清除。
    您有其他建议吗?
    
    关于消息“器件无法进入待机模式“、
    如何通过 μA μ s 的实际测量值来解释这一点?
    
    
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shingo:

    的确、在某些情况下、似乎有某种因素对电源驱动程序有依赖或限制、阻止您对 Power_idleFunc () 的调用进入待机状态。

    1.当您处于故障状态时,可以捕获调用堆栈吗? 您的寄存器转储显示 PC=0x000073DA、但如果没有符号、我无法分辨它是什么功能。 截取器件卡住的屏幕截图。

    2.您可以运行简化的测试,从代码和 SysConfig 中删除所有外设的使用 (SPI、UART、I2C、PWM )。 将其设置为仅通过 AON_RTC_CH2 唤醒、事件是否消失?

    此致、

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从我的角度来看,当调用 Power_idleFunc () 时,系统不能转换到待机模式,但相反,即使它处于待机模式,也会导致产生 1mA 电流。
    在这之后的一段时间内、应用的从工作到待机运行会正常工作、但待机电流仍保持在 1mA。
    我认为 PC=0x000073DA 是 Power_idleFunc() 的地址。
    在 1mA 生成后、我无法通过连接调试器来暂停该过程、因此在调试器连接时、一旦电流从 2.68mA 上升到大约 3.68mA、我将再次联系您以告知内部状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
     

    使用最初附加的图中所示的电路板、我使用防止通过 AON_RTC 唤醒的软件对其进行编程、并以相同的方式测量电流消耗。 因此、未发生 1mA 事件。 这是否意味着、当尝试在指定时间后使用 AON_RTC 唤醒时、AON_RTC 侧的某个器件会变为活动状态、导致电流消耗达到 1mA?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shingo:

    我不知道这意味着什么,可能是它唤醒到一个奇怪的状态,或者更确切地说,它不能回到待机在某些情况下,也许有一个驱动程序限制它。 这就是为什么我问道、您是否可以在所有外设都禁用(只在 RTC 上唤醒)的情况下运行测试。

    此致、

    Daniel