662x 底电流漏电调试分析(pmu_dump)

wen sir · 403次点击 · 11个月前

进了睡眠模式时,电流达不到规格书标称的电流值时,需要检查是否有哪些因素导致睡眠异常。

如进入不了睡眠 ,功耗偏大等等


(1)[PMU] prevent_status=00000200  
这里有任何一位置位,都不会进入睡眠状态,用于查看是哪个事件阻止睡眠。
(2)[PMU] wakeup_pin=00000000(cur_level=00000000 sleep_level=00000000)  
这里主要是看哪个GPIO设置了唤醒功能,且处于唤醒电平状态。导致不能进入睡眠
(3)[PMU] pull_up=00100173(cur_level=00100173) pull_down=7FEFC000(cur_level=08450000) all_cur_level=08550773
这里主要查看是否有些IO口电平和内部上下拉的设置不匹配。如果不匹配,每个GPIO约有10uA的漏电。
(4)[PMU] clocking: CPU(48MHz) SRAM(FFFF) RTC(WDT) UART0 GPIO
这里主要观察开启了哪些外设或者,看看有没有要关而未关的。



参考功耗曲线图(电流测试自 6220A3)

image.png

举例分析I/O口电流漏电问题

image.png

1- 在Timer事件中,打印IO口状态

{

.....

pmu_dump(printf)

.....

}


2- Log info打印信息

[PMU] prevent_status=00000200

[PMU] wakeup_pin=00000000(cur_level=00000000 sleep_level=00000000)

[PMU] pull_up=00100173(cur_level=00100173) pull_down=7FEFC000(cur_level=08450000) all_cur_level=08550773

[PMU] clocking: CPU(48MHz) SRAM(FFFF) RTC(WDT) UART0 GPIO


3- 分析打印IO的上拉漏电情况,如果上拉Mask位为1(上拉),Cur_LEVEL对应该的位置为0(低电平),则会漏电。

pull___up=(16进)00100173=(2进)0000 0000 0001 0000 0000 0001 0111 0011

cur_level=(16进)00100173=(2进) 0000 0000 0001 0000 0000 0001 0111 0011

如果发现外围低电平漏电: 需要修改对应位为和实际电平一致的下拉。 如上面没有发现电平不匹配漏电情况。


4- 分析打印IO的下拉漏电情况,如下下拉Mask位为1(下拉),Cur_LEVEL对应该的位置为1(高电平),则会漏电。

pull_down=(16进)7FEFC000= (2进)0111 1111 1110 1111 1100 0000 0000 0000

cur_level=(16进)08450000=   (2进)0000 1000 0100 0101 0000 0000 0000 0000

如果发现外围高电平漏电: 需要修改对应位为和实现电平一致的上拉。如上面 GPIO16,初始化为下拉,实际高电平。因此会有漏电。



被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站