你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用STM32F030驱动1.45寸TFT-LCD,左上角刚上电小几率出现一小块花

[复制链接]
bojue2015 提问时间:2018-2-25 10:27 /
本帖最后由 bojue2015 于 2018-2-25 11:05 编辑

用STM32F030驱动TFT-LCD(TFT-LCD初始化总时间不到15MS),驱动芯片ST7789V,左上角刚上电小几率出现一小块花屏!   刷屏流程为:上电--屏供电--初始化(总延时不到20MS,不能再长)--整体刷黑底---需要的位置上刷图片。
   左上角有小几率出现小块花屏,之后如果需要切换显示的话,会再刷黑底,花屏消失。之后坏样机再重新上电也难以复现此现象。
   最新的优化方法是上电的初次刷两次黑底,能有效改善此问题,但几率性还是存在。

只有左上角才出现

只有左上角才出现

点评

楼主尽快上传图片和代码吧,不然大家也帮不上忙  发表于 2018-2-26 08:56
收藏 1 评论15 发布时间:2018-2-25 10:27

举报

15个回答
Tcreat 回答时间:2018-2-25 10:42:17
本帖最后由 Tcreat 于 2018-2-25 10:51 编辑

首先你这问题的表述太过于简单     可能是初始化 或者是干扰导致的 具体情况 还得根据你实际情况看 先把问题条件  症状表述清楚 才好

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

努力的人 回答时间:2018-2-25 10:46:50
比如说你上传一张出现花屏的照片,你的硬件连接部分的图片,不然也没法判断呀,如果硬件没问题,那就看软件上的问题就可以了,建议好好阅读论坛问答发帖规范

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wudianjun2001 回答时间:2018-2-25 11:08:36
这个涉及到的原因可能好几种,具体不好说
bojue2015 回答时间:2018-2-25 11:09:32
屏供应商回复说初始化时间太短,造成芯片初始化不完全造成。但就有个疑问,为什么总是只出现在左上角,且大小位置都一样。
toofree 回答时间:2018-2-25 22:22:05
上原理图和工程代码吧!
ST7789V有多种工作模式,你这用的是哪一种?
看一下手册中AC Characteristics参数部分。
把时序放慢,比如SPI时钟频率减小,两条读写指令之前增加软件延时。
Sitronix的LCD驱动芯片用的比较多,51上都能驱动,51的时序较慢。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wolfgang2015 回答时间:2018-2-26 13:06:12
您这个问题是初始化的问题,初始化前没有矫正输出模式。
后期的图形显示把花屏留在了左上角。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wolfgang2015 回答时间:2018-2-26 13:07:45
wolfgang2015 发表于 2018-2-26 13:06
您这个问题是初始化的问题,初始化前没有矫正输出模式。
后期的图形显示把花屏留在了左上角。 ...

不是初始化时间太短,
初始化代码顺序有问题,建议你看看初始化的码制式设定。好像系统默认的不是565。
bojue2015 回答时间:2018-2-27 16:35:21
static void TftDispInit(void)
{
        WriteComm(0x36); // Memory Access Control
        WriteData(0xC8); // C8
       
        WriteComm(0x3A);   
        WriteData(0x55);  //66
       
        WriteComm(0xC0);
        WriteData(0x05);
        WriteData(0x05);
       
        WriteComm(0xC1);
        WriteData(0x04);
       
        WriteComm(0xE0); //Set Gamma
        WriteData(0x06);
        WriteData(0x09);
        WriteData(0x0e);
        WriteData(0x04);
        WriteData(0x13);
        WriteData(0x08);
        WriteData(0x36);
        WriteData(0X68);
        WriteData(0x46);
        WriteData(0x06);
        WriteData(0x0e);
        WriteData(0x0d);
        WriteData(0x18);
        WriteData(0x1b);
        WriteData(0x0f);

        WriteComm(0XE1); //Set Gamma
        WriteData(0x06);
        WriteData(0x23);
        WriteData(0x29);
        WriteData(0x03);
        WriteData(0x0f);
        WriteData(0x04);
        WriteData(0x39);
        WriteData(0x23);
        WriteData(0x48);
        WriteData(0x03);
        WriteData(0x0b);
        WriteData(0x08);
        WriteData(0xb1);
        WriteData(0x36);
        WriteData(0x0f);

        WriteComm(0x11); //Exit Sleep
}

初始化代码为供应商提供。
bojue2015 回答时间:2018-2-27 16:37:43
//TFT处理函数
static void TFTDisp_Proc(void)
{               
        if(g_BlackWakeID == WakeByRtcPwrOff)
                return;
        switch(g_TftDispSt)
        {
                case TFT_Idle:
                        s_TftDisp_X4ms = 0/4;
                        g_TftDispSt = TFT_RstStart;
                        break;
                case TFT_RstStart:
                        if(s_TftDisp_X4ms)
                                return;                       
                        TFTPOWER_ON;
                        DISP_SPI_RST_HIGH;
                        s_TftDisp_X4ms = 4/4;//8
                        g_TftDispSt = TFT_Rsting;
                        break;
                case TFT_Rsting:
                        if(s_TftDisp_X4ms)
                                return;
                        DISP_SPI_RST_LOW;
                        s_TftDisp_X4ms = 4/4;//20
                        g_TftDispSt = TFT_RstEnd;
                        break;
                case TFT_RstEnd:
                        if(s_TftDisp_X4ms)
                                return;
                        DISP_SPI_RST_HIGH;
                        s_TftDisp_X4ms = 4/4;//8
                        g_TftDispSt = TFT_WriteDataDelay;
                        break;
                case TFT_WriteDataDelay:
                        if(s_TftDisp_X4ms)
                                return;
                        //WriteData(0x11);
                        //s_TftDisp_X4ms = 120/4;
                        g_TftDispSt = TFT_WriteData;
                        //break;
                case TFT_WriteData:
                        if(s_TftDisp_X4ms)
                                return;
                        TftDispInit();
                        s_TftDisp_X4ms = 0/4;//10
                        g_TftDispSt = TFT_WriteDataEnd;
                        break;
                case TFT_WriteDataEnd:
                        if(s_TftDisp_X4ms)
                                return;
                        WriteComm(0x29);       
                        s_TftDisp_X4ms = 0/4;//20
                        g_TftDispSt = TFT_WaitStandby;
                        break;
                case TFT_WaitStandby:
                        if(s_TftDisp_X4ms)
                                return;       
                        g_TftDispSt = TFT_Standby;
                        break;
                case TFT_Standby:
                        if(s_TftDisp_X4ms)
                                return;               
                        break;
                default:
                        g_TftDispSt = TFT_Idle;
                        break;
        }
}
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版