STM32F4 FSMC TFTLCD CUBEMX HAL库配置(学习记录)

一、简介

相关知识

1)8080并口方式 

在微机系统内,如系统部件之间的数据传送大多数使用并行数据传送方式。并行数据每一位都对应独立的传输线路,所以数据传送速度块,但是线路多,一般只用于较短距离传送。因此在嵌入式开发中芯片的外部接口多为串行接口,然而由于显示屏中要求刷新速率高,所以OLED和LCD显示屏中依然会用到8080或8060并行接口进行通信。

2)FSMC 静态存储控制器

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

STM32F4 的 FSMC 将外部设备分为 2 类: NOR/PSRAM 设备、NAND/PC 卡设备。他们共用地址数据总线等信号,他们具有不同的 CS 以区分不同的设备。TFT LCD使用FSMC的第四个部分。

二、CUBEMX配置

这里以stm32f407zgt6正点原子探索者开发板为例:

1.配置好RCC、时钟树,这里根据自己需要配置就行了

2.随后配置FSMC

 因为LCD使用FSMC的第四模块,这里选择NE4作为片选引脚,存储类型为LCD接口,寄存器挑选为A6,数据为16位。根据自己实际电路来配置,我这里电路引脚和软件默认设置的一样的。

随后配置时序:

这里配置好后,芯片引脚自动进行选择,这里注意观察配置的引脚是否与实际原理图一致。这里不清楚的可以参考资料3。

3.生成代码,添加TFT LCD驱动文件。

我这里驱动文件,直接用的正点原子的开发板资料,进行修改,不想看修改过程可以直接用我修改后的文件,直接添加进去就可以用了。

1)在文件所对应位置新建文件夹USER,将驱动文件放入其中。

2) KEIL中添加这两个文件

3)魔法棒中添加两个文件夹位置以及主程序中添加头文件“LCD.h”

 4)lcd.c文件中注释掉串口和延时头文件

5)注释掉这段HAL_SRAM_MspInit函数,因为CUBEMX中为我们配置好了,这里再用会出现重复定义的错误。

 6)LCD初始化函数中,注释掉FSMC和SRAM初始化的内容,原因与上面一样。

注意这里不要把背光配置注释掉了,按理这个背光也可以在CUBEMX里面配置好,然后就可以把这里注释掉。

 7)注释掉所有的delay_ms和delay_us。这里不注释会出错,因为没有定义延时函数。我不太清楚这里延时的作用,可能是保证每步配置完成吧,但是我这里注释了之后没有影响配置。

 

 8)注释掉串口,没有用,若需要自己配置就行了

4.主程序事例,主程序添加代码

#include "lcd.h"
#include "stdio.h"
……
int main()
{
    u8 x=0;
    u8 lcd_id[12];				//存放LCD ID字符串
    ……
    LCD_Init();           			//初始化LCD FSMC接口
    POINT_COLOR=RED;     			//画笔颜色:红色
	sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。

    while(1)
    {
      switch(x)
		{
			case 0:LCD_Clear(WHITE);break;
			case 1:LCD_Clear(BLACK);break;
			case 2:LCD_Clear(BLUE);break;
			case 3:LCD_Clear(RED);break;
			case 4:LCD_Clear(MAGENTA);break;
			case 5:LCD_Clear(GREEN);break;
			case 6:LCD_Clear(CYAN);break; 
			case 7:LCD_Clear(YELLOW);break;
			case 8:LCD_Clear(BRRED);break;
			case 9:LCD_Clear(GRAY);break;
			case 10:LCD_Clear(LGRAY);break;
			case 11:LCD_Clear(BROWN);break;
		}
		POINT_COLOR=RED;	  
		LCD_ShowString(30,40,210,24,24,"Explorer STM32F4");	
		LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
		LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
 		LCD_ShowString(30,110,200,16,16,lcd_id);		//显示LCD ID	      					 
		LCD_ShowString(30,130,200,12,12,"2017/4/8");	      					 
		x++;
		if(x==12)x=0;		
		HAL_Delay(700);		       
}

三、调试

编译下载,0错误0警告

 

其他

LCD驱动文件代码比较长,放资源包了

参考资料

【1】野火stm32f407霸天虎V2开发板使用cubemx驱动4.3寸LCD屏_stm32cube nt35510-CSDN博客

【2】并行接口、协议和相关芯片介绍(8080、8060)_8080总线-CSDN博客

【3】FSMC连接TFT LCD原理与电路——Kevin带你读《STM32Cube高效开发教程基础篇》_哔哩哔哩_bilibili

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值