历史上的今天
返回首页

历史上的今天

今天是:2025年03月02日(星期日)

2021年03月02日 | STM32单片机的FSMC对TFT的驱动

2021-03-02 来源:eefocus

一、FSMC之我见

开始只是谈到别人对FSMC的理解,注意这里只讨论FSMC控制TFT,也就是在FSMC的NORPSRAM模式控制LCD,所以我们以下的分析都是基于这种模式的。


1、我们之前通过使用GPIO来模拟8080/6800时序从而达到驱动彩屏的,同样需要明白的一点就是我们也只是使用FSMC来模拟8080/6800时序,只不过这个读写速度有些快(使用了总线嘛),仅此而已!


简单一点就是:8080是通过“读使能(RE)”和“写使能(WE)”两条控制线进行读写操作。 6800是通过“总使能(E)”和“读写选择(W/R)”两条控制线进行


2、那么了解到FSMC的三总线如下!

数据线:这个可以分为8位的和16位,这个不难理解,就是之指一次穿上红8位还是16位数据,我的是16位的,8位的有一个懒得用。


地址线:既然我们访问的外NOR FLASH,那么一定会有相应的地址线,那么这些地址线在哪里呢?肯定是通过GPIO引脚复用的。有A0 -- A23 24根,能够控制访问16M的空间,也就是一个子bank;


控制总线:它的控制总线只有三根:读使能信号,写使能信号,片选信号。所以这里和我们8080时序相比,少了复位信号线和数据/命令控制线,怎么办?继续看!


3、了解了FSMC会有这三总线的概念,那么接下来就是如何转化为我们需要的时序了。


对比一下FSMC访问外nor flash和8080访问时序如下



差别似乎很小是吧,简单说就是在数据/指令选择和复位信号上的区别。


4、在这里我们使用的软件方法来完善FSMC转化为8080的读写时序


在参考手册上的存储系统能找到,芯片留给我们外扩的存储器(NOR FLASH、PSRAM这类可直接寻址的器


件)地址是从0x60000000开始的,意思就是当我们访问0x60000000的时候,那就是相当于访问外部nor flash了(我们只讨论这种情况),那么他就会自动产生FSMC的时序


在这里,我们所需要添加的就是D/C选择信号,如何实现呢?我们是通过,一根地址线来实现的,当我们把A0多对应的GPIOF0(引脚默认复用)接到TFT的RS端,


然后执行访问0x60000000的指令,那么RS是否就是低电平选择为数据呢?又加入我们访问的地址是0x60000001的时候,那么RS是否就是高电平,从而选择的就是指令传送呢?答案当然是肯定的!所以我们就解决了这个问题,复位信号就更好解决了,直接和开发板的复位引脚接在一起就好了,就这么简单!


二、说了这么久的理论,来个实例分析更加形象了,首先硬件连线要明白


在原理图或者开发手册上面能够确定引脚复用问题


地址引脚:


(A0-A5 :PF0 - PF5) (A6-A9: F12-F15 ) (A10-A15:PG0-PG5)


(A16-A18:PD11-PD13) (A19-A22:PE3-PE6) (A23-PE2)


片选信号(NEx:PG12)因为我选择的是block4


写使能(NWR:PD5)


读使能(NOE:PD4)


至此控制引脚基本完成


下面就是数据引脚:


PD14-FSMC-D0 ----LCD-DB0


PD15-FSMC-D1 ----LCD-DB1


PD0-FSMC-D2 ----LCD-DB2


PD1-FSMC-D3 ----LCD-DB3


PE7-FSMC-D4 ----LCD-DB4


PE8-FSMC-D5 ----LCD-DB5


PE9-FSMC-D6 ----LCD-DB6


PE10-FSMC-D7 ----LCD-DB7


PE11-FSMC-D8 ----LCD-DB8


PE12-FSMC-D9 ----LCD-DB9


PE13-FSMC-D10 ----LCD-DB10


PE14-FSMC-D11 ----LCD-DB11


PE15-FSMC-D12 ----LCD-DB12


PD8-FSMC-D13 ----LCD-DB13


PD9-FSMC-D14 ----LCD-DB14


PD10-FSMC-D15 ----LCD-DB15


有了这些硬件连线是没有任何问题的


三、正式分析程序


1、硬件引脚配置函数


voidLCD_CtrlLinesConfig(void)


{


GPIO_InitTypeDefGPIO_InitStructure;


/*EnableFSMC,GPIOD,GPIOE,GPIOF,GPIOGandAFIOclocks*/


RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);//使能FSMC


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|


RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOG|


RCC_APB2Periph_AFIO,ENABLE);


//IO口复用功能时钟


/*SetPD.00(D2),PD.01(D3),PD.04(NOE),PD.05(NWE),PD.08(D13),PD.09(D14),


PD.10(D15),PD.14(D0),PD.15(D1)asalternate


functionpushpull*/


/*D端口初始化*/


GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|


GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_14|


GPIO_Pin_15;


GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;


GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;


GPIO_Init(GPIOD,&GPIO_InitStructure);


/*E端口初始化*/


/*SetPE.07(D4),PE.08(D5),PE.09(D6),PE.10(D7),PE.11(D8),PE.12(D9),PE.13(D10),


PE.14(D11),PE.15(D12)asalternatefuncTIonpushpull*/


GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|


GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|


GPIO_Pin_15;


GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;


GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;


GPIO_Init(GPIOE,&GPIO_InitStructure);//将配置写入GPIOE管脚


/*A0地址线*/


GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;


GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;


GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;


GPIO_Init(GPIOF,&GPIO_InitStructure);


/*SetPG.12(NE4(LCD/CS))asalternatefuncTIonpushpull-CE3(LCD/CS)*/


GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;


GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;


GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;


GPIO_Init(GPIOG,&GPIO_InitStructure);


推荐阅读

史海拾趣

DEWALT公司的发展小趣事

在第二次世界大战期间,DEWALT公司面临了巨大的挑战。由于战争的影响,许多原材料和零部件供应中断,生产受到严重影响。然而,DEWALT公司凭借自身的技术实力和创新能力,成功克服了这些困难。公司还积极为军队提供所需的电动工具产品,为战争胜利做出了贡献。这些经历使DEWALT公司更加坚定了技术创新和品质控制的信念。

Diconex公司的发展小趣事

品质是电子行业的生命线。Diconex公司深知品质的重要性,因此从原材料采购到生产制造的每一个环节都严格把控品质。公司建立了完善的质量管理体系,对每一道生产工序都进行严格的检测和评估。这种对品质的执着追求使得Diconex的产品在市场上具有很高的口碑和竞争力。

Emerson Embedded Power公司的发展小趣事

随着全球市场的不断扩大,Emerson Embedded Power积极寻求新的增长点。通过与全球知名电子制造商的合作,该公司成功将其产品打入国际市场,并赢得了众多国际客户的信赖。此外,公司还通过并购和战略合作,进一步拓宽了业务范围,提高了市场竞争力。

Euvis Inc公司的发展小趣事

Euvis Inc公司自成立以来,始终将技术创新作为发展的核心动力。公司投入大量研发资源,成功开发出一款具有革命性意义的新型半导体材料,该材料具有更高的导电性能和更低的能耗,极大地提升了电子产品的性能。随着这款材料的广泛应用,Euvis Inc公司在半导体材料市场迅速崛起,成为行业内的领军企业。

Global Power Technology Co., Ltd公司的发展小趣事
冰箱显示屏不亮、按键无反应等。
Dover Corporation公司的发展小趣事

作为一家多元化制造商,Dover Corporation一直致力于创新技术的研发与应用。公司在多个领域拥有先进的技术和解决方案,如先进的电梯控制系统、高效的燃料解决方案等。这些技术的应用不仅提高了Dover产品的性能和质量,也为客户提供了更加优质的服务。

问答坊 | AI 解惑

铁电存储器的技术原理

铁电存储器(FRAM)能兼容RAM的一切功能,并且和ROM技术一样,是一种非易失性的存储器。铁电存储器在这两类存储类型间搭起了一座跨越沟壑的桥梁——一种非易失性的RAM。 相对于其它类型的半导体技术而言,铁电存储器具有一些独一无二的特性。传统的主 ...…

查看全部问答>

传说中的!昔日的传销——摇摆器! (转)

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 谁见过这个情景啊 ?传销中传说的摇摆器 公司里边,专门有一个诊病室,各种头衔的专家教授亲自给人诊病。“专家”们说:拥有摇摆机,你就拥有了健康,有了健康你才能拥有妻子、儿子、房子、车 ...…

查看全部问答>

看看你是不是安防达人,从图像辨故障

今天看到了一个关于“从图像判断故障”的文章,觉得写的非常具体, 大家在实际应用中,怎么去判断呢,不妨来交流下。 文章如下: 监视器上无图像 1、监控主机等设备及其连接引起无图像显示的原因及解决法 ·微机切换主机输出至监视器的同轴 ...…

查看全部问答>

手机内置天线技术要求

内置天线技术要求 内置天线材料为铍铜、不锈钢等其他材料,具体支撑视结构而定。铍铜(外面镀金) 天线的RF 性能比较好,但是价格稍高于不锈钢材料。 内置天线性能的保证对结构要求较严,基本的要求如下,否则天线性能将受到较大影 响,具体影 ...…

查看全部问答>

EMC 之电源线滤波器基础知识

电源线滤波器主要起什么作用,选型时主要考虑哪些参数,使用电源线滤波器时要注意什么问题? 电源线滤波器的作用是抑制传导发射电流沿着电源线传播。选型时要考虑插入损耗(共模和差模)、额定电流、电压、有效的频率范围等参数,使用时要注意安装 ...…

查看全部问答>

6年LED灯珠生产技术工程师经验(LED生产过程漏电的原因分析供工程师讨论)原创

一  选好芯片芯片的抗静电能力要好一点。 二  主要是双线双电极会漏点也就是说白光蓝光和绿光,红的黄的单电极的不怎么会漏电      如果芯片的抗静电能力很好的话,做出的产品还会有漏电的话,那主要原 ...…

查看全部问答>

89C51\52入门请教

本人想比较快速掌握89C51\\52的程序设计,请各位高手赐招.汇编和C语言我已学过了,还可以. 推荐几本书,什么的.....…

查看全部问答>

电压跳动导致电池读数变动的问题

现在发现一个问题,由于电池端的电压在不同负载的时候会有所跳动,因此计算出的电池电量也会变化。 比如说,我再正常使用的时候电池电量显示75%,这个时候在播放MP3。不做其他操作,过了一分钟,背光会自动变暗,这是电量显示就变成80%,再过一分 ...…

查看全部问答>

我的STLINK好像烧了

                                 今天中午用STLINK调试PS2接口,这个PS2键盘好像有问题,所以中间把四根线和目标板分离了一次,然后再调试,发现读 ...…

查看全部问答>

LF2407A烧写次数大约是多少?请大家根据自己经验都来答一下!

我用了两片,都写了十几次就坏了,unlock成功后也不好用,可能是flash真的坏了, 在此我想统计一下,请帮个忙,大家都答一下。 …

查看全部问答>