由于项目需要用到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调试相关推荐

  1. STM32F4开发-TFT屏驱动(支持横屏、竖屏选择)

    一.总述 以下的程序都是基于 https://blog.csdn.net/zhyulo/article/details/89816439 方法建立的工程. 代码已上传:https://download ...

  2. stm32f4 SD卡调试日志

    1.写SD卡时产生hard_fault,由于stm32f429存在两块RAM,当写缓存分配为RAM2区域时,DMA不支持RAM2到外设传输,故产生hard_fault: 2.写过程报0x01 ERRO ...

  3. CubeMX+VSCode+Ozone的STM32开发工作流(二)VSCode环境配置

    neozng1@hnu.edu.cn 本教程的示例代码是笔者参加RoboMaster机甲大师赛为机器人编写的控制器框架,你可以直接克隆仓库,阅读仓库下的Markdown文档获得更好的体验,记得点一个小 ...

  4. 【单片机学习笔记】(31):串口调试技巧、TFT触摸屏初识别、stm32F4与F1对比使用(全系列初始化概览)、YSF4的光耦隔离保护、外部中断与定时器消抖相结合的按键检

    串口调试技巧 可以将调试时会用到,但实际演示是不需要用到的代码用 #if xxx   //这里放调试代码 #endif xxx是 一个宏定义,如果等于0则不编译相关代码,如果为1则编译相关代码 TFT ...

  5. vscode编译、调试stm32F4系列mcu的程序

    捣腾很长时间了,用vscode编译.调试stm32F4系列mcu的程序.记录下. launch.json @TOC // AUTOMATICALLY GENERATED FILE. PLEASE DO ...

  6. ESP32-CAM拍照输出RGB565数据,wifi传输到stm32控制tft屏显示拍照图像

    ESP32-CAM拍照输出RGB565数据,wifi传输到stm32控制tft屏显示拍照图像 拍照采用安信可的ESP32-CAM,显示屏采用2.2寸,TFT SPI 240x320屏幕,使用stm32 ...

  7. 天马3.5寸TFT屏调试文档

    天马 3.5 寸 TFT 屏调试文档 王小涛 2009 年 6 月 12 日 修订版 1 .坐标定位 触摸屏点击时驱动读入的是ADC值,也就是电压值(AD后),一个是x坐标的ADC值,一个是y坐标的A ...

  8. TFT LCD屏接口芯片-通达LT7381(SSD1963)

    技术交流:13602504660 LT7381 是一款极具价格优势的 TFT-LCD 图形显示芯片. 其主要的功能就是协劣 MCU 将所要显示到  TFT 屏的内容传递给 TFT 驱劢器( Drive ...

  9. stm32f4 SPI DMA FLASH 传输调试

    来源:项目中需要用stm32对外部spi flash(m25p16  2MB)进行快速读取,主要是图像数据. 平台:stm32f407---168MHz,FreeRTOS V7.3.0 主要参考:ht ...

最新文章

  1. c java 传参数_Java和C的方法参数传递方式的比较
  2. 自我总结(四) ---java web项目完结,j2ee的开始
  3. 【caffe-Windows】微软官方caffe之 Python接口配置及图片生成实例
  4. html5 webview,HTML5+学习历程之webview经典案例
  5. p批处理替换目录下文本中的字符串
  6. PL/Sql 中创建、调试、调用存储过程
  7. 深度剖析Java数据结构之迭代器(Iterator)
  8. CodeForces 173B Chamber of Secrets(最短路)
  9. iOS底层探索之多线程(二)—线程和锁
  10. python怎么设置图片_python 调整图片亮度的示例
  11. python爬虫简历项目怎么写_python爬虫简历
  12. windows7中文企业版安装英文语言包
  13. ps保存psd后图层全没了_ps保存成psd格式后,再打开就是一张图片而不显图层,怎么办啊??急!!...
  14. node mysql菜鸟教程_Node.js Web 模块
  15. 手机照片误删除恢复 亲测可行 MTP模式下恢复数据 USB存储模式
  16. uvc camera MTK平台调试总结
  17. Proteus元器件对照表
  18. Java Jersey使用总结
  19. 为了远方的爱-2016年东方红公益基金捐赠致辞
  20. linux查询raid信息,linux查看raid信息

热门文章

  1. MySQL --alter table的使用
  2. MFC调用Opencv显示视频
  3. 为什么博图中放置按下按钮无反应_为什么点击按钮毫无反应
  4. Vue项目中操作svg文件
  5. kindle出现电池感叹号,充电黄灯亮,怎么解决?按AWZ客服的回复弄好了。
  6. zblog php getlist,zblog使用getlist方法调用置顶文章
  7. 侍魂服务器维护,侍魂手游8月5日停机维护更新公告
  8. iqoo手机可以刷鸿蒙系统吗,华为老机型可以更新鸿蒙系统么-华为哪些老机型支持鸿蒙系统...
  9. 当今流行计算机漏洞_当今数字化转型的路线图
  10. 十进制与8421码、5421码、2421码、余3码之间的转换