F1——FSMC控制TFTLCD
stm32F103可以控制LCD的显示,但是如果直接采用并口去控制的话,读写时序都是自己程序完成,效率不高。于是使用FSMC来控制LCD。
TFTLCD可以当作一个SRAM和stm32连接,因为LCD的引脚可以当作SRAM的引脚用。
LCD的引脚:
CS: TFTLCD 片选信号。低有效.
WR:向 TFTLCD 写入数据控制。 低有效.
RD:从 TFTLCD 读取数据控制。 低有效.
RS:命令/数据选择( 0,读写命令; 1,读写数据)。
DB[15:0]:16 位双向数据线。
RST:TFTLCD 复位。
SRAM引脚:
从上图中可以看出外部 SRAM 的控制一般有:
地址线(如 A0~A25)、
双向 数据线(如 D0~D15)、
写信号( NWE)、
读信号( NOE)、
片选信号(NE[x]),
如果 SRAM 支持字节控制,那么还有 UB/LB 信号。
而 TFTLCD 的信号我们包括: RS、DB0-DB15、 WR、 RD、 CS、 RST 等,其中真正在操 作 LCD 的时候需要用到的就只有:RS、 DB0-DB15、 WR、 RD、 CS。这样一来 它们的操作接口信号完全类似,唯一不同就是 TFTLCD 有 RS 信号,但是没有地 址信号。
LCD 的RS信号可以用地址线A 0--A25来代替,只需要其中一个Ax来表示RS即可.
FSMC的外部设备地址映射分为4个块,我们用bank1是用来控制SRAM的.bank1里又分为4个区,区就随便选了.这个会在FSMC的初始化里体现.
程序主要就是初始化的配置,主要是三个,一个是SRAM的初始化配置,一个是读时序配置的初始化,一个是写时序配置的初始化.
SRAM的初始化是主体,宁外两个是进行自动化读写的配置函数.
当三个函数配置好后就可以直接在对应区的地址上进行写入数据了.
还有那个数据的8位和16位的区别见[https://blog.****.net/jxnu_xiaobing/article/details/8718566](https://blog.****.net/jxnu_xiaobing/article/details/8718566
有详细解释.