SSD1963+STM32F4+RGB565 TFT调试

2018-06-04 20:43:18编辑:什么鱼 关键字:SSD1963  STM32F4  RGB565  TFT调试

由于项目需要用到5.0寸触屏,选了一款RGB565接口的电容触摸屏,决定采用STM32F407+SSD1963的驱动方案,整个过程基本顺利,但中间也遇到了一些问题,折腾了两天,在网上看到很多网友也有遇到类似问题,好像都没有解决,决定把它分享出来,以免浪费不必要的时间。

当第一次做板回来,顺利点亮屏,研究了半天SSD1963手册,终于显示了红绿蓝三原色后,心里挺开心,觉得已经搞得差不多了。接着开始根据UI设计实现界面,这时奇怪的问题出来了,字体显示边缘总是不干净,有点模糊又有一点杂色,图标显示颜色都跟设计有差异,而且细节处也显得不清楚,最后发现只要不是单色,颜色都不能正常显示。由于红绿蓝三原色正常,一直认为硬件没问题,可能是软件初始化配置问题。SSD1963的手册不是太好,不太考虑普通人的智商,有些不好理解,SSD1963没有16位的模式,用18位模式来代替,但是手册里并没有提示18位数据哪两位不用,实际测试必须是LDATA0和LDATA12不用,不要与下图的MCU数据接口混淆,这个是指不同宽度MCU数据接口写入SSD1963显存时对应的RGB关系。

所以硬件连接必须如下:

   

部分初始化代码如下:

    UINT32  HDP = 479;      // HS_Display_Area
    UINT32  HT  = 510;      // (HS_Display_Area + HS_pulse_width + HS_Blanking + HS_Front_Porch)
    UINT32  HPS = 20;       // (HS_pulse_width + HS_Blanking)
    UINT32  HPW = 2;        // HS_pulse_width
    UINT32  LPS = 8;        // Horizontal Display Period Start Position
    UINT32  VDP = 853;      // VS_Display_Area
    UINT32  VT  = 920;      // (VS_Display_Area + VS_pulse_width + VS_Blanking + VS_Front_Porch)
    UINT32  VPS = 20;       // (VS_pulse_width + VS_Blanking)
    UINT32  VPW = 8;        // VS_pulse_width
    UINT32  FPS = 2;        // Vertical Display Period Start Positio
    SSD1963_RST_LOW;        //复位SSD1963
    delay_us(100);
    SSD1963_RST_HIGH;

    LCD_WR_REG(0xE2);       //Set PLL with CLK = 10MHz (MCU OUTPUT),
                                 //Multiplier M = 29, 250MHz < VCO < 800MHz = CLK*(M+1), VCO = 300MHz
    LCD_WR_DATA(0x1D);      //CLK = 10MHz (MCU OUTPUT),///参数1
    LCD_WR_DATA(0x02);      //参数2 Divider N = 2, PLL = 300/(N+1) = 100MHz
    LCD_WR_DATA(0x04);      //参数3 Validate M and N values

    LCD_WR_REG(0xE0);       // Start PLL command
    LCD_WR_DATA(0x01);      // enable PLL
    delay_ms(100);                    // Wait 100ms to let the PLL stable
    LCD_WR_REG(0xE0);       // Start PLL command again
    LCD_WR_DATA(0x03);      // now, use PLL output as system clock
    //delay_ms(5);
    LCD_WR_REG(0x01);       //软复位
    delay_ms(5);

    //Set LSHIFT freq, i.e. the DOTCLK with PLL freq 100MHz set previously
    //Typical DOTCLK for KD050FM-1 is 35MHz MAX(datasheet), experiment shows 30MHz gives a stable result
    //30MHz = 100MHz*(LCDC_FPR+1)/2^20
    //LCDC_FPR = 314571 (0x4CCC8)
    LCD_WR_REG(0xE6);
    LCD_WR_DATA(0x04);//0x03
    LCD_WR_DATA(0xCC);
    LCD_WR_DATA(0xC8);

    //Set LCD mode, varies from individual manufacturer
    LCD_WR_REG(0xB0);
    LCD_WR_DATA(0x10);     // set 18-bit for 5" panel 
    LCD_WR_DATA(0x00);     // set TTL mode
    LCD_WR_DATA((HDP >> 8) & 0x00FF);   // Set LCD horizontal  panel size H
    LCD_WR_DATA(HDP & 0x00FF);           // Set LCD horizontal panel size L
    LCD_WR_DATA((VDP >> 8) & 0x00FF);    // Set LCD vertical panel size H
    LCD_WR_DATA(VDP & 0x00FF);          // Set LCD vertical panel size L
    LCD_WR_DATA(0x00);                   // RGB sequence

    //Set horizontal period
    LCD_WR_REG(0xB4);
    LCD_WR_DATA((HT >> 8) & 0x00FF);    //Set HT
    LCD_WR_DATA(HT & 0x00FF);
    LCD_WR_DATA((HPS >> 8) & 0X00FF);  //Set HPS
    LCD_WR_DATA(HPS & 0x00FF);
    LCD_WR_DATA(HPW);                   //Set HPW
    LCD_WR_DATA((LPS >> 8) & 0x00FF);   //Set HPS
    LCD_WR_DATA(LPS & 0x00FF);
    LCD_WR_DATA(0x0000);

    //Set vertical period
    LCD_WR_REG(0xB6);
    LCD_WR_DATA((VT >> 8) & 0x00FF);    //Set VT
    LCD_WR_DATA(VT & 0x00FF);
    LCD_WR_DATA((VPS >> 8) & 0x00FF);   //Set VPS
    LCD_WR_DATA(VPS & 0x00FF);
    LCD_WR_DATA(VPW);                   //Set VPW
    LCD_WR_DATA((FPS >> 8) & 0x00FF);   //Set FPS
    LCD_WR_DATA(FPS & 0x00FF);

    //设置GPIO配置
    LCD_WR_REG(0xB8);
    LCD_WR_DATA(0x0F);                 //GPIO3=output, GPIO[2:0]=output//GPIO is controlled by host; 4个IO设置成输出
    LCD_WR_DATA(0x01);                 //GPIO0 使用正常的IO功能

    LCD_WR_REG(0xBA);                  //设置GPIO配置
    LCD_WR_DATA(0x000F);            //GPIO[3:0] out 1

    LCD_WR_REG(0x0036);              //rotation
    LCD_WR_DATA(0x0000);

    LCD_WR_REG(0xF0);                  //设置SSD1963同CPU接口为16bit Set pixel data interface
    LCD_WR_DATA(0x03);                 //16-bit(565 format) data


关键字:SSD1963  STM32F4  RGB565  TFT调试

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/article_2018060439559.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm32F429 LTDC优化
下一篇:基于STM32F429的SDRAM使用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

美光对固态硬盘做出预测:3年后SSD平均容量将达600GB

  根据香港媒体HKEPC的报道,SSD的出现虽然为我们带来了更高速的读写速度,但还是难以撼动大容量机械硬盘的地位,大多数厂商采用的都是SSD + HDD的双硬盘,但是美光表示,3年后SSD平均容量将达600GB。下面就随手机便携小编一起来了解一下相关内容吧。  美光的报告显示,现在约有36%的新PC或笔记本电脑配备SSD,预估未来三年内他们的份额将提升2.3倍达到81%。三年内固态硬盘的平均容量将由264GB增至至597GB,同样提升了2.3倍,虽然固态硬盘的价格无论如何都会比机械硬盘贵很多,但是未来普及大容量SSD的趋势是不可挡的。  至于NAND Flash发展方面,美光的技术已经到了第三代的96层3D NAND
发表于 2018-05-30 20:43:29
美光对固态硬盘做出预测:3年后SSD平均容量将达600GB

Innodisk台北國際电脑展将展出最新獨家SSD资料储存技术

2018年5月17日,台北讯 - Innodisk将於台北展期间发布最新SSD数据储存技术iRetentionTM,通过创新研发的数据转移机制,防止因温度升高而造成SSD数据消失。针对容易受到高温影响的工业应用,以独家固件技术,智能调控数据储存周期,进而延长SSD寿命。而宜鼎除了大力抢推最新的资料保存技术外,也将于展览中展出3D NAND TLC产品,以及2666超高速宽温规格DRAM,加以抗硫标准化市场利多釋出,以全方位嵌入式解决方案积极抢下车载、安全监控、网通、国防等四大应用市场。 高温弱化数据保存 数据寿命恐缩短168倍SSD的可靠性与其数据保存(Data Retention)能力息息相关,随着芯片制程微缩,TLC
发表于 2018-05-17 15:05:03

美光新加坡第三座闪存工厂开建:SSD价格稳了

  这两年,内存、显卡价格一直高高在上,SSD固态硬盘也很不稳定,原因之一就是上游颗粒产能和供应不足,而且极为不稳。下面就随网络通信小编一起来了解一下相关内容吧。  三星、美光、海力士等大厂虽然都在扩建新厂、扩充产能,但抵不过天灾人祸,什么断电、设备故障、大火之类的,而且经常在价格刚刚趋于稳定的时候出现,实在让人没辙。  要说这厂商们也不是不努力,比如美光,就于本周在新加坡开工建设当地的第三座NAND闪存工厂。 美光新加坡第三座闪存工厂开建:SSD价格稳了  美光此前在新加坡已有两座闪存工厂,分别名为Fab 10N、Fab 10X,而新工厂将是三期工程,占地面积16.5万平方米,计划2019年年中前后完工,2019
发表于 2018-04-08 10:55:23
美光新加坡第三座闪存工厂开建:SSD价格稳了

三星计划在西安扩大闪存产能 未来三年投70亿美元

据韩国媒体报道,三星电子位于西安的NAND闪存生产线扩建项目,将于本月底正式动工。2017年8月底,三星电子宣布与陕西省政府达成合作协议,将扩大西安高新区工厂的闪存产能,新建二期项目,未来三年投资70亿美元。与此同时,三星也在韩国本土不断加大投资,连续开建两座新工厂,都兼具内存、闪存生产能力。在韩国京畿道平泽市,三星已有一座大型工厂,今年年中可量产64层堆叠闪存,也能生产内存,初步投资就有15.6万亿韩元,到2021年可翻一番。同时三星还在该地另建一座工厂,投资额达30万亿韩元,预计2019年第二季度完工。三星与西安的合作颇为深入。2013年底,三星投资5亿美元,建设闪存芯片生产项目的后工程—封装测试项目,2015年4月竣工投产。2
发表于 2018-03-25 19:29:23

SSD降价美梦被打碎 涨价势头更猛

SSD刚有点供过于求的迹象,三星的工厂就因为意外停电报废6千片晶圆,打消了降价的美梦。而在2017年,涨价势头更猛的其实是内存,且截止目前,依然没有削弱的征兆。据ETNews,统计机构IC Insights绘制的最新图表显示,每Gb DRAM芯片的价格在2018年1月份达到0.97美元,同比增长47%,这一增幅甚至比30年前的45%峰值还要夸张。与之相对应的产量方面,增长却十分缓慢。观察人士称,主要是DRAM也进入10nm级别的制程,良率的提高不像以前那么快了。历史数据中,DRAM的的价格从1978年到2012年累计年减33%,随后,产业开始重组,形成了三星、SK海力士、美光三巨头, 于是年减幅度控制到了3%。目前,外界都在关注
发表于 2018-03-25 19:28:31

STM32F407学习笔记——GPIO_按键控制LED亮灭

#include <stm32f4xx.h>#include "stm32f4xx_conf.h"#include "delay.h" GPIO_TypeDef* io_led=GPIOC;//定义一个指向结构体GPIO_TypeDef的io_led  const u16 pin_led=GPIO_Pin_1;//引脚GPIO_TypeDef* io_key=GPIOC;const u16 pin_key=GPIO_Pin_0; void Led_Init(){ GPIO_InitTypeDef GPIO_init_l;//用于初始化的结构体
发表于 2018-07-21 11:07:23

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved