本帖最后由 cztqwan 于 2017-9-2 19:32 编辑
【STM32F723E-DISCO开发板试用体验】04-LCD显示
一、简介
STM32F723E-DISCO上带了一块240x240像素的TFTLCD屏幕,本贴就简单介绍如何驱动该屏幕。
STM32F723E-DISCO上的TFTLCD屏幕是一块具有MCU接口的屏幕,其驱动芯片为st7789h2。st7789h2液晶控制器自带显存,通过80并口和STM32F723连接,STM32F723 通过FMC接口来控制TFTLCD的显示。
二、硬件电路分析
从电路图中可以看出,该驱动芯片采用了16位的数据线,主要的控制引脚如下:
/CS: TFTLCD 片选信号。
/WR:向TFTLCD写入数据。
/RD:从TFTLCD读取数据。
DB:16位双向数据线。
RESET:硬复位 TFTLCD。
RS:命令/数据标志(0,读写命令;1,读写数据)。
FMARK:信号同步。
LEDA和LEDK:背光控制。从背光的硬件电路可以看到可以通过PH11进行控制。
该屏幕和STM32F723的接口如下:
STM32F723的FMC将外部设备分为3类:NOR/PSRAM设备、NAND设备和SDRAM设备。它们共用地址数据总线等信号,具有不同的 CS 以区分不同的设备。STM32F723E-DISCO的TFTLCD选择FMC_NE2做片选,其实就是将 TFTLCD 当成 SRAM来控制。
LCD_BL(背光控制)对应 PH11;
LCD_CS 对应 PG9 即 FMC_NE2;
LCD_RS 对应 PF0 即 FMC_A0;
LCD_WR 对应 PD5 即 FMC_NWE;
LCD_RD 对应 PD4 即 FMC_NOE;
LCD_D则直接连接在 FMC_D15~FMC_D0;
三、程序分析
在stm32cubef7的官方示例中包含了TFTLCD的实例代码,主要包括以下文件:
其中:
st7789h2.c:主要是驱动芯片的初始化和底层函数封装。
stm32f713e_discovery.c:主要是STM32F723的底层接口初始化,封装后供st7789h2.c调用。
stm32f713e_discovery_lcd.c:主要是对中对屏幕的操作函数的封装,并且实现了字符显示、常用图形显示等功能。
为了简便,在LED工程的基础上,在HARDWARE目录下新增lcd.c和st7789h2.c文件以及它们的头文件。lcd.c包含了上面提到的stm32f713e_discovery.c和stm32f713e_discovery_lcd.c的主要内容。
接下来,就来看看TFTLCD是怎么初始化的。首先,在主函数中,调用BSP_LCD_Init()函数进行LCD的初始化。
在BSP_LCD_Init()中,首先进行了MPU内存保护的设置,然后调用BSP_LCD_InitEx()并传入设置屏幕显示方向的参数进行LCD的初始化。
在BSP_LCD_InitEx()中,调用BSP_LCD_MspInit()函数对背光、复位和信号同步引脚进行初始化,接着获取ST7789H2驱动结构体,并调用ST7789H2的初始化函数对ST7789H2进行初始化。
LcdDrv->Init()函数指向ST7789H2_Init()函数,ST7789H2_Init()函数中用到了许多LCD_IO_*开头的函数,ST7789H2_Init()对ST7789H2进行初始化。
LCD_IO_*开头的函数是FMC的操作函数的封装,FMC_BANK2_Init()初始化了FMC接口。
在lcd.c文件中,实现了许多和LCD显示相关的函数,包括字符显示、基本图形绘制和图片显示等功能。
四、效果
利用上面提到的功能函数,可以在TFTLCD上显示内容了,效果如下图。
本帖最后由 cztqwan 于 2017-9-2 19:32 编辑
【STM32F723E-DISCO开发板试用体验】04-LCD显示
一、简介
STM32F723E-DISCO上带了一块240x240像素的TFTLCD屏幕,本贴就简单介绍如何驱动该屏幕。
STM32F723E-DISCO上的TFTLCD屏幕是一块具有MCU接口的屏幕,其驱动芯片为st7789h2。st7789h2液晶控制器自带显存,通过80并口和STM32F723连接,STM32F723 通过FMC接口来控制TFTLCD的显示。
二、硬件电路分析
从电路图中可以看出,该驱动芯片采用了16位的数据线,主要的控制引脚如下:
/CS: TFTLCD 片选信号。
/WR:向TFTLCD写入数据。
/RD:从TFTLCD读取数据。
DB:16位双向数据线。
RESET:硬复位 TFTLCD。
RS:命令/数据标志(0,读写命令;1,读写数据)。
FMARK:信号同步。
LEDA和LEDK:背光控制。从背光的硬件电路可以看到可以通过PH11进行控制。
该屏幕和STM32F723的接口如下:
STM32F723的FMC将外部设备分为3类:NOR/PSRAM设备、NAND设备和SDRAM设备。它们共用地址数据总线等信号,具有不同的 CS 以区分不同的设备。STM32F723E-DISCO的TFTLCD选择FMC_NE2做片选,其实就是将 TFTLCD 当成 SRAM来控制。
LCD_BL(背光控制)对应 PH11;
LCD_CS 对应 PG9 即 FMC_NE2;
LCD_RS 对应 PF0 即 FMC_A0;
LCD_WR 对应 PD5 即 FMC_NWE;
LCD_RD 对应 PD4 即 FMC_NOE;
LCD_D则直接连接在 FMC_D15~FMC_D0;
三、程序分析
在stm32cubef7的官方示例中包含了TFTLCD的实例代码,主要包括以下文件:
其中:
st7789h2.c:主要是驱动芯片的初始化和底层函数封装。
stm32f713e_discovery.c:主要是STM32F723的底层接口初始化,封装后供st7789h2.c调用。
stm32f713e_discovery_lcd.c:主要是对中对屏幕的操作函数的封装,并且实现了字符显示、常用图形显示等功能。
为了简便,在LED工程的基础上,在HARDWARE目录下新增lcd.c和st7789h2.c文件以及它们的头文件。lcd.c包含了上面提到的stm32f713e_discovery.c和stm32f713e_discovery_lcd.c的主要内容。
接下来,就来看看TFTLCD是怎么初始化的。首先,在主函数中,调用BSP_LCD_Init()函数进行LCD的初始化。
在BSP_LCD_Init()中,首先进行了MPU内存保护的设置,然后调用BSP_LCD_InitEx()并传入设置屏幕显示方向的参数进行LCD的初始化。
在BSP_LCD_InitEx()中,调用BSP_LCD_MspInit()函数对背光、复位和信号同步引脚进行初始化,接着获取ST7789H2驱动结构体,并调用ST7789H2的初始化函数对ST7789H2进行初始化。
LcdDrv->Init()函数指向ST7789H2_Init()函数,ST7789H2_Init()函数中用到了许多LCD_IO_*开头的函数,ST7789H2_Init()对ST7789H2进行初始化。
LCD_IO_*开头的函数是FMC的操作函数的封装,FMC_BANK2_Init()初始化了FMC接口。
在lcd.c文件中,实现了许多和LCD显示相关的函数,包括字符显示、基本图形绘制和图片显示等功能。
四、效果
利用上面提到的功能函数,可以在TFTLCD上显示内容了,效果如下图。