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调试相关推荐
- STM32F4开发-TFT屏驱动(支持横屏、竖屏选择)
一.总述 以下的程序都是基于 https://blog.csdn.net/zhyulo/article/details/89816439 方法建立的工程. 代码已上传:https://download ...
- stm32f4 SD卡调试日志
1.写SD卡时产生hard_fault,由于stm32f429存在两块RAM,当写缓存分配为RAM2区域时,DMA不支持RAM2到外设传输,故产生hard_fault: 2.写过程报0x01 ERRO ...
- CubeMX+VSCode+Ozone的STM32开发工作流(二)VSCode环境配置
neozng1@hnu.edu.cn 本教程的示例代码是笔者参加RoboMaster机甲大师赛为机器人编写的控制器框架,你可以直接克隆仓库,阅读仓库下的Markdown文档获得更好的体验,记得点一个小 ...
- 【单片机学习笔记】(31):串口调试技巧、TFT触摸屏初识别、stm32F4与F1对比使用(全系列初始化概览)、YSF4的光耦隔离保护、外部中断与定时器消抖相结合的按键检
串口调试技巧 可以将调试时会用到,但实际演示是不需要用到的代码用 #if xxx //这里放调试代码 #endif xxx是 一个宏定义,如果等于0则不编译相关代码,如果为1则编译相关代码 TFT ...
- vscode编译、调试stm32F4系列mcu的程序
捣腾很长时间了,用vscode编译.调试stm32F4系列mcu的程序.记录下. launch.json @TOC // AUTOMATICALLY GENERATED FILE. PLEASE DO ...
- ESP32-CAM拍照输出RGB565数据,wifi传输到stm32控制tft屏显示拍照图像
ESP32-CAM拍照输出RGB565数据,wifi传输到stm32控制tft屏显示拍照图像 拍照采用安信可的ESP32-CAM,显示屏采用2.2寸,TFT SPI 240x320屏幕,使用stm32 ...
- 天马3.5寸TFT屏调试文档
天马 3.5 寸 TFT 屏调试文档 王小涛 2009 年 6 月 12 日 修订版 1 .坐标定位 触摸屏点击时驱动读入的是ADC值,也就是电压值(AD后),一个是x坐标的ADC值,一个是y坐标的A ...
- TFT LCD屏接口芯片-通达LT7381(SSD1963)
技术交流:13602504660 LT7381 是一款极具价格优势的 TFT-LCD 图形显示芯片. 其主要的功能就是协劣 MCU 将所要显示到 TFT 屏的内容传递给 TFT 驱劢器( Drive ...
- stm32f4 SPI DMA FLASH 传输调试
来源:项目中需要用stm32对外部spi flash(m25p16 2MB)进行快速读取,主要是图像数据. 平台:stm32f407---168MHz,FreeRTOS V7.3.0 主要参考:ht ...
最新文章
- c java 传参数_Java和C的方法参数传递方式的比较
- 自我总结(四) ---java web项目完结,j2ee的开始
- 【caffe-Windows】微软官方caffe之 Python接口配置及图片生成实例
- html5 webview,HTML5+学习历程之webview经典案例
- p批处理替换目录下文本中的字符串
- PL/Sql 中创建、调试、调用存储过程
- 深度剖析Java数据结构之迭代器(Iterator)
- CodeForces 173B Chamber of Secrets(最短路)
- iOS底层探索之多线程(二)—线程和锁
- python怎么设置图片_python 调整图片亮度的示例
- python爬虫简历项目怎么写_python爬虫简历
- windows7中文企业版安装英文语言包
- ps保存psd后图层全没了_ps保存成psd格式后,再打开就是一张图片而不显图层,怎么办啊??急!!...
- node mysql菜鸟教程_Node.js Web 模块
- 手机照片误删除恢复 亲测可行 MTP模式下恢复数据 USB存储模式
- uvc camera MTK平台调试总结
- Proteus元器件对照表
- Java Jersey使用总结
- 为了远方的爱-2016年东方红公益基金捐赠致辞
- linux查询raid信息,linux查看raid信息
热门文章
- MySQL --alter table的使用
- MFC调用Opencv显示视频
- 为什么博图中放置按下按钮无反应_为什么点击按钮毫无反应
- Vue项目中操作svg文件
- kindle出现电池感叹号,充电黄灯亮,怎么解决?按AWZ客服的回复弄好了。
- zblog php getlist,zblog使用getlist方法调用置顶文章
- 侍魂服务器维护,侍魂手游8月5日停机维护更新公告
- iqoo手机可以刷鸿蒙系统吗,华为老机型可以更新鸿蒙系统么-华为哪些老机型支持鸿蒙系统...
- 当今流行计算机漏洞_当今数字化转型的路线图
- 十进制与8421码、5421码、2421码、余3码之间的转换