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.

[参考译文] AWRL6432:如何在空闲模式下完全启用 I2C?

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1405763/awrl6432-how-to-fully-enable-i2c-on-idle-mode

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

工具与软件:

团队成员、您好!

我的一个客户想在 IDLE 状态下使用 I2C。 为此、他们使用 mmwave_L_SDK_05_04_00_01注释掉了 power_management.c 中 powe_idle3entryhook ()内的块

//选通 I2C 时钟

// PRCMPeripheralClkEnable (Power_module.dbRecords[8]、PRCM_GATE_CLK_DISABLE);

// CSL_REG32_fins ((CSL_APP_RCM_U_BASE + CSL_APP_RCM_IPCFGCLKGATE0)、APP_RCM_IPCFGCLKGATE0_IPCFGCLKGATE0_APP_I2C、

//          PRCM_GATE_CLK_DISABLE);

但是、即使在上面注释掉了 I2C 门块、I2C 通信也似乎不时会失败。 我们能否提供一些指导、如何在空闲状态下使用 I2C?

此致、

Victor Park

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

    您好、Victor:
       我已经加入了我们的软件专家。 请允许我们在一天左右提供回复。

    谢谢。此致、
    Sivaprasad

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

    您好、Victor:

    需要尝试以下操作:

    1.首先将问题隔离到 idle3entryhook ()和 idle3resumehook ()函数。 如果这两个函数都为空(所有注释掉的函数都是空的)、那么 I2C 是否仍然可以工作?

    2.如果在上述情况下 I2C 正常工作,那么这些功能中的任何一个都存在问题。 请一定要在 idle3resumehook ()函数中注释掉"// Ungate I2C clock"部分。

    请告诉我尝试这些方法的结果、我们可以继续这样做。

    此致、

    TIM

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

    您好、Tim

    1.我 注释了两个函数。 但 I2C 读取不起作用。

    2.不起作用  

    还有什么可以尝试的呢?

     在空闲模式下、无法在每个帧之间使用 I2C?

    您能举几个例子进行说明吗?

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

     、您好!

    请就客户的上述问题向我们提供帮助。

    此致、

    Victor Park

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

    尊敬的 Taeheon、Victor:

    您确定器件是进入空闲模式、而不是进入深度睡眠模式吗? 您是否能够在空闲函数中设置一个断点以确认您将进入空闲状态? 否则、器件可能会转而进入深度睡眠状态。 您可以进入 SysConfig、并在"Power"选项卡中调整时序阈值以进入深度睡眠和空闲模式。

    如果我们确认您实际上正在进入空闲模式功能、那么我们可以进行进一步调试。

    此致、

    TIM

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

    Tim、您好!

    根据你的意见,我测试如下:

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    SDK:MMWAVE_L_SDK_05_04_00_01、

    CCS:12.6、

    来源: motion_and_presence_detection 示例、

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    1. LPDS 的阈值设置为较大的值 、例如 睡眠阈值(99999999、99s)。

    2.将帧速率设为2s (2000)、如下所示:

    此设置用于测试目的、稍后将使用5fps (200)。

              

    之后、当我继续调试时、如下所示、Power_idleFunc (slpTImeus)发生一个错误。

    4.然后我用 Tera Term 检查了日志。 您可以在下面看到结果。

    它是在 Power_disablePolicy()之后打印的;

    slpTimeus 约为1.9s (帧速率:2s)。 PwrStateTaken 为2 (power_idle)。

     

    如您所说、它可能已设置为深度睡眠、我如何将其设置为空闲?

    此致、

    Taeheon

     

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

    大家好、Taeheon:

    您是否能够在 idle3resumehook()和 idle3entryhook ()函数中设置断点? 或者设置 print 语句、然后从这些函数查看 TeraTerm 中的输出? 由于 PwrStateTaken 是 power_idle、因此它应该进入空闲状态、我不希望它进入 LPDS。

    此外、您是否使用与默认设置不同的配置配置了 I2C?

    您还提到 I2C 有时会出现故障。 这是否意味着它有时会工作? 是否存在正常工作或不正常工作的条件?

    禁用低功耗模式时、I2C 是否正常工作?

    此致、

    TIM

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

    Tim、您好!

    您的问题的答案如下:

    1.我们可以在 idle3resumehook  ()和 idle3entryhook ()函数中通过 Teraterm 查看 print 语句的输出。

    2. I2C 只会将 传输模式从阻塞更改为回调和 自有目标地址。

    3. I2C 在 Power_enablePolicy ()和 Power_disablePolicy ()之间似乎不起作用。

    4.如果我把低功耗模式设置为禁能、那么 I2C 运行正常。

    此致、

    Taeheon  

      

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

    大家好、Taeheon:

    感谢您的确认。 您能否再次确认您尝试使用 idle3_resume/entry()两个函数进行尝试 空?

    我们现在正在更深入地探讨这个问题、当我们发现任何其他事情可以尝试时、我会告诉您。

    谢谢!

    TIM

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

    Tim、您好!

    感谢您的帮助。

    注释掉 idle3resumehook ()和 idle3entryhook ()函数中的所有代码并设置低功耗使能后、我测试了 I2C 通信是否正常。 因此、I2C 无法正常工作。  如果您看到任何我可以尝试的内容、请告诉我。

    此致、

    Taeheon

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

    您好、Taehon:

    让我内部检查一下、我希望能在一两天内回复。

    谢谢!

    TIM

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

    大家好、Taeheon:

    我已经和我们的研发团队确认、即使在空闲模式下、CPU 也处于深度睡眠模式。 要使用 I2C、首先需要将内核从深度睡眠状态唤醒。 有关唤醒中断列表、您可以参考 TRM。 请参阅第 23.6节:来自 PRCM 的唤醒机制。

    但是、没有特定的 I2C WIC 来唤醒器件、因此您可能需要发挥创造力、找到唤醒 CPU 的权变措施。

    如果您想使用 I2C、我建议最简单的替代方案是将 lowPowerCfg 设置为0、而不为此使用低功耗模式、因为在功耗方面、您可能看到的最佳节省效果可能是选通少数外设。

    此致、

    TIM

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

    Tim、您好!

    我想知道是否可以动态更改 LowPowerCfg 模式(enable <-> disable)。

    此致、

    Taeheon

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

    您好、Taehon:

    您能说明一下您想以什么方式动态更改它吗? 您是否建议在器件发出线性调频脉冲时、有时进入低功耗深度睡眠模式、有时则不进入? 或其他方面的内容。

    谢谢!

    TIM

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

    您好、Tim

    有。 在 lowPowerCfg = 1下运行时、我希望在下一个周期帧中动态更改为 lowPowerCfg = 0。 另外、我想要相反的结果。  

    是否是更改 power_management.c 中 powerManagementTask ()中 gMmwMssMCB.lowPowerMode = 0等值的正确方法?  我被使用 gMmwMssMCB.lowPowerMode 的任务弄糊涂了。 您能告诉我正确的方法吗?

    此致、

    Taeheon

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

    您好、Taehon:

    很抱歉耽误你的时间。 可能有几种方法可以做到这一点。 在"Power_SleepPolicy"中、此函数确定采用哪种电源模式(Power_setLowPowModeTaken)。 您可以更改该函数逻辑以跟踪帧计数、并且仅允许在奇数帧上进入低功耗模式。

    您也可以按照您提到的方法设置  gMmwMssMCB.lowPowerMode LOW_PWR_MODE_ENABLE 或 LOW_PWR_MODE_DISABLE 、具体取决于帧编号。

    欢迎您尝试任何一个选项,我不确定他们会有什么副作用,除了提高功耗。

    此致、

    TIM

x 出现错误。请重试或与管理员联系。