搜索
bottom↓
回复: 26

LPC1788,进入深度睡眠后,LCD唤醒不了。

[复制链接]

出0入0汤圆

发表于 2013-12-30 09:35:43 | 显示全部楼层 |阅读模式
大家好,我目前在用LPC1788做的一个案子,现在客人要求很低的待机功耗。所以,就得进入深度睡眠模式进行待机。
目前我已经验证了内部SDRAM,外部SDRAM,操作系统内核,从深度睡眠模式唤醒后都可继续运行(分别单独做实验验证)。
但就是LCD显示不了,可能是EMWIN问题,但更可能是LCD硬件没处理好的问题。因为内外部RAM都没改变的话,emwin的变量及上下文应也不受影响。
大家一起分析一下,谢谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2013-12-30 09:43:59 | 显示全部楼层
buck 发表于 2013-12-30 09:38
是否需要再次初始化LCD

都有重新初始化。
且我也试过,不要emwin,直接用简单的LCD显示例子,睡眠后还是恢复不了!

出0入0汤圆

发表于 2013-12-30 13:12:41 | 显示全部楼层
你没把显示不了描述清楚,
比如1788的LCD模块在没在运行,还是被卡死了,DCLK,RGB,HV,DE等是否有输出,是规律输出还是杂乱无章,
LCD屏被重新加电应该正常吧(有些LCD对上电有要求,需要配合RST脚)

另外背光你肯定没忘记打开吧...

出0入0汤圆

 楼主| 发表于 2013-12-30 13:28:08 | 显示全部楼层
Oliver 发表于 2013-12-30 13:12
你没把显示不了描述清楚,
比如1788的LCD模块在没在运行,还是被卡死了,DCLK,RGB,HV,DE等是否有输出,是规律输 ...

首先,进入深度睡眠模式,仿真不了的,所以,也不知卡死到哪里。其次,我打开控制器,接着打开背光,是打不开背开的,而直接打开背光(其实也只是打开背光电源IC的控制脚而),显示的只是一个白屏。

出0入0汤圆

发表于 2013-12-30 13:50:16 | 显示全部楼层
按照你说的,你LCD在唤醒之后供电都成问题,能这个理解么?

出0入0汤圆

发表于 2013-12-30 14:02:20 | 显示全部楼层
睡眠后不仿真,但你可以做一些调试信息输出,如果你程序还在跑说明CPU没死

你可以示波器测量信号输出是否正常,

我只是说某些LCD需要MCU控制一下RST,不然会有不显示的可能

出0入0汤圆

 楼主| 发表于 2013-12-30 16:21:10 | 显示全部楼层
Oliver 发表于 2013-12-30 14:02
睡眠后不仿真,但你可以做一些调试信息输出,如果你程序还在跑说明CPU没死

你可以示波器测量信号输出是否正 ...

嗯,MCU时钟PLL是要重新设置才行,且都验证过了,就连外部SDRAM,都验证OK(睡眠前全部写一遍内容,唤醒后再所有作一次比较,都OK)。现在就差LCD唤醒不正常(也试过作重新初始化)。

出0入0汤圆

发表于 2013-12-30 18:19:46 | 显示全部楼层
内部的LCD模块肯定有状态寄存器的,你可以把这些信息打印出来分析看看什么情况

另外你有必要测试一下挂屏的那20来个信号线的波形

出0入0汤圆

发表于 2013-12-30 21:44:51 | 显示全部楼层
楼上的建议靠谱

出0入0汤圆

 楼主| 发表于 2013-12-31 08:02:41 | 显示全部楼层
Oliver 发表于 2013-12-30 18:19
内部的LCD模块肯定有状态寄存器的,你可以把这些信息打印出来分析看看什么情况

另外你有必要测试一下挂屏的 ...

嗯!很不错的建议,假期后回去试试。

出0入0汤圆

发表于 2013-12-31 09:06:21 | 显示全部楼层
最稳妥的方法是把所有寄存器的值打出来比对.
另外唤醒到屏初始化之间加个延迟试下,同时保证不要有中断什么的打断初始化.

出0入0汤圆

 楼主| 发表于 2013-12-31 10:18:43 | 显示全部楼层
MadCat 发表于 2013-12-31 09:06
最稳妥的方法是把所有寄存器的值打出来比对.
另外唤醒到屏初始化之间加个延迟试下,同时保证不要有中断什么 ...

嗯!不错的建议,谢谢~

出0入0汤圆

发表于 2013-12-31 10:40:49 | 显示全部楼层
休眠和上电复位的区别:电源状态不一样。

出0入0汤圆

 楼主| 发表于 2013-12-31 11:00:44 | 显示全部楼层
Excellence 发表于 2013-12-31 10:40
休眠和上电复位的区别:电源状态不一样。

这不好解释。其它外设,同样设置,都运行正常呢。如GPIO,SDRAM等!

出0入0汤圆

发表于 2013-12-31 11:43:58 | 显示全部楼层
看看LCD的寄存器了。

出0入0汤圆

 楼主| 发表于 2013-12-31 15:30:01 | 显示全部楼层
Excellence 发表于 2013-12-31 11:43
看看LCD的寄存器了。

嗯,打印出来比较。
休眠前与唤醒后。

出0入0汤圆

发表于 2013-12-31 15:39:13 | 显示全部楼层
整好了没!

出0入0汤圆

 楼主| 发表于 2013-12-31 16:03:29 | 显示全部楼层

多谢关心,还没搞呢,这几天休息!明年再搞,呵呵!

出0入0汤圆

发表于 2013-12-31 16:05:19 | 显示全部楼层
yoje 发表于 2013-12-31 16:03
多谢关心,还没搞呢,这几天休息!明年再搞,呵呵!

搞好了发结果!!

出0入0汤圆

 楼主| 发表于 2013-12-31 16:16:42 | 显示全部楼层

嗯!这是必须的,一定!

出0入0汤圆

发表于 2014-1-9 22:16:55 | 显示全部楼层
等待楼主的结果。。呵呵

出0入0汤圆

 楼主| 发表于 2014-1-10 09:53:33 | 显示全部楼层
lcyc51 发表于 2014-1-9 22:16
等待楼主的结果。。呵呵

        只能说有个阶段性的结果吧,因为又出现了新的情况,同时也希望大伙一起分析一下。是这样的:
通过串口把寄存器LPC_SC->LCD_CFG打印出来.sleep前是8,但外中断唤醒后是0,现在是强制把它赋值为原来的8,即:
LPC_SC->LCD_CFG = 8;
ok,这时可唤醒了。
        但是,这唤醒只有在前两分钟内操作是正常的,超过这个时间。按键操作都无效,且屏上面显示很多花花的点点,就如我们以前旧电视的“雪花”。
        我个人怀疑,是由于内部RAM及外部SDRAM,由于sleep后,时钟不再跑,即RAM不再被动态刷新,数据就开始丢失了。就出现了异常。
        现在,当一唤醒,我直接强制它跳到程序开始处,重新执行。就与uboot一样,但是只显示一片白屏。。。
        大伙请分析一下看。

出0入0汤圆

 楼主| 发表于 2014-2-13 10:33:45 | 显示全部楼层
最新进展,没办法找FAE也解决不了,最后与客户讨论,他们也作了一定的让步,现在的办法是:
进入低功耗,当唤醒时,不作任何恢复(重要数据由片内EEPROM保存),直接重启。
相关的数据在进入sleep前存放在EEPROM中,重启后,根据EEPROM的相应值,重新返回到相应的状态中。代码如下:

    /* 设置唤醒中断. */
    NVIC_SetPriority(GPIO_IRQn, 1);
    NVIC_EnableIRQ(GPIO_IRQn);

    /* 保存当前上下文. */
    Eep_contextStore();

    /* 进入深度休眠模式. */
    SCB->SCR = 0x4;
    LPC_SC->PCON = 0x8;
    /* Deep Sleep Mode*/
    __WFI();

    /* set the WDT for reset! */
    LPC_WDT->TC = 0xFF;
    LPC_WDT->MOD = 0x3;
    __disable_irq();
    LPC_WDT->FEED = 0xAA;
    LPC_WDT->FEED = 0x55;

    /* 等待看门狗重启. */
    while(1);

出0入0汤圆

发表于 2014-4-14 21:49:11 | 显示全部楼层
恩,莫非只能那个方法呢

出0入0汤圆

发表于 2014-4-15 01:44:55 | 显示全部楼层
这玩意想数据不被乱掉,进入深度睡眠真的太难了,做不了的,因为有个外部sdram,这玩意要刷新数据的,不然会丢失。还有如果不是低功耗sdram,那样即使mcu睡眠,sdram耗电还是很大。现在他们做的基本都是直接智能手表的,有些是直接整个深度睡眠,按键直接重新启动起来,其他不管了,某些数据丢失免不了,特别是屏显示的。基本上是记下休眠时在哪个界面,启动时进入到那个界面

出0入0汤圆

 楼主| 发表于 2014-4-15 08:53:15 | 显示全部楼层
nongxiaoming 发表于 2014-4-15 01:44
这玩意想数据不被乱掉,进入深度睡眠真的太难了,做不了的,因为有个外部sdram,这玩意要刷新数据的,不然 ...

嗯,如真的要恢复到相应界面,也就只能靠eeprom来保存相应的上下文了,算是没办法的办法吧!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 23:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表