主题中讨论的其他器件:AM62A7
工具与软件:
您好!
我们需要启用 PMIC 的深度睡眠模式、并使 GPIO3保持深度睡眠使能和禁用功能。
我们使用 AM62A7电路板和该 PMIC。 我们可以如何以及在哪里配置它。
我们使用的是 tps6594-core 和 tps6594-i2c 的默认驱动程序。
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.
工具与软件:
您好!
我们需要启用 PMIC 的深度睡眠模式、并使 GPIO3保持深度睡眠使能和禁用功能。
我们使用 AM62A7电路板和该 PMIC。 我们可以如何以及在哪里配置它。
我们使用的是 tps6594-core 和 tps6594-i2c 的默认驱动程序。
您好、Nicholas:
我阅读了相关内容、并实施了本用户指南中所述的一切内容。
下面我将添加使其进入 S2R 状态的命令
所以、
首先、我检查了 INT_MISC 寄存器、该寄存器具有 BIST_PASS_INT、因为在注意中提到了 它应该被清除。
root@am62axx-evm:/opt/edgeai-gst-apps# i2cget -f -y 0 0x48 0x66 0x00
此处显示它已被清除。
然后、我检查了 GPIO3是否已经很低、所以我会使用 am62a7 EVM、以检查我是否喜欢它
root@am62axx-evm:/opt/edgeai-gst-apps# echo 335 > /sys/class/gpio/export root@am62axx-evm:/opt/edgeai-gst-apps# cat /sys/class/gpio/gpio335/ active_low device/ direction edge power/ subsystem/ uevent value root@am62axx-evm:/opt/edgeai-gst-apps# cat /sys/class/gpio/gpio335/value 0
root@am62axx-evm:/opt/edgeai-gst-apps# i2cget -f -y 0 0x48 0x7d 0x43
root@am62axx-evm:/opt/edgeai-gst-apps# i2cset -f -y 0 0x48 0x86 0x00 root@am62axx-evm:/opt/edgeai-gst-apps#
尽管我尝试了待机模式并且运行良好、但我进入了待机模式、但我不知道如何 WKUP 并退出待机模式。 还告诉我在待机模式下如何退出它。
最后告诉我 S2R 我是不是犯了什么错误? 如果正确、请告诉我如何获取 S2R 状态以及如何从中进行 WKUP。
谢谢!
好的
您好、Nicholas:
是的、我们将在 Linux 中使用 EVM、编译为 tisdk 9.2与 tps6594驱动程序。
当前、如果我强制写入0x01寄存器0x86并驱动GPIO3为低电平、系统将进入睡眠模式。 当我驱动为GPIO3高电平时、系统会唤醒、但它不会恢复之前的会话、而是从基础 U-Boot 重新启动。
我们的要求是系统应在收到唤醒信号后立即唤醒并无缝恢复之前的会话。 您能否澄清一下这种行为是否可以从NSLEEP2深度睡眠功能中获得、或者其实现或配置是否存在问题?
此外、当我将 PMIC 置于深度睡眠模式时、处理器会将DDR0_RESET_N信号驱动为低电平、从而将 LPDDR 复位。 这是否就是为什么系统从 U-Boot 启动而不是在唤醒后恢复上一个会话的原因?
如果是这种情况、我如何控制DDR0_RESET_N信号以防止其变为低电平并复位 LPDDR? 值得注意的是、当我将处理器置于深度睡眠模式时、DDR 不会复位。 您能否提供有关确保 LPDDR 在 PMIC 深度睡眠模式期间保持活动状态的指导?
您好、Alok、
您是否确定 PMIC 侧的 GPIO3读数为低电平?

GPIO3处于低电平且 ENABLE 为高电平将使您直接进入 S2R 模式、这意味着您无法从终端进行写入/读取。 这就是为什么请读回上述寄存器进行确认。 还可以在下面看到、GPIO3和使能引脚之间有一个简单的引脚对引脚关系。 所有这些都将其发送给 Sitara 团队、作为此 EVM 的作者、他们在此过程中将能够更好地提供帮助。


导致可能复位的原因可能是当 PMIC 处于 S2R 状态时使能信号变为低电平、在这种情况下会关闭电源轨、因此当发送 GPIO3为高电平时、类似于发送使能高电平、这就是它看起来像是冷上电的原因。
您可以通过检查 BUCK4上的电压输出来确认这一点、这在 S2R 模式下将为高电平。
BR、
尼古拉斯·麦克纳马拉
尊敬的 Alok:
PMIC 不负责将 AM62A SoC 置于深度睡眠状态、而 AM62A 上的 Linux 操作系统将完成这一任务。
您可以查看有关使用低功耗模式的 Linux SDK 文档: https://software-dl.ti.com/processor-sdk-linux/esd/AM62AX/10_01_00/exports/docs/linux/Foundational_Components / Power_Management / pm_low_power_modes.html
以下是有关如何配置 PMIC 的一些其他信息: www.ti.com/.../slvucm3.pdf
此致、
Anshu
Anshu、您好!
我们使用 Linux 在 AM62A SoC 上启用了深度睡眠模式。 不过、该状态下的功耗仍为0.5W、明显高于我们的目标。
为进一步降低功耗、我们尝试根据记录的指南将 PMIC 转换为低功耗状态。

最初、当 AM62A SoC 进入深度睡眠时 PMIC_LPM_EN0 没有将信号置为低电平。 但是、在配置之后 PMCTRL_SYS 寄存器中找到、
![]()
我们观察到了这一点 PMIC_LPM_EN0 当 SoC 进入深度睡眠时、生效为低电平。
尽管如此,问题仍然存在:不久之后 PMIC_LPM_EN0 置位为低电平时、信号变为悬空、导致电路板复位、从而导致系统从 U-Boot 重新启动。
您好、Nicholas:
我已经尝试取消屏蔽 nsleep1、以便在深度睡眠期间影响主域 IO 电源轨。 我曾通过向 GPIO3提供低逻辑(已配置为 nsleep2并将其保持)并将其置于深度睡眠模式、但现在即使我向 GPIO3引脚提供高逻辑、它也不会退出深度睡眠模式。 以下是我执行的命令
i2cset -f -y 0 0x48 0x7d 0x03
i2cset -f -y 0 0x48 0x86 0x00
我还使用清除这些中断
i2cset -f -y 0 0x48 0x63 0x02
i2cset -f -y 0 0x48 0x65 0x03
是因为我解封了 nsleep1、现在它不会从深度睡眠中消失?
我的目标是在 MCU 域内实现一个中断信号、该信号可以通过在深度睡眠期间将 GPIO3引脚驱动为高电平来唤醒 PMIC。 我正在就这种办法的可行性寻求指导、并就其实施提出咨询意见。
此致、
Alok Yadav
尊敬的 Alok:
您能否确认您在 AM62A 上使用的是深度睡眠模式、而不是 I/O 加 DDR 低功耗模式?
这将帮助我们了解要采取的调试步骤。
对于 I/O + DDR、 PMIC_LPM_EN0变为低电平、PMIC 将关闭 VDD_CORE 和模拟电源轨。
对于需要所有 PMIC 电源轨保持开启状态的任何其他低功耗模式(例如 DEEP SLEEP)、PMIC_LPM_EN0 不必变为低电平。
谢谢!
Anshu
尊敬的 Anshu:
我将学习适用于 AM62AX 的 Processor SDK Linux、这里是提到深度睡眠的部分 
我将使用此命令
echo mem >/sys/power/state
进入深度睡眠模式。
IO+DDR 模式功耗比深度睡眠低吗? 如果是、那么我们可以保存上一个会话并直接唤醒该会话吗?
最后、如何使用 Linux 实现 IO+DDR 模式?
PMIC 中所述的 IO+DDR (STR)状态是否仅与 am62a 的 IO+DDR 模式配合使用、或者深度睡眠可以正常工作?
谢谢!
好的
尊敬的 Anshu:

这是我使用 Linux 将处理器置于深度睡眠模式之前和之后的 PMIC_LPM_EN0图像。

在 AM62x 的官方 SDK 文档中、我们提到它不支持 IO+DDR 模式。
您能否确认您所指的模式以及哪个处理器支持此模式。
此外、我们已能够使用 PMIC_LP_EN0信号将 PMIC nsleep2设置 为低电平、方法是将 PMCTRL_SYS 寄存器(0x43018080)设置为0x15并将 AM62A 处理器进入深度睡眠状态。 但现在、当我通过 MCU GPIO 提供 WAKUP 信号时、不会唤醒。
这仅在我通过给予 nsleep2=0使 PMIC 进入深度睡眠 FSM 状态时发生。
此致、
好的
尊敬的 Anshu:
您能解释一下吗、
我们已经能够使用 PMIC_LP_EN0信号将 PMIC nsleep2置于低电平、方法是将 PMCTRL_SYS 寄存器(0x43018080)设置为0x15并将 AM62A 处理器置于深度睡眠状态。 但现在、当我们通过 MCU GPIO 提供 wakup 信号时、它不会唤醒。 基本上 PMIC_LP_EN0 没有变为高电平。
这仅在我通过给予 nsleep2=0使 PMIC 进入深度睡眠 FSM 状态时发生。 使用 MCU GPIO 唤醒来唤醒正常的处理器深度睡眠。
谢谢!
好的
尊敬的 Anshu:
我们使用的是 AM62A7-EVM 电路板、这是相关分区的原理图、 
这是更改前的回读、
root@am62axx-EVM:~# devmem2 0x43018080
/dev/mem 打开。
存储器映射在地址0xff84944000。
在地址0x43018080 (0xffffff84944080)处读取:0x00000010
这是更改后的回读、
root@am62axx-EVM:~# devmem2 0x43018080 w 0x00000015
/dev/mem 打开。
存储器映射在地址0xff92419000。
在地址0x43018080 (0xffffff92419080)处读取:0x00000010
在地址0x43018080 (0xffffff92419080)处写入:0x00000015、回读0x00000015
在将 PMIC 置于深度睡眠状态(即向 NSLEEP2信号提供低值)后 、VDD_CORE (PMIC Buck1)和 VDDA (PMIC LDO4) 均为低电平。
只有 Buck4和 Buck5为高电平。
尊敬的 Anshu:
我们这样做了、结果相同。 我们必须将其保持接地、否则 PMIC_LP_EN0信号会下拉 PMIC_ENABLE 信号、从而禁用 PMIC。 一旦我们将其保持接地、信号就会进入配置为 nSLEEP2的 GPIO3信号、并将 PMIC 置于深度睡眠 FSM 状态。 AM62A 的 PMIC 用户指南中

这里提到了在我们为 nsleep2信号提供低电平时的 IO+DDR 模式、 
能否仅确认从深度睡眠状态唤醒需要多长时间?
谢谢!
好的