打印
[其他ST产品]

STM32之FSMC驱动LCD深入理解

[复制链接]
375|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CD, ST
目前市场上的LCD种类繁多,驱动方式也多种多样。
一般都是液晶面板,液晶控制器,触摸控制器三种器件进行组合的。


使用特权

评论回复
沙发
发GV第几啊|  楼主 | 2022-9-29 14:59 | 只看该作者
现在的LCD驱动框图如下:
带液晶驱动器的LCD一般都内置显存,采用8080/SPI接口。

使用特权

评论回复
板凳
发GV第几啊|  楼主 | 2022-9-29 15:05 | 只看该作者
不带液晶驱动器的LCD一般都采用RGB接口。

使用特权

评论回复
地板
发GV第几啊|  楼主 | 2022-9-29 15:06 | 只看该作者

使用特权

评论回复
5
发GV第几啊|  楼主 | 2022-9-29 15:08 | 只看该作者
现在深入理解一下用FSMC/FMC模拟8080接口驱动:

使用特权

评论回复
6
发GV第几啊|  楼主 | 2022-9-29 15:10 | 只看该作者

使用特权

评论回复
7
发GV第几啊|  楼主 | 2022-9-29 15:10 | 只看该作者

使用特权

评论回复
8
发GV第几啊|  楼主 | 2022-9-29 15:11 | 只看该作者
LCD常见的驱动芯片ILI9341用8080接口进行驱动的话,只要满足它的驱动时序就可以驱动LCD了,只是用普通的IO进行时序模拟比较复杂罢了。常见的方式是采用FSMC进行模拟,而FSMC和8080信号线和时序看起来基本一致,只是FSMC多了许多地址线而已。

使用特权

评论回复
9
发GV第几啊|  楼主 | 2022-9-29 15:12 | 只看该作者
从FSMC时序图来看,在一个写入周期内,除了地址信号,其它信号都是一致的,而地址信号A[25:0]在整个写入周期内都在生效,但是8080接口没有地址信号只有D/CX(数据/指令切换)信号,而D/CX信号只需要一个IO,那我们就可以将A[25:0]中的一个IO当作D/CX信号来用。

使用特权

评论回复
10
发GV第几啊|  楼主 | 2022-9-29 15:14 | 只看该作者
那么D/CX信号怎么实现呢?

使用特权

评论回复
11
发GV第几啊|  楼主 | 2022-9-29 15:15 | 只看该作者
D/CX信号高电平表示图像数据,低电平表示指令数据。

使用特权

评论回复
12
发GV第几啊|  楼主 | 2022-9-29 15:15 | 只看该作者
对于8080接口来说它一个周期需要D[15:0]+D/CX共17位数据就可以进行数据解析了,
而对于FSMC接口来说它一个周期需要发送A[25:0]+D[15:0]共42位数据。

使用特权

评论回复
13
发GV第几啊|  楼主 | 2022-9-29 15:20 | 只看该作者

使用特权

评论回复
14
发GV第几啊|  楼主 | 2022-9-29 15:20 | 只看该作者
数据宽度是16位的话就要注意FSMC_A地址信号和内部存储地址的对应关系,FSMC_A0对应内存地址的bit1,依次类推,FSMC_A24对应内存地址的bit25

使用特权

评论回复
15
发GV第几啊|  楼主 | 2022-9-29 15:23 | 只看该作者
我们以FSMC_Bank1_NORSRAM1作为片选内存进行分析:

使用特权

评论回复
16
发GV第几啊|  楼主 | 2022-9-29 15:25 | 只看该作者

使用特权

评论回复
17
发GV第几啊|  楼主 | 2022-9-29 15:27 | 只看该作者
FSMC_Bank1_NORSRAM1首地址是0x6000 0000,那么FSMC的地址寻址从0x6000 0000开始,假设FSMC要从首地址发数据,那它的A[25:0]就是0x6000 0000的低26位数据,它的D[15:0]就是0x01 0xa0 (0000 0001 1010 0000)。

使用特权

评论回复
18
发GV第几啊|  楼主 | 2022-9-29 15:28 | 只看该作者
假如我们的8080接口连的是FSMC_A1这个地址线,那么我们要发送指令的话A1这个IO就需要一直是0才可以,而A1对应内存地址的bit2,我们从地址0x6000 0000开始随便找一个bit2是0的地址,就可以通过这个地址发送指令数据了(只要不超出NORSRAM1的地址范围就行),比如0x6000 0000或0x6000 0001或0x6000 0002…,这些地址bit2都是0,给这些地址写数据就相当于发送指令数据了。

使用特权

评论回复
19
发GV第几啊|  楼主 | 2022-9-29 15:29 | 只看该作者
如果我们要发送图像数据,那么A1这个IO就需要一直是1才可以,那我们就需要从地址0x6000 0000开始随便找一个bit2是1的地址,就可以通过这个地址发送图像数据了(只要不超出NORSRAM1的地址范围就行),比如0x6000 0004或0x6000 0005或0x6000 0006…,这些地址bit2都是1,给这些地址写数据就相当于发送图像数据了。

使用特权

评论回复
20
发GV第几啊|  楼主 | 2022-9-29 15:34 | 只看该作者
因此FSMC模拟8080接口的指令地址和图像数据地址不是唯一的,只要满足时序要求的地址都可以进行数据传输。

使用特权

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

本版积分规则

20

主题

276

帖子

0

粉丝