日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]在完成IO驅(qū)動彩屏的試驗后,就準備著手使用FSMC來驅(qū)動彩屏,先了解一下預(yù)備知識一、所謂的FSMC機制簡單介紹FSMC在這篇博文里面很清楚,推薦一下http://blog.csdn.net/king_bingge/article/details/8718566然后還有就

在完成IO驅(qū)動彩屏的試驗后,就準備著手使用FSMC來驅(qū)動彩屏,先了解一下預(yù)備知識

一、所謂的FSMC機制

簡單介紹FSMC在這篇博文里面很清楚,推薦一下http://blog.csdn.net/king_bingge/article/details/8718566

然后還有就是這篇學習筆記,也還行http://www.cnblogs.com/hduxyc/archive/2011/05/17/2048099.html

個人覺得有了這兩篇博文再加上我們的參考手冊足夠搞定FSMC驅(qū)動彩屏了

二、FSMC之我見

開始只是談到別人對FSMC的理解,注意這里只討論FSMC控制TFT,也就是在FSMC的NORPSRAM模式控制LCD,所以我們以下的分析都是基于這種模式的。

1、我們之前通過使用GPIO來模擬8080/6800時序從而達到驅(qū)動彩屏的,同樣需要明白的一點就是我們也只是使用FSMC來模擬8080/6800時序,只不過這個讀寫速度有些快(使用了總線嘛),僅此而已!如果不明白8080/6800時序是怎樣的或許在這個文庫里面能找到你想要的http://wenku.baidu.com/view/a8c98600cc1755270722083e.html

簡單一點就是:8080是通過“讀使能(RE)”和“寫使能(WE)”兩條控制線進行讀寫操作。 6800是通過“總使能(E)”和“讀寫選擇(W/R)”兩條控制線進行

2、那么了解到FSMC的三總線如下!

數(shù)據(jù)線:這個可以分為8位的和16位,這個不難理解,就是之指一次穿上紅8位還是16位數(shù)據(jù),我的是16位的,8位的有一個懶得用。

地址線:既然我們訪問的外NOR FLASH,那么一定會有相應(yīng)的地址線,那么這些地址線在哪里呢?肯定是通過GPIO引腳復(fù)用的。有A0 -- A23 24根,能夠控制訪問16M的空間,也就是一個子bank;

控制總線:它的控制總線只有三根:讀使能信號,寫使能信號,片選信號。所以這里和我們8080時序相比,少了復(fù)位信號線和數(shù)據(jù)/命令控制線,怎么辦?繼續(xù)看!

3、了解了FSMC會有這三總線的概念,那么接下來就是如何轉(zhuǎn)化為我們需要的時序了。

對比一下FSMC訪問外nor flash和8080訪問時序如下



差別似乎很小是吧,簡單說就是在數(shù)據(jù)/指令選擇和復(fù)位信號上的區(qū)別。

4、在這里我們使用的軟件方法來完善FSMC轉(zhuǎn)化為8080的讀寫時序

在參考手冊上的存儲系統(tǒng)能找到,芯片留給我們外擴的存儲器(NOR FLASH、PSRAM這類可直接尋址的器
件)地址是從0x60000000開始的,意思就是當我們訪問0x60000000的時候,那就是相當于訪問外部nor flash了(我們只討論這種情況),那么他就會自動產(chǎn)生FSMC的時序

在這里,我們所需要添加的就是D/C選擇信號,如何實現(xiàn)呢?我們是通過,一根地址線來實現(xiàn)的,當我們把A0多對應(yīng)的GPIOF0(引腳默認復(fù)用)接到TFT的RS端,

然后執(zhí)行訪問0x60000000的指令,那么RS是否就是低電平選擇為數(shù)據(jù)呢?又加入我們訪問的地址是0x60000001的時候,那么RS是否就是高電平,從而選擇的就是指令傳送呢?答案當然是肯定的!所以我們就解決了這個問題,復(fù)位信號就更好解決了,直接和開發(fā)板的復(fù)位引腳接在一起就好了,就這么簡單!

三、說了這么久的理論,來個實例分析更加形象了,首先硬件連線要明白

在原理圖或者開發(fā)手冊上面能夠確定引腳復(fù)用問題

地址引腳:

(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)

至此控制引腳基本完成

下面就是數(shù)據(jù)引腳:

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、硬件引腳配置函數(shù)


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口復(fù)用功能時鐘

/*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);

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

stm32f103zet6是一種嵌入式-微控制器的集成電路(IC),是由ST公司開發(fā)的STM32F1系列的其中一種,芯體尺寸是32位,速度是72MHz,程序存儲器容量是256KB,程序存儲器類型是FLASH,RAM容量是...

關(guān)鍵字: stm32f103zet6 datasheet 引腳圖

有時候,我們需要保存少量數(shù)據(jù),但是用外擴的ROM又覺得不方便,這時候自然就想到了芯片內(nèi)部是否自帶flash(閃存),據(jù)我了解,stm32內(nèi)部的應(yīng)該是nor flash,因為如果是nand flash的話,肯定速度是跟不上...

關(guān)鍵字: Flash nor stm32f103zet6

定時器TIM3產(chǎn)生四路PWM波輸出。首先介紹一下PWM吧,算是給自己充電,脈沖寬度調(diào)制(PWM),是英文“Pulse Width Modulation ”的縮寫,簡稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對模擬電路進行控制...

關(guān)鍵字: pwm stm32f103zet6 定時器

注意:每個區(qū)都有獨立的寄存器控制,都有單獨的片選引腳,故每個區(qū)都可以接不同的外設(shè)。

關(guān)鍵字: fsmc STM32 地址塊劃分

進行串口配置的步驟一、初始化GPIO,配置GPIO模式一個結(jié)構(gòu)體GPIO_InitTypeDef{GPIOMode_TypeDef GPIO_Mode//GPIO模式,輸入,輸出?uint16_t GPIO_Pin//哪...

關(guān)鍵字: stm32f103zet6 串口學習

由于前面買的核心板,供電老有問題,使得我現(xiàn)在的項目又改用了以前用的F103ZET6微控制器!1、實驗?zāi)康?)產(chǎn)生脈寬任意可調(diào)的單脈沖(在允許的范圍內(nèi))2、硬件:通用定時器3、通用定時器43、單脈沖模式介紹單脈沖模式

關(guān)鍵字: stm32f103zet6 通用定時器 單脈沖模式

FSMC(Flexible Static Memory Controller,可變靜態(tài)存儲控制器)是STM32系列采用一種新型的存儲器擴展技術(shù)。在外部存儲器擴展方面具有獨特的優(yōu)勢,可根據(jù)系統(tǒng)的應(yīng)用需要,方便地進行不同類型...

關(guān)鍵字: fsmc STM32

SD卡已經(jīng)看了兩天了,主要是因為測試出來的卡容量不對,所以一直找原因,最終還是發(fā)現(xiàn)了,總比不過是單位上面出現(xiàn)了問題,或許是之前沒有接觸到SD的緣故吧,所以對其中的一些寄存器很不了解,一切都是重新開始,對照

關(guān)鍵字: stm32f103zet6 fat16 文件系統(tǒng)學 sd卡扇區(qū)

本篇文章三個主題:FSMC有關(guān)配置、一串字符顯示原理、漢字顯示原理。。下面進入正題一、FSMC的有關(guān)配置(博主用的是FSMC_A10): 來自別人家的博客http://blog.csdn.net/jxnu_xiaobin...

關(guān)鍵字: fsmc STM32 驅(qū)動tftlcd

STM32F103ZET6里共有8個定時器,其中高級定時器有TIM1-TIM5、TIM8,共6個。這里需要使用定時器的級聯(lián)功能,ST的RM0008 REV12的P388和P399頁上有說明對于特定的定時器,怎么去選擇級聯(lián)...

關(guān)鍵字: pwm stm32f103zet6 定時器 級聯(lián)方式
關(guān)閉