打印
[应用相关]

FSMC工程 ILI9325驱动LCD

[复制链接]
1320|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
开发环境:
STM32F103ZET6      STM32CubeMX       Keil5

使用STM32CubeMx创建FSMC工程,生成后使用keil5创建TFT-LCD驱动程序,实现在LCD上显示。



作者:停下浮躁的心
链接:https://www.jianshu.com/p/ab082c9290f7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用特权

评论回复
沙发
internally|  楼主 | 2020-7-22 20:22 | 只看该作者
网上有一些配置FSMC的,有驱动TFT-LCD的程序,不过大多是标准库的,有一些找到的驱动程序可是试了试,没有效果,所以自己修改。

使用特权

评论回复
板凳
internally|  楼主 | 2020-7-22 20:23 | 只看该作者
现在有四块屏,1602(显示一些数字),128604(显示字符,简单图片),2.4寸TFT液晶屏(ili9325驱动,可触摸,240*320),3.5寸TFT(hx8357驱动,可触摸),此篇只写2.4寸TFT液晶屏,基本方法是修改厂家提供的使用FSMC的驱动文件,将标准库文件修改为在HAL库中可以运行的文件,因为之前将12864的标准库程序修改为HAL库程序成功,所以可以借鉴。

使用特权

评论回复
地板
internally|  楼主 | 2020-7-22 20:23 | 只看该作者
1602

使用特权

评论回复
5
internally|  楼主 | 2020-7-22 20:24 | 只看该作者
12864

使用特权

评论回复
6
internally|  楼主 | 2020-7-22 20:24 | 只看该作者
12864

使用特权

评论回复
7
internally|  楼主 | 2020-7-22 20:25 | 只看该作者
3.5TFT-LCD


使用特权

评论回复
8
internally|  楼主 | 2020-7-22 20:26 | 只看该作者



使用特权

评论回复
9
internally|  楼主 | 2020-7-22 20:27 | 只看该作者
在网上使用STM32CubeMx配置FSMC的工程有一些,不过存在问题

使用特权

评论回复
10
internally|  楼主 | 2020-7-22 20:28 | 只看该作者
使用STM32CubeMx配置FSMC,GPIO

FSMC介绍

使用特权

评论回复
11
internally|  楼主 | 2020-7-22 20:28 | 只看该作者
1. STM32CubeMx如何配置FSMC

按照上一篇的方法创建一个工程后,在引脚设置页面的左侧有FSMC的配置,不过STM32CubeMx的版本不同,STM芯片的选择不同,FSMC配置选项也不同,

使用特权

评论回复
12
internally|  楼主 | 2020-7-22 20:30 | 只看该作者
FSMC(16位)主要配置的引脚为

      CS 液晶屏片选    NE4

      RS  即LCD Register Select  PG0  (A10)

      WR  写信号    PD5

      RD 读信号    PD4

      以及16位数据总线,高八位和第八位

使用特权

评论回复
13
internally|  楼主 | 2020-7-22 20:30 | 只看该作者
不过液晶屏会有BL背光控制和RST复位引脚,需要在配置完FSMC后再添加两个输出引脚。

那么问题来了,FSMC配置中的内存类型怎么选,是选SRAM还是其他?

使用特权

评论回复
14
internally|  楼主 | 2020-7-22 20:31 | 只看该作者
我觉得选图中所示可以直接选择寄存器数据选择信号引脚为A10即PG0,这符合我的彩屏的实际情况,具体怎么选要先看一下自己彩屏正常工作时配置了那些引脚。

使用特权

评论回复
15
internally|  楼主 | 2020-7-22 20:31 | 只看该作者
在配置了FSMC后再经过一些小的修改就可以生成工程,添加自己的代码。

使用特权

评论回复
16
internally|  楼主 | 2020-7-22 20:32 | 只看该作者
注意:

使用不同驱动的彩屏在初始化时对寄存器的操作都是不同的,一定要找到可以在自己彩屏上正常运行的程序,因为在初始化函数中都会对很多寄存器写入不同的值,错一个可能就无法初始化成功。

使用特权

评论回复
17
internally|  楼主 | 2020-7-22 20:33 | 只看该作者
使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11,A10作为数据命令区分线,注意设置时STM32内部会右移一位对其! 111110=0X3E。

使用特权

评论回复
18
internally|  楼主 | 2020-7-22 20:33 | 只看该作者
因为在标准库中和HAL库中数据类型本质相同,但表示不同,比如在标准库中为u16,不过在HAL库中却是uint16_t,需要注意。

使用特权

评论回复
19
internally|  楼主 | 2020-7-22 20:34 | 只看该作者
在标准库中GPIO和FSMC相关结构体具体定义是不同的,也需要修改。

使用特权

评论回复
20
internally|  楼主 | 2020-7-22 20:34 | 只看该作者
基本步骤:
修改向寄存器地址写数据和命令的函数

注意是否在STM32CUBEMX中配置好时钟,时钟配置是很重要的

修改LCD的初始化函数

修改GPIO初始化函数,还要使能相关引脚时钟

注意除了FSMC相关引脚配置为复用推挽输出外,PB0和PC5需要配置为推挽输出

修改FSMC初始函数,需要使能FSMC时钟

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

315

帖子

0

粉丝