对FSMC的理解
1.FSMC即灵活的静态存储控制器,能够连接同步、异步存储器和 16 位 PC 存储卡。专业讲解可以看STM32F4xx中文参考手册。
2.个人理解:
其实它就是为了扩展存储做了一种接口时许,因为想尽量多的兼容各个存储,所以他需要灵活配置,比如说配置成SRAM接口时序,NAND FLASH接口时序,NOR FLASH接口时序,PSRAM接口时序,等等。
通过看这些存储的接口时序,会发现他们有共性比如说肯定有地址总线,数据总线和OE,WE,NWAIT控制信号,那区别就是不同的存储可能会增加一些自己独特的控制信号。参考官方的这张图:
我们的目的就是通过配置FSMC的寄存器,让他匹配上这些存储以及有类似接口的一些设备,比如本文要实现的TFT控制就有类似接口时序。
TFT的接口时序:
从图可以看到TFT的时序有:
数据总线(对应FSMC的D0-D15),
WR写信号(FSMC的NWE),
RD读信号(FSMC的NOE),
CS片选信号(对应FSMC_NEx),
唯一的区别是 :
1.TFT有RS信号,作用是表示写命令还是写数据。
2. TFT时序没有地址总线
细品一下,没有地址总线光用数据总线的话,那怎么知道数据写的是什么数据呢?其实它是把地址总线和数据总线复用成一个了,然后通过RS信号来区分是地址总线还是数据总线,只是学名叫成了写命令和写数据。
借用这个思想,那我们随便找地址总线中的一条地址线作为RS,通过这条地址线的高低来等同RS的作用,即区分是写命令还是写数据,比如我们用第19条即FSMC_A19,那么写命令就是往第20位地址是0的时候写,写数据就是往第20位是1的地址里写。
原理明白后,把TFT的pin和MCU的pin连接起来即可,剩余RST随便找个IO控制一下。
MCU pin----FSMC复用 //LCD pin
PD0 -----------FSMC_D2 //DB2
PD1 -----------FSMC_D3 //DB3
PD4 -----------FSMC_NOE &nbs