原创

stm32基于FSMC实现LCD驱动

温馨提示:
本文最后更新于 2025年11月25日,已超过 14 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

一、项目简介

  项目使用的芯片有STM32F103ZET6,屏幕使用Z350IT002是一块320*480的屏幕,驱动使用ILI9486。

  程序框架使用的是STM32的hal库,片上外设使用到的GPIO PG15和PB0,以及FSMC。

  在LCD上实现电角度与物理角的显示。

二、FSMC简介

  FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接, 接口支持包括 SRAM、 NAND FLASH、 NOR FLASH 和 PSRAM 等存储器。

  在操作 LCD 的时候需要用到的就只有: RS、 D0~D15、 WR、 RD 和 CS。其操作时序和 SRAM的控制完全类似,唯一不同就是 TFTLCD 有 RS 信号,但是没有地址信号。

  而RS信号是用来控制LCD是写命令还是写数据的,本质上可以理解为一个地址,我们可以将RS信号接在FSMC的地址线上,可以选任意一根地址线,但注意接在不同地址线,地址的值会不同。

  这样数据引脚,地址引脚,写信号(WE)、读信号(OE)、片选信号(CS)都可以和LCD对应脚连接起来,引脚初始化时,复用FSMC输出即可。LCD中还有RST,BL,接单片机的普通IO口即可。


模块引脚功能描述对应 STM32 FSMC/IO 引脚
CS片选(低有效)PG12(FSMC_NE4)
RS命令 / 数据选择LCD Register Select(A10)
WR写使能PD5(FSMC_NWE)
RD读使能PD4(FSMC_NOE)
RESET模块复位 PG15

原理图



三、问题记录

   由于KEIL中优化级别问题导致屏幕无法渲染,调整最低级别显示正常。

   代码我放到gitee上了 https://gitee.com/lijunze94/bldc-montor,感兴趣的可以看下 。

最后记录一下




本文详细介绍了STM32 LCD模块的驱动实现,包括硬件连接、引脚配置、FSMC接口配置以及软件实现。

正文到此结束