【FSMC】STM32中fsmc是怎么巧妙地复用为LCD控制器的

文章介绍了如何使用STM32的FSMC(FlexibleStaticMemoryController)控制器来控制LCD,通过配置FSMC的控制寄存器实现对AHB地址的读写,利用A[10]引脚控制读写,并通过特定的地址映射方式处理LCD的指令和数据。FSMC自动控制WR/RD/CS等信号,简化了LCD操作的实现。示例代码展示了通过FSMC读取LCD数据的过程。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

fsmc可以实现在AHB地址上写入数据,从而可以使fsmc外设先把等价于AHB上的地址在A[]输出,然后在D端口输出数据,所有的时序通过fsmc控制寄存器配置,然后自动控制,这是难点。在这里通过A[10]引脚来控制读写数据,对于LCD而言,地址是没有用的,可以找一个地址的某一位和紧挨着这个地址的前n个地址来组成一个32位寄存器,前16位用于写指令后十六位来写数据,如果把这两个16位变量变成一个结构体并且通过typedef*来指定地址就可以通过这个虚拟寄存器来发送指令和收发数据了。

static uint16_t lcd_rd_data(void)
{
volatile uint16_t ram; /* 防止被优化 */
lcd_opt_delay(2);
 ram = LCD->LCD_RAM;
 return ram;
}因为 FSMC 自动控制了 WR/RD/CS 等这些信号,所以这 6 个函数实现起来都非常简单,我
们就不多说,注意,上面有几个函数,我们添加了一些对 MDK –O2 优化的支持,去掉的话,
在-O2 优化的时候会出问题。这些函数实现功能见函数前面的备注,通过这几个简单函数的组
合,我们就可以对 LCD 进行各种操作了。请问,是如何控制的
这些函数是通过对 FSMC 控制信号的操作来控制 LCD 的。FSMC 是外部存储控制器,通过它可以连接外部存储器,包括 SRAM、SDRAM、NOR Flash 和 NAND Flash 等。在这里,我们使用 FSMC 连接 LCD,通过对 FSMC 控制信号的操作,可以对 LCD 进行读写操作。具体来说,通过设置 FSMC 控制寄存器的各个位,可以控制 FSMC 的工作模式、数据宽度、读写模式等。然后通过对 FSMC 地址线和数据线的操作,可以将命令或数据写入 LCD 或从 LCD 读取命令或数据。
是如何

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值