图片来源于网络,如若侵权请联系博主删除
文章目录
- 1. 背景
- 2. 基础知识
- 2.1 TFT-LCD
- 2.2 硬件接线
- 2.3 FMC
- 2.4 ILI9481
- 3. 软件抽象
1. 背景
最近做项目需要,博主在某宝上买了一块3.5寸的TFT屏,店家虽然发了资料,但是往产品上移植驱动点亮屏幕的过程中踩了不少的坑,本篇主要记录该款屏幕在STM32F446ZET6上用FMC的方式驱动点亮的过程,希望对感兴趣的小伙伴有帮助,请大家多多点赞、转发、交流!
在此贴上这款屏幕的某宝链接:3.5寸IPS液晶屏IPS3.5寸全视角TFT显示屏8/16位SPI串口TFT40P彩屏,博主买的是裸屏。
2. 基础知识
2.1 TFT-LCD
液晶显示器,即 Liquid Crystal Display(LCD),利用了液晶导电后透光性可变的特性,配合显示器光源、彩色滤光片和电压控制等工艺,最终可以在液晶阵列上显示彩色的图像。目前液晶显示技术以 TN、STN、TFT 三种技术为主,TFT-LCD 即采用了 TFT(Thin Film Transistor)技术的液晶显示器,也叫薄膜晶体管液晶显示器。
TFT-LCD 与无源 TN-LCD、STN-LCD 的简单矩阵不同的是,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT 式显示器具有很多优点:高响应度,高亮
度,高对比度等等。TFT 式屏幕的显示效果非常出色,广泛应用于手机屏幕、笔记本电脑和台式机显示器上。
由于液晶本身不会发光,加上液晶本身的特性等原因,使得液晶屏的成像角受限,我们从屏幕的的一侧可能无法看清液晶的显示内容。液晶显示器的成像角的大小也是评估一个液晶显示器优劣的指标,目前,规格较好的液晶显示器成像角一般在 120°~160°之间。
博主用的这款液晶规格如下:
博主选择的接口方式是16BIT并口,注意这款屏幕的驱动IC是ILI9481,这也是本篇的主角。
屏幕的接口定义如下:
特别注意:IM0/1/2 端口选择,在硬件上一般是选用电阻上下拉来做选择,因为博主选择的接口方式是16BIT,所以这里IM0/1/2 端口的配置就是 0 1 0的方式,具体看下表:
当然淘宝店家也给出了参考设计:
2.2 硬件接线
博主要用STM32F446ZET6自带的FMC功能驱动控制屏幕,所以在硬件连线上当然就要根据FMC的接口定义来接。
2.3 FMC
TBD.
2.4 ILI9481
配置驱动:
void lcd_ex_ili9481_reginit(void)
{
lcd_wr_regno(0x11);
bsp_DelayMS(20);
lcd_wr_regno(0xD0);
lcd_wr_data(0x07);
lcd_wr_data(0x42);
lcd_wr_data(0x1B);
lcd_wr_regno(0xD1);
lcd_wr_data(0x00);
lcd_wr_data(0x05);
lcd_wr_data(0x0C);
lcd_wr_regno(0xD2);
lcd_wr_data(0x01);
lcd_wr_data(0x11);
lcd_wr_regno(0xC0);
lcd_wr_data(0x00);
lcd_wr_data(0x3B);
lcd_wr_data(0x00);
lcd_wr_data(0x02);
lcd_wr_data(0x11);
lcd_wr_regno(0xC5);
lcd_wr_data(0x02);
lcd_wr_regno(0xC8);
lcd_wr_data(0x00);
lcd_wr_data(0x22);
lcd_wr_data(0x37);
lcd_wr_data(0x20);
lcd_wr_data(0x04);
lcd_wr_data(0x00);
lcd_wr_data(0x04);
lcd_wr_data(0x55);
lcd_wr_data(0x77);
lcd_wr_data(0x02);
lcd_wr_data(0x04);
lcd_wr_data(0x00);
lcd_wr_regno(0x36);
lcd_wr_data(0x2f);//0a
lcd_wr_regno(0x3A);
lcd_wr_data(0x55);//66
bsp_DelayMS(120);
lcd_wr_regno(0x29);
}
3. 软件抽象
TBD.