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 配置 LCD 驱动 #### 创建新项目并选择微控制器 打开STM32CubeMX,并创建一个新的项目。在弹出的选择窗口中,输入项目的名称和路径,然后点击下一步。选择合适的STM32系列微控制器型号,例如STM32F103C8T6[^1]。 #### 配置系统时钟 进入“Clock Configuration”页面,设置系统的主频和其他必要的时钟参数。对于大多数应用,默认的HSE(外部高速振荡器)或HSI(内部高速振荡器)配置即可满足需求。调整PLL(锁相环),使系统时钟达到所需的频率。 #### 配置引脚布局与外设 切换到“Pinout & Configuration”标签页,在这里可以直观地看到所选MCU的所有可用引脚及其当前分配情况。为了驱动LCD1602或其他类型的LCD显示,需根据具体硬件连接方式来指定相应的GPIO端口作为数据总线以及RS、RW、E等控制信号线。 如果要使用更复杂的TFT-LCD,则可能还需要配置FMC(灵活内存控制器)。这涉及到将某些特定引脚映射给FMC功能,并确保这些引脚能够正确地与目标显示器相连[^3]。 #### 启用并配置相关外设 前往“Connectivity”下的“Peripherals”,找到并勾选SPI/I2C/UART/FMC等相关通信接口,依据实际使用的LCD模块类型而定。如果是简单字符型液晶如LCD1602,通常只需处理几个离散IO;但对于彩色图形界面则往往依赖于专用接口比如FMC/SPI等等。 针对FMC的具体设定,可以在其子项里进一步细化诸如访问模式(Access Mode)、地址/数据宽度(Address/Data Widths)之类的属性值,使之匹配待接驳设备的技术指标说明书中的描述[^4]。 #### 生成初始化代码 完成上述各项配置之后,转至顶部菜单栏里的“Project”-> “Generate Code”。此时软件会自动生成一套完整的启动框架及外围器件初始化序列,其中包括了对选定LCD的支持逻辑。 ```c // 示例:部分生成的初始化代码片段 (假设为LCD1602) void MX_GPIO_Init(void){ __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin = RS_Pin | E_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } void Lcd_WriteCommand(uint8_t cmd){ HAL_GPIO_WritePin(RS_GPIO_Port, RS_Pin, RESET); // Command mode // Write command to data lines... } ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YZW0123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值