JDI功耗测试示例

源码路径: example/pm_jdi

支持的开发板

此示例可在以下开发板上运行:

  • sf32lb52-core_n16r16

概述

上电刷屏5秒后进入睡眠,通过按键 Key1 唤醒,唤醒后 JDI 屏幕刷屏5秒,在这还设置了定时唤醒,每过1分钟唤醒一次,刷新一次屏幕,然后再次进入睡眠。测试睡眠和唤醒两种状态下的功耗。

硬件连接

低功耗测试时,板子不再通过usb供电而是需要通过功耗检测工具对板子的VCC_5V供5V电,所以接下来需要进行如下操作才能功耗测试。

JDI屏幕引脚连线配置

引脚

JDI屏幕转接板引脚

转接板物理引脚

PA2

B2

8

PA3

B1

1

PA4

G1

18

PA5

R1

17

PA6

HST

16

PA7

ENB

14

PA8

VST

5

PA39

VCK

4

PA40

XRST

2

PA41

HCK

3

PA42

R2

12

PA43

G2

6

PA24

FRP

15

PA25

XERP

13

PA24

VCOM

7

注意:JDI屏幕转接板的物理引脚25需要接到开发板的3V3,用以给屏幕供电

  • 开发板原有供电情况 alt text

  • 除了ADDIO、PVDD、AVDD的脚调线冒,其余的都摘除 alt text

  • 将功耗测试工具的VOUT接到板子的VCC_5V上,GND连接到PPK的GND引脚 alt text

  • 方便观看log,按图示连接串口转接板 alt text

  • 最终连线 alt text

例程输出结果

log打印

09-26 14:19:38:801    SFBL
09-26 14:19:40:858    Serial:c2,Chip:4,Package:6,Rev:f  Reason:00000000
09-26 14:19:40:863    Serial PowerOnMOde:0 rtc_record:00000000
09-26 14:19:40:863     \ | /
09-26 14:19:40:865    - SiFli Corporation
09-26 14:19:40:866     / | \     build on Sep 24 2025, 2.4.0 build 81bf05a9
09-26 14:19:40:868     2020 - 2022 Copyright by SiFli team
09-26 14:19:40:870    mount /dev sucess
09-26 14:19:40:873    [2484] I/drv.rtc main: PSCLR=0x80000100 DivAI=128 DivAF=0 B=256
09-26 14:19:40:874    [2518] I/drv.rtc main: RTC use LXT RTC_CR=00000001
09-26 14:19:40:875    [2540] I/drv.rtc main: Init RTC, wake = 0
09-26 14:19:40:877    [2731] I/drv.audprc main: init 00 ADC_PATH_CFG0 0x606
09-26 14:19:40:878    [2754] I/drv.audprc main: HAL_AUDPRC_Init res 0
09-26 14:19:40:881    [2778] I/drv.audcodec main: HAL_AUDCODEC_Init res 0
09-26 14:19:40:885    call par CFG1(3313)
09-26 14:19:40:889    fc 9, xtal 2000, pll 2094
09-26 14:19:40:892    call par CFG1(3313)
09-26 14:19:40:893    fc 7, xtal 2000, pll 1678
09-26 14:19:40:895    [3028] I/drv.lcd main: [NONE] -> [OPENING]
09-26 14:19:40:896    [3055] I/drv.lcd lcd_task: open
09-26 14:19:40:898    [3070] I/drv.epic lcd_task: drv_gpu opened.
09-26 14:19:40:899    [3089] I/drv.lcd lcd_task: HW open
09-26 14:19:40:904    [3128] I/drv.lcd lcd_task: Try registered LCD driver...
09-26 14:19:40:906    [3163] I/drv.lcd lcd_task: Found lcd jdi387a id:1d1h
09-26 14:19:40:912    [3189] I/drv.lcd lcd_task: HW open done.
09-26 14:19:40:913    [3206] I/drv.lcd lcd_task: [OPENING] -> [INITIALIZED]
09-26 14:19:40:914    [3228] I/drv.lcd lcd_task: open done.
09-26 14:19:40:927    msh />
09-26 14:19:40:941    [4959] I/drv.lcd lcd_task: Auto turn on display.
09-26 14:19:40:942    [4981] I/drv.lcd lcd_task: set brightness 50
09-26 14:19:40:943    [5001] I/drv.lcd lcd_task: display on
09-26 14:19:40:947    [5024] I/drv.pwm lcd_task: 0 Psc 20006d40, Period 16000000, Pulse 8000000
09-26 14:19:40:948    [5055] I/drv.pwm lcd_task: 1 Psc 7a1200, Period 16000000, Pulse 8000000
09-26 14:19:40:950    [5086] I/drv.pwm lcd_task: 2 Psc 0, Period 524, Pulse 262
09-26 14:19:40:952    [5108] I/drv.pwm lcd_task: 3 Psc 0, Period 524, Pulse 262
09-26 14:19:40:953    [5135] I/drv.lcd lcd_task: [INITIALIZED] -> [ON]
09-26 14:19:40:954    The screen is updated at tick 85.
09-26 14:19:42:000    The screen is updated at tick 1136.
09-26 14:19:43:055    The screen is updated at tick 2188.
09-26 14:19:44:108    The screen is updated at tick 3240.
09-26 14:19:45:161    The screen is updated at tick 4291.
09-26 14:19:46:162    The display period has ended, entering sleep mode...
09-26 14:19:46:164    [176105] I/drv.lcd lcd_task: idle mode on=1
09-26 14:19:46:168    [176126] I/drv.lcd lcd_task: [ON] -> [IDLEMODE]
09-26 14:19:46:169    The LCD is turned off, entering sleep mode...
09-26 14:19:46:170    [pm]S:3,176182
09-26 14:19:48:754    [pm]W:260994
09-26 14:19:48:755    [pm]WSR:0x40002
09-26 14:19:48:756    The key is pressed, waking up the system...
09-26 14:19:48:807    The screen is updated at tick 7946.
09-26 14:19:49:861    The screen is updated at tick 8998.
09-26 14:19:50:914    The screen is updated at tick 10049.
09-26 14:19:51:968    The screen is updated at tick 11100.
09-26 14:19:53:022    The screen is updated at tick 12151.
09-26 14:19:54:023    The display period has ended, entering sleep mode...
09-26 14:19:54:027    [433681] I/drv.lcd lcd_task: idle mode on=1
09-26 14:19:54:028    The LCD is turned off, entering sleep mode...
09-26 14:19:54:029    [pm]S:3,433726

功耗测试结果

  • 我们以200mAh电池容量为例,在上述两种模式下进行测试,估算设备可使用时间。

  • 按轻度使用、中度使用、重度使用三种场景分类,分别对应唤醒100次、300次、500次,每次唤醒后执行5秒的刷屏操作。

唤醒时功耗

  • 按键唤醒后刷屏5s的平均电流为:4.64mA alt text

  • 使用一天所消耗的功耗 100次:4.64 * 100 * 5 / 3600 = 0.64(mAh) 300次:4.64 * 300 * 5 / 3600 = 1.93(mAh) 500次:4.64 * 500 * 5 / 3600 = 3.22(mAh)

睡眠时功耗

  • 睡眠模式的平均电流为:56uA

  • 电流拆解 - 芯片模组功耗:50uA左右 - 屏幕功耗:7uA左右(VCOM、FRP需要输出一个60Hz的波形) alt text

  • 睡眠一小时所需的 56 / 1000 * 1 = 0.056(mAh)

  • 一天总消耗计算如下: 100次:0.056 * (24 * 3600 - 100 * 5) / 3600 + 0.64 = 1.98(mAh)
    300次:0.056 * (24 * 3600 - 300 * 5) / 3600 + 1.93 = 3.25(mAh) 500次:0.056 * (24 * 3600 - 500 * 5) / 3600 + 3.22 = 4.53(mAh)

3、数据汇总

唤醒时亮屏

灭屏睡眠

一天的消耗

可以使用天数

100次/每天

0.64mAh

1.34mAh

1.98mAh

101天

300次/每天

1.93mAh

1.32mAh

3.25mAh

61.5天

500次/每天

3.22mAh

1.31mAh

4.53mAh

44.1天

异常诊断

所测结果与文档中相差较大,可能存在异常,请自行进行排查。 VDDIO:芯片的IO供电 PVDD:芯片主供电输入 AVDD:芯片的音频

  • 1、如果硬件方面有所改动的话,可能会导致测试结果有较大偏差

  • 2、供电电压跟所需电压不匹配也会导致测试结果有较大偏差(采用5V供电)

  • 3、如果屏幕不能够正常进行刷屏,请检查屏幕转接板上的引脚是否与板子进行了正确的连接

  • 排查步骤:可以把原有的5V供电拔了,以及VDDIO、PVDD、AVDD的跳线帽摘除,上述三路可以使用功耗测试工具进行单路供电,其余两路通过外部VCC供电,这样可以单路的功耗测试,从而排查出哪路电源有异常(注意还需要单独给VCC_3V3供电,因为这个是给屏幕单独供电的)。