由于FSMC 访问 NOR/SRAM 的B模式的时序与 8080 时序相似程度很高,因此 STM32 的 FSMC 可以用来模拟 8080 时序,达到控制 LCD 的目的:下图是它们的对比。 但是我不清楚,为什么访问 ILI9341 的 GRAM 不用地址线(取而代之的是 D/CX 即数据/命令选择线, 本例中,将 PD11 复用为 FSMC_A16,通过将A16置高,表示...
void_lcd_wr_data(uint16_tdata){LCD_RS(1);/* 操作数据 */LCD_CS(0);/* 选中 */LCD_DATA...
*/voidLCD_WriteHalfword(uint8_tmode,uint16_tdata){LCD_RS(mode);// 数据类型,由传参决定LCD_CS(0);// 拉低片选LCD_DATA_OUT(data);// WR低电平期间,准备数据LCD_WR(0);// 拉低WR线,准备数据LCD_WR(1);// 在WR上升沿,数据发出LCD_CS(1);// 取消片选} 3.2、8080并口读时序 根据要读取的...
其操作时序和 SRAM的控制完全类似,唯一不同就是 TFTLCD 有 RS 信号,但是没有地址信号。 TFTLCD 通过 RS 信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号, 比如我们把 RS 接在 A0 上面,那么当 FSMC 控制器写地址 0 的时候,会使得 A0 变为 0,对 TFTLCD 来说,就是写命令。而 FSMC 写...
可以看到,FSMC操作LCD比GPIO模拟8080时序会快很多,可能有人会说硬件实现就是比软件实现快。但其实不是这样的,用软件模拟时序,给出的延时与标准时序可能不是完全一致,导致速度比较慢,如果用软件模拟时序时使用逻辑分析仪对时序的延时时间进行优化,GPIO模拟8080时序也是可以达到FSMC的速度的,有兴趣的可以自己尝试一下。
FSMC模式和时序配置: 到此,FSMC的初始化就搞定了,后边就可以通过内存地址直接控制LCD了。这里有几个需要注意的点,下面来详细说说。 第一, 存储基地址 bank1的基地址是0x60000000,不同的子bank地址不同,通过HADDR[27:26]这两位的值确定。我们选择了第四个,这两位是11,所以子bank的基地址是 ...
(4)SMSKR0[10:8]用来选择三组不同的寄存器 register set0/set1/set2,以配置不同的时序 FMSC支持的外部接口 表1 FSMC控制器外部信号 3. FSMC 控制LCD的硬件设计 FSMC是如何控制TFTLCD的呢? 我们可以把TFTLCD当成 SRAM 设备使用:外部SRAM的控制一般有:...
Access mode(存储器访问模式):选A,LCD控制器使用 Mode A ,该模式用来控制SRAM/PSRAM且OE会翻转。控制异步 NOR FLASH 时使用 B 模式。 5.1.2 FSMC写时序配置 NOR/PSRAM timing for write accesses(FSMC写时序配置): Extended address setup time(地址建立时间):填0 ...
LCD — 液晶显示: NADV引脚是专门拥堵地址 / 数据线复用时做锁存信号,如下。当我们不需要地址 / 数据线复用时,NADV就不用管。 NADV由以下寄存器位来配置: 液晶屏使用模式B的写操作时序: 模式B读操作时序: 根据STM32 对寻址空间的地址映射,地址 0x6000 0000 ~0x9FFF FFFF 是映射到外部存储器的,而其中的 0x...