【问题标题】:STM32F4 FSMC with TFT LCDSTM32F4 FSMC 带 TFT LCD
【发布时间】:2016-04-20 15:18:15
【问题描述】:

我正在尝试了解 STM32f4-discovery 上的灵活静态内存控制器 (FSMC)。

我做了很多研究,但我无法理解它是如何工作的。我是一个完全自学成才的程序员,目前正在攻读化学学位,所以请放轻松,哈哈。

我找到了这些网站来解决这个问题:

https://electronics.stackexchange.com/questions/165200/stm32f407-fsmc-interface-with-tft-lcd

http://prog3.com/sbdm/blog/u013030441/article/details/48159101

http://www2.st.com/content/ccc/resource/technical/document/application_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(内存库的开头)来向 LCD 发送数据?

我一定缺少关于 FSMC 的一些东西。我已经多次阅读数据表,我知道银行从 0x6000 0000 开始,但我无法解释为什么他们会在 0x6002 0000 的另一个部分访问银行。

非常感谢任何有助于理解的帮助。如果您知道我可以用来学习 FSMC 的书籍或网站,我将不胜感激。

感谢大家的宝贵时间!

【问题讨论】:

    标签: lcd stm32f4discovery stm32f4


    【解决方案1】:

    查看您链接的应用说明中的图 7。他们连接了 16 条数据线,但只有一条地址线连接到 RS 引脚。然后,LCD 控制器成为具有两个寄存器的内存映射外设。如果地址中的特定位为 0,则对命令寄存器进行寻址,如果为 1,则对数据寄存器进行寻址。其余地址线未连接,因此它们的状态无关紧要,例如也可以访问0x60FFFFFF 的数据寄存器。请注意,所有三个示例都使用不同的地址线,因此数据寄存器的地址也不同。

    要使用 LCD,您将命令代码写入命令寄存器,可选地后跟数据寄存器中的一些参数,然后是下一个命令,依此类推.有一些命令可以设置显示区域,颜色映射,亮度,滚动等一些特殊效果。每个命令都有固定数量的参数,除了有一个叫做Write RAM之类的东西,参数是实际的像素数据.像素数据按顺序存储在显存中,您可以通过 Write RAM 命令设置任意数量的像素数据,也可以永远保持在该模式下,并一个接一个地发送显示更新。

    【讨论】:

    • 我想我现在明白了。我还发现这个链接有点帮助。 github.com/hampussandberg/HexConnect/wiki/LCD-ER_TFTM070_5 但我不知道为什么我在参考手册或数据表中找不到那个数字。我现在正在编写 LCD 的代码,所以我会让每个人都知道它是如何工作的。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多