📖 第 20 章:TFT-LCD(MCU屏)实验(TFT-LCD MCU Screen)

1次阅读
没有评论
这一章在干嘛?

TFT-LCD 实验:RGB 接口时序、FSMC 驱动 8080 接口、字库与图片显示、触摸。F407 通过 FSMC 直接驱动 16 位并口 LCD,速度比 SPI 快一个数量级。

20.1 TFT-LCD 简介

20.2 硬件设计

20.3 程序设计

20.4 下载验证

20.1 TFT-LCD 简介

DMF407 配 ATK-4.3 寸 TFTLCD(800×480),16 位并口(8080 接口),由 STM32 FSMC 总线驱动。

📖 第 20 章:TFT-LCD(MCU屏)实验(TFT-LCD MCU Screen)原书图 20.1.1:ATK-4.3 TFTLCD 模块

8080 接口信号:

信号 方向 作用
CS 输入 片选
RS 输入 数据/命令选择
WR 输入 写使能
RD 输入 读使能
DB[15:0] 双向 数据线
RST 输入 复位
BL 输入 背光

FSMC 控制 8080 原理:FSMC 把外部 SRAM 的写时序映射到 LCD 命令/数据。

  • 写命令:*(uint16_t *)0x6C000000 = cmd;
  • 写数据:*(uint16_t *)0x6C000002 = data;

FSMC 地址线 A23 高低区分命令/数据:所以 A23=0 写命令,A23=1 写数据。

20.2 硬件设计

FSMC 引脚映射:

FSMC 信号 STM32 引脚 说明
D[15:0] PDx/PDx/… 数据总线
NE4 PG12 片选 CS
NOE PD4 读 RD
NWE PD5 写 WR
A23 PD13 RS(命令/数据)
BL PB5 背光 PWM

📖 第 20 章:TFT-LCD(MCU屏)实验(TFT-LCD MCU Screen)原书图 20.2.1:FSMC 与 LCD 引脚映射

20.3 程序设计

20.3.1 FSMC 配置

CubeMX 配置 FSMC:

  • NOR Flash/PSRAM
  • Sub-bank:Bank1 NOR 4
  • Memory type:SRAM
  • Data width:16 bit
  • Write operation:Enabled
  • Address/Data multiplexing:Disabled

20.3.2 LCD 驱动初始化

  1. 背光开;
  2. 读 ID(常用 ILI9488/NT35510);
  3. 根据 ID 选择驱动序列(厂家提供);
  4. 设置扫描方向 / 显示模式。

20.3.3 关键 API

void LCD_Init(void);                              // 初始化
void LCD_DisplayOn(void);                         // 开显示
void LCD_Clear(uint16_t color);                   // 全屏清色
void LCD_Fill(x0,y0,x1,y1, color);               // 矩形填充
void LCD_DrawLine(x0,y0,x1,y1, color);           // 画线
void LCD_ShowChar(x, y, ch, size, color, bk);    // 显示字符
void LCD_ShowString(x, y, str, size, color, bk); // 显示字符串
void LCD_ShowNum(x, y, num, len, size, color, bk);
void LCD_ShowChinese(x, y, str, color, bk);      // 显示汉字(外部字库)

📖 第 20 章:TFT-LCD(MCU屏)实验(TFT-LCD MCU Screen)原书图 20.3.3.1:LCD 显示字符字模示例

📖 第 20 章:TFT-LCD(MCU屏)实验(TFT-LCD MCU Screen)原书图 20.3.3.2:FSMC 8080 写时序图

20.3.4 触摸(I2C 或 SPI)

ATK-4.3 屏支持触摸(FT5206/GT9147),通过 I2C 通信,INT 引脚触发中断读取坐标。

清屏比画图快 100 倍:调试时用 LCD_Clear 代替反复刷屏,肉眼可见不卡顿。

20.4 下载验证

烧录后屏幕显示红绿蓝白四色 + 字符串 + 数字 + 汉字;触摸可以读到坐标。

不同 LCD 厂家驱动代码不同:拿到屏幕先读 ID,再选驱动序列,否则初始化失败显示白屏。

FSMC 驱动 LCD 时,命令地址与数据地址如何区分?

用 FSMC 地址线 A23:A23=0 写命令,A23=1 写数据。

8080 接口最少需要多少根线?

CS / RS / WR / RD / D[15:0] / RST = 至少 21 根(含数据和电源)。

TFTLCD 显示汉字需要什么?

外部字库(GBK 取模数组)。

正文完
 0