ILI9481 TFT3.5寸屏STM32F446ZEXX FMC驱动方式详解

2024-01-01 22:47:22

在这里插入图片描述
图片来源于网络,如若侵权请联系博主删除



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.

文章来源:https://blog.csdn.net/Allen_Spring/article/details/132790265
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。