这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » STM中FSMC的讲解

共8条 1/1 1 跳转至

STM中FSMC的讲解

专家
2011-09-02 15:07:38     打赏
大家可能在STM中看到FSMC,那么STM是什么呢??他有什么好处呢??
现在就我的一些理解简单的讲解一下!

FSMC翻译过来就是灵活的静态存储器控制器,是用来驱动外部总线的。
关于外部总线,你可以想象一下51的外部总线,STM32的FSMC实际上跟51的外部总线是一样的,只不过性能更好,速度更快。
至于总线的优势,可以举个51外部总线的例子,51单片机驱动1864或者1602液晶,如果用IO口模拟液晶的时序,需要用指令分别控制RS,WR,EN控制线还有数据线;但是如果用的是外部总线,从汇编指令上来讲,只需要一条MOVX指令就解决问题了。二者的速度一目了然!

在一些TFT液晶的操作用经常用得到,并且非常的好用!(以一个TFT为例)
TFT的数据接口为:D0-D15或者D0-D8.
TFT的控制线有:复位信号RST,片选CS,输出使能RD(读信号),写信号WE以及RS信号。
于STM32连线为: RST->GPIO, CS->NEx, RD->NOE, WE->RW, RS->A0(或者其他任何一条地址线)
关键的一点就在于这个RS信号(我只说关键的这一点):
一般TFT的地址线只有1个RS.
以控制芯片的TFT为例.RS=0的时候一般是写命令,RS=1的时候是写数据,把TFT作为只有2个地址的存储器对待.
RS接到哪一个地址线都是可以的。假如RS接到A0,而片选为NE4,总线宽度8位.
那么可以定义
#define Bank1_SRAM4_ADDR    ((u32)0x6C000000)
#define LCD_DATA_ADDR (Bank1_SRAM4_ADDR + 1)
#define LCD_CMD_ADDR  (Bank1_SRAM4_ADDR + 0)

那么写命令数据就是直接往LCD_CMD_ADDR写数据:(假设cmd,data为16位,而我的TFT数据接口是8位)
LCD_WRITE_CMD(unsigned short cmd)     //写命令到TFT,16位要写2次
{
*(vu8*)LCD_CMD_ADDR=(cmd>>8);
*(vu8*)LCD_CMD_ADDR=(cmd);
}
写数据就是直接往LCD_DATA_ADDR写数据:
LCD_WRITE_DATA(unsigned short Data) //写数据到TFT
{
*(vu8*)LCD_DATA_ADDR=(Data>>8);
*(vu8*)LCD_DATA_ADDR=(Data);
}

至于RD,WE,RS,CS信号都已经是FSMC控制器自动产生的,不用理会,不过当然是FSMC及GPIO初始化要正确.而RST信号还是需要通过操作GPIO来完成的.

这是最基本的2个操作。而那些什么设置X,Y,设置窗口,设置亮度,设置。。。。都是由这2个操作组合完成的。

72M HZ,320*240刷单色屏速度在 32fps左右.



关键词: 讲解    

院士
2011-09-04 10:29:42     打赏
2楼
想FSMC这类的电子为缩略语,马上就可以查询了~~

高工
2011-09-06 13:57:12     打赏
3楼
TI的叫Cortex M3叫EPI,这么多简写,不熟悉的还真头疼
C2000叫 XINTF

工程师
2012-04-15 14:04:52     打赏
4楼

标记下


助工
2012-04-17 13:08:22     打赏
5楼
MARK

高工
2012-04-22 23:41:12     打赏
6楼
学习下

高工
2012-05-07 09:09:12     打赏
7楼
不错,学习了~!

工程师
2012-05-14 14:43:32     打赏
8楼
给力,学习

共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]