我正在尝试理解STM32f4-发现上的灵活静态内存控制器(FSMC)。
我做了很多研究,我不明白这是怎么回事。我是一个完全自学的程序员,目前正在攻读化学学位,所以对我来说轻松点吧。
我发现了我一直在使用的这些网站:
https://electronics.stackexchange.com/questions/165200/stm32f407-fsmc-interface-with-tft-lcd
http://prog3.com/sbdm/blog/u013030441/article/details/48159101
note/85/ad/ef/0f/a3/a6/49/9a/CD00201397.pdf/files/CD00201397.pdf/jcr:content/translations/en.CD00201397.pdf
我还从ST本身找到了带有示例代码的库。
好吧,现在误解:
当我查看上述两种TFT驱动程序的代码时,我看到LCD的结构或定义如下
#define LCD_REG (*((volatile unsigned short *) 0x60000000))
#define LCD_RAM (*((volatile unsigned short *) 0x60020000))
LCD_RAM = data;
LCD_REG = command;我的问题是,为什么他们必须访问FSMC SRAM银行的两个区域,而不是一个。基本上,为什么我不能仅仅通过写到LCD_REG (内存库的开始)向液晶显示发送数据呢?
一定有什么关于FSMC的东西,我错过了。我看了好几遍数据表,我知道银行的开盘价是0x6000,000,但我无法解释为什么他们会在0x6002 0000的另一段进入银行。
任何在理解方面的帮助都是非常感谢的。如果你知道一本书或网站,我可以用来学习FSMC,我将非常感谢。
谢谢大家的支持!
发布于 2016-04-21 06:10:35
请看图7中的应用程序说明,您已经链接。他们连接了16条数据线,但只有一条地址线连接到RS引脚。然后,液晶显示控制器成为一个内存映射外围两个寄存器。如果地址中的特定位为0,则对命令寄存器进行寻址,如果为1,则为数据寄存器。其余的地址线没有连接,因此它们的状态是无关的,例如可以访问0x60FFFFFF上的数据寄存器。请注意,所有三个示例都使用不同的地址行,因此数据寄存器的地址不同。
要使用液晶显示,您可以向命令寄存器编写命令代码,也可以选择,然后在数据寄存器中加上一些参数,然后是下一个命令,等等。有设置显示区域、颜色映射、亮度、滚动等特殊效果的命令。每个命令都有固定数量的参数,但有一个叫做写RAM的参数,其中参数是实际的像素数据。像素数据按顺序存储在显示内存中,您可以使用写RAM命令设置任意数量的像素数据,您还可以永远停留在这种模式下,并一个接一个地发送显示更新。
https://stackoverflow.com/questions/36748271
复制相似问题