Other Parts Discussed in Thread: SYSCONFIG
器件型号: CC1312R
主题: SysConfig 中讨论的其他器件
我注意到 1mA 电流生成的时序模式。 AON_RTC 中的唤醒时间已从 8 小时更改为 2-7 分钟。 这与 AON_RTC 相关吗? 我附加了电流图。
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.
Other Parts Discussed in Thread: SYSCONFIG
器件型号: CC1312R
主题: SysConfig 中讨论的其他器件
我注意到 1mA 电流生成的时序模式。 AON_RTC 中的唤醒时间已从 8 小时更改为 2-7 分钟。 这与 AON_RTC 相关吗? 我附加了电流图。
该图显示了 CC1312R 电路板的测量电流消耗。
通常、它处于待机模式、由于 AON_RTC 或外部中断而变为活动状态、
并在处理完成后返回待机模式。
在待机模式下、电流消耗约为 10μA、但会发生一种现象、即即使在待机模式下、1mA 也会自发消耗、
我在找到解决方案时遇到问题。
我不明白为什么是 1mA。
如图所示、存在规律性、因此我怀疑可能涉及 AON_RTC、
如果有人知道原因或可能的解决方案、请告诉我。更改为 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
尊敬的 Shingo:
当您看到 3.68mA 听起来不错时、停止调试器可以正常、但不确定调试器是否会阻止目标进入待机状态、以便您可以看到电流有任何差异。 先尝试一下、如果没有看到任何差异、可以先在独立模式下运行器件、然后连接调试器而无需复位目标器件、请查看调试 —SimpleLink CC13XX/CC26XX SDK TI 15.4-Stack 用户指南 7.31.00.00 文档
TXT 也可以正常工作。
此致、
Daniel
我在发生 1mA 事件时连接了一个调试器并转储寄存器内容。
请查看内容。
尊敬的 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、我将再次联系您以告知内部状态。