睡眠节能模式
就是指芯片在保存内存数据的情况下进入低功耗模式,实测量产型SHMICTRL-28AF-TP和35AF-TP基本上睡眠模式的功耗只有1.2~1.5mA,在如此低的功耗下,我们不仅保持了整个LCD屏幕显存数据的不丢失,还保持了系统单片机的最低运行模式,这样可以保证系统被唤醒后继续运行
大部分的屏幕都支持睡眠节能模式,但是电容触摸屏和7吋屏幕暂不支持;
睡眠唤醒的三种模式
- 串口唤醒
- 电阻触摸屏唤醒
- 扩展端口以及按键唤醒
睡眠状态下的各端口情况
- TX2 RX2 全部高阻,串口关闭;唤醒后,建议重启串口2以确保缓冲区没有垃圾数据;
- E1~E6 全部高阻(被设成唤醒除外);唤醒后,可以保持原有输入输出状态;
- TF卡,如果存在,会增加睡眠功耗,建议拔掉(目前TF卡主要用于固件升级);
实测电流
SHMICTRL-28AF-TP,采用标准3.3V供电,所有串口、扩展口、TF卡接口全部悬空,实测睡眠电流1.2~1.5mA
不同模式的唤醒睡眠电流稍有不同;
进入串口睡眠的方法:
- 1、程序中执行sleep(1,0,0);函数,可以在onclick事件中也可以在ontimer事件中执行,一旦执行,系统就会进入睡眠状态,唤醒后会继续执行sleep()之后的语句
- 2、cmd串口传入sleep(1,0,0);#0d#0a 即使用串口传入语句的方式执行sleep语句,这样也可以进入低功耗状态;(#0d#0a表示16进制的0d 0a,也就是回车换行符)
- 3、语句执行之后,主串口会发送{sleep}\r\n,表示进入sleep模式
唤醒
- 串口唤醒,唤醒的方法是通过Rx1,接收串口发送来的16进制字符00,即可唤醒,为了防止字符影响cmd语句的接收,最后面需要加上0d 0a,也就是唤醒最后发三个16进制的字符:00 0d 0a
- 唤醒后,串口会发送{wakeup}\r\n 表示唤醒成功;
进入触摸屏睡眠的方法:
- 程序中执行sleep(0,1,0);函数,可以在onclick事件中也可以在ontimer事件中执行,一旦执行,系统就会进入睡眠状态,唤醒后会继续执行sleep()之后的语句
唤醒
- 点击触摸屏就可以唤醒,为了防止触摸误唤醒,建议sleep(0,1,0)之后,可以直接跟gopage语句到一个特殊的界面,该界面有解锁进入(比如密码或者滑块解锁),同时有定时器,比如20秒没有解锁则再次执行sleep(0,1,0)进入睡眠
进入按键睡眠的方法:
- 程序中执行sleep(0,0,63);函数,可以在onclick事件中也可以在ontimer事件中执行,一旦执行,系统就会进入睡眠状态,唤醒后会继续执行sleep()之后的语句
唤醒
- E1~E6端口有任何一个端口低电平就唤醒
- 扩展端口接按键按下可以唤醒
- 可以分别设置某个按钮(或扩展IO)唤醒
总结
详细参见sleep 函数;