STM32CubeMX之FMC驱动TFT-LCD屏

提示:使用STM32CubeMX配置 STM32F743IIT6 的硬件FMC外设驱动TFT-LCD屏幕


这里就不对FMC做过多介绍。不清楚的可以自己搜索一下,咱们这里直接上干活。

一、CubeMX配置

开发板上TFT-LCD接口如图:在这里插入图片描述

	LCD原理图如下:

在这里插入图片描述引脚说明如下:

●LCD D0-D15:使用了16bit:FMC D0 - FMC D15;
●LCD_RS:使用FMC A18来控制向LCD写入数据还是命令(0-命令,1-数据);
●LCD_BL:背光控制,对应PB5;
●LCD_CS:LCD片选信号,对应PD7,FMC_NE1;
●LCD_WR :LCD写使能,对应PD5,FMC_NWE;
●LCD_RD:LCD读使能,对应PD4,FMC_NOE;
●RESET:LCD复位信号,直接与单片机复位信号接在一起;

参数设置如下:
在这里插入图片描述

二、参数设置讲解

1、查看参数MCU屏幕控制芯片手册

在这里插入图片描述

2、填写对应参数

时序参数都是以HCLK的周期为单位的,在本文中HCLK=240Mhz,所以一个周期为4.17ns。其中主要的时序参数配置方法如下。

读时序配置

在这里插入图片描述

① 地址建立时间:Address setup time(ADDSET)

该值必须是0~15个HCLK。从表中可以看出,NT35310控制器要求读的时候最小为10ns,,所以设为3即可,3x4.17=12.51ns。

② 数据持续时间:Data setup time(DATASET)

该值必须是0~255个HCLK,从图中可以看出,NT35310控制器要求的数据建立时间最小为10ns,理论上设置为3即可,但因为读时序较慢这里设置为7个HCLK,设置为5以下可能就会出现显示异常的现象。

③此值必须0~15。我们这里就取默认最大的15即可

④默认A模式即可。模式A时序模型的优势在于:支持独立的读写时序控制。这一点对于控制TFT-LCD来说,非常符合。因为TFT-LCD在读的时候,一般比较慢,而在写入的时候一般比较快

写时序配置

在这里插入图片描述

① 地址建立时间:Address setup time(ADDSET)

该值必须是0~15个HCLK。从表中可以看出,NT35310控制器要求写的时候最小为0ns,,所以这里设置为0。

② 数据持续时间:Data setup time(DATASET)

该值必须是0~255个HCLK,从图中可以看出,NT35310控制器要求的数据建立时间最小为10ns,因为写时序较快这里设置为4即可。

③默认15即可

④默认A模式即可

上述步骤配置完成后就可以在工程中添加你的LCD驱动程序。

在这里插入图片描述

如果程序和MX的配置都没问题显示还不正常那就先考虑读时序里的data setup time 时间拉长。


总结

谢谢大家的关注和支持!!!码字不易请多多点赞。有啥问题可以联系本人的QQ:1458356834。

### 使用STM32CubeMX配置F407微控制器以驱动TFT显示 #### 创建新项目并选择微控制器 打开STM32CubeMX,并创建一个新的项目。选择STMicroelectronics作为制造商,然后选择具体的微控制器型号STM32F407VGT6[^1]。 #### 配置系统时钟 进入“Clock Configuration”页面调整PLL设置和其他参数来优化系统的性能和功耗。对于大多数应用,默认的最高频率(通常是168 MHz)可能是最佳选择。 #### 设置引脚布局与外设配置 切换至“Pinout & Configuration”标签页,在这里可以直观地看到所有可用引脚的状态。找到并展开FMC节点,根据所使用的TFT-LCD模块的具体电气特性指定相应的数据总线宽度以及地址/命令信号线路分配给合适的GPIO端口。 #### 启用并定制化FMC外设属性 转到“Connectivity”分类下的“Peripherals”,勾选激活FMC项之后,继续深入其子菜单完成更多细节上的设定工作,比如内存类型的选择、读取访问时间定义等重要参数均需依据实际硬件手册来进行精确匹配[^2]。 #### 生成初始化源码框架 当上述各项准备工作完成后,返回主界面顶部导航栏点击“Project -> Generate Code”。这一步骤将会自动生成一系列必要的头文件(.h)及实现函数(.c),其中包括了针对选定设备特性的底层寄存器操作序列。 #### 解决潜在冲突问题 如果遇到`lcd.c`文件里的`HAL_FSMC_MspInit()`方法同已有的`fsmc.c`里相同名称的方法发生重复声明错误,则应考虑移除前者或者重命名其中一个版本以便消除编译期警告信息;同时也要留意去除掉任何不必要的FSMC相关初始化调用以免造成逻辑混乱[^3]。 ```cpp // 示例:修改后的 lcd.h 文件部分摘录 #ifndef __LCD_H__ #define __LCD_H__ #include "main.h" void LCD_Init(void); /* ...其他API原型... */ #endif /* __LCD_H__ */ ``` ```cpp // 修改后的 lcd.c 文件片段 #include "lcd.h" #include "stm32f4xx_hal.h" void LCD_Init(void){ // 初始化代码... } ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YZW0123

谢谢大家的支持,请关注我哦!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值