新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > FSMC知識詳解,以及驅(qū)動TFTLCD原理

        FSMC知識詳解,以及驅(qū)動TFTLCD原理

        作者: 時間:2018-01-18 來源:網(wǎng)絡 收藏

          一,簡介

        本文引用地址:http://www.104case.com/article/201801/374605.htm

          :靈活的靜態(tài)存儲控制器

          能夠與同步或異步存儲器和16位PC存儲器卡連接

          STM32的接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存儲器

          STM32 407和103是不支持SD RAM的,429,439支持SD RAM操作

          二,FSMC驅(qū)動LCD原理

            

          FSMC驅(qū)動外部SRAM(LCD被當做SRAM)

          SRAM控制包含:

          地址線(如A0~A25)

          數(shù)據(jù)線(如D0~D15)

          寫信號(WE,即WR)

          讀信號(OE,即RD)

          片選信號(CS)

          若SRAM支持字節(jié)控制,還有UB/LB信號。

          上一節(jié)提到的信號,RS、D0~D15、WR、RD、CS、RST和BL等

          其中真正操作LCD時用到的就只有:

          數(shù)據(jù)&命令:RS

          數(shù)據(jù)線:D0~D15

          寫信號:WR

          讀信號:RD

          片選信號:CS

          操作時序和SRAM控制類似,唯一不同是有RS信號,但是沒有地址信號

          通過RS信號來決定傳送是數(shù)據(jù)還是命令,可以理解為一個地址信號

          將RS接到FSMC地址線A10(A0-A25隨意),TFTLCD就被當做一個SRAM使用

          這樣TFTLCD成為只有一個地址的SRAM設備,從而實現(xiàn)FSMC驅(qū)動TFTLCD

          三,FSMC存儲塊

          STM32的FSMC支持8/16/32位數(shù)據(jù)寬度,我們使用的LCD為16位,所以設置選擇16位

          FSMC的外部設備地址映像:STM32的FSMC將外部存儲器劃分為固定大小為256M字節(jié)的四個存儲塊

            

          如圖:

          FSMC分為4塊,每塊256M字節(jié)又被劃分為4*64,即四個片選

          NOR / PSRAM使用塊1,共256M

          NAND閃存使用塊2,3,共512M

          PC卡使用塊4,共256M

          所以我們使用NOR PSRAM驅(qū)動TFTLCD

          四,存儲塊1(Bank1)寄存器介紹

          STM32的FSMC存儲塊1(Bank1)用于驅(qū)動NOR FLASH/SRAM/PSRAM

          Bank1被分為4個區(qū),每個區(qū)管理64M字節(jié)空間,每個區(qū)都有獨立的寄存器對所連接的存儲器進行配置。

          Bank1的256M字節(jié)空間由28根地址線(HADDR[27:0])尋址。 這里HADDR,是內(nèi)部AHB地址總線

          HADDR[25:0]來自外部存儲器地址FSMC_A[25:0],而HADDR[26:27]對4個區(qū)進行尋址。

          如下圖所示:

          說明:

          HADDR[27:26]是不可手動配置的,當選擇所在區(qū)后會自動賦值

          注意:

          1,當Bank1接 8位寬度存儲器時:HADDR[25:0] -> FSMC_A[25:0]

          2,當Bank1接16位寬度存儲器時:HADDR[25:1] -> FSMC_A[24:0]

          由于內(nèi)部每個地址對應一個字節(jié),外部設備16位寬,FSMC的一個地址對應兩個字節(jié)

          即:

          0000對應FSMC_A[0]=0 (2字節(jié))

          0010對應FSMC_A[0]=1 (2字節(jié))

          0100對應FSMC_A[1]=1 (2字節(jié))

          所以對應關系需要除以2,內(nèi)部右移一位對齊

          此時最低位沒用,訪問最低位需要使用UB/LB

          不論外部接8位/16位寬設備,F(xiàn)SMC_A[0]永遠接在外部設備地址A[0]

          五,存儲塊1(Bank1)模式A讀寫時序

          STM32的FSMC存儲塊1支持的異步突發(fā)訪問模式

          包括模式1,模式A~D等多種時序模型,驅(qū)動SRAM一般使用模式1或模式A

          我們使用模式A驅(qū)動LCD(當做SRAM使用),模式A支持讀寫時序分開設置

          上一篇說的LCD時序,我們知道,LCD的讀寫耗時是不同的.寫快讀慢

          這里采用模式A,針對不同的速度,做不同的設置

          模式A讀時序:

          模式A寫時序:

          ILI9341時序-讀寫高低電平最小持續(xù)時間:

          根據(jù)ILI9341時序讀寫高低電平最小持續(xù)時間來配置模式A的讀寫時序

          六,FSMC相關寄存器介紹

          對于NOR FLASH/PSRAM控制器-存儲塊1,可通過FSMC_BCRx、FSMC_BTRx和FSMC_BWTRx寄存器設置(其中x=1~4,對應4個區(qū))。

          通過這3個寄存器,可以設置FSMC訪問外部存儲器的時序參數(shù),拓寬了可選用的外部存儲器的速度范圍。

          1,SRAM/NOR閃存片選控制寄存器(FSMC_BCRx)

          FSMC_BCRx

          EXTMOD:

          擴展模式使能位,控制是否允許讀寫不同的時序,需設置為1

          WREN:

          寫使能位。我們要向TFTLCD寫數(shù)據(jù),需設置為1

          MWID[1:0]:

          存儲器數(shù)據(jù)總線寬度。00,表示8位數(shù)據(jù)模式;01表示16位數(shù)據(jù)模式;10和11保留。

          我們的TFTLCD是16位數(shù)據(jù)線,需設置WMID[1:0]=01。

          MTYP[1:0]:

          存儲器類型。00表示SRAM、ROM;01表示PSRAM;10表示NOR FLASH;11保留。

          我們把LCD當成SRAM用,需設置MTYP[1:0]=00。

          MBKEN:

          存儲塊使能位。需設置為1

          2,SRAM/NOR閃存片選時序寄存器(FSMC_BTRx)-讀時序控制

          FSMC_BTRx

          ACCMOD[1:0]:

          訪問模式。00:模式A;01:模式B;10:模式C;11:模式D。

          我們使用模式A,需設置為00

          DATAST[7:0]:

          數(shù)據(jù)保持時間,等于: DATAST(+1)個HCLK時鐘周期,DATAST最大為255。

          對于ILI9341相當于RD低電平持續(xù)時間,最大355ns

          對于STM32F1,一個HCLK=13.8ns (1/72M),設置為15,相當于16個HCLK=220.8,加上STM32F1的FSMC性能較低一些,配置為15即可

          對于STM32F4,一個HCLK=6ns(1/168M) ,設置為60(360)。

          ADDSET[3:0]:

          地址建立時間。表示:ADDSET+1個HCLK周期,ADDSET最大為15。

          對ILI9341來說,這里相當于RD高電平持續(xù)時間,為90ns。

          STM32F1的FSMC性能較低,即便設置為0,RD也有190ns高電平,所以設置為1

          STM32F1設置為15

          注意:

          如果未設置EXTMOD位,則讀寫共用FSMC_BTRx時序寄存器

          3,SRAM/NOR閃存寫時序寄存器(FSMC_BWTRx)-寫時序控制

          FSMC_BWTRx

          ACCMOD[1:0]:

          訪問模式。00:模式A;01:模式B;10:模式C;11:模式D。

          DATAST[7:0]:

          數(shù)據(jù)保持時間,等于: DATAST(+1)個HCLK時鐘周期,DATAST最大為255。

          對ILI9341來說,其實就是WR低電平持續(xù)時間,為15ns,不過ILI9320等則需要50ns。

          考慮兼容性,對STM32F1一個HCLK=13.8ns (1/72M),設置為3(4*13.8=55.2);

          對STM32F4,一個HCLK=6ns(1/168M) ,設置為9(9*6=54)。

          ADDSET[3:0]:

          地址建立時間。表示:ADDSET+1個HCLK周期,ADDSET最大值為1111 = 15。

          對ILI9341來說,這里相當于WR高電平持續(xù)時間,為15ns。

          考慮兼容ILI9320,STM32F1即便設置為1,WR也有100ns高電平,所以設置為1。

          而對STM32F4,則設置為8(9*6=54)

          七,寄存器組合說明

          ST官方庫寄存器定義中并沒有FSMC_BCRx、FSMC_BTRx、FSMC_BWTRx等單獨寄存器

          而是將他們進行了一些組合。規(guī)律如下:

          FSMC_BCRx和FSMC_BTRx,組合成BTCR[8]寄存器組,他們的對應關系如下:

          BTCR[0]對應FSMC_BCR1,BTCR[1]對應FSMC_BTR1

          BTCR[2]對應FSMC_BCR2,BTCR[3]對應FSMC_BTR2

          BTCR[4]對應FSMC_BCR3,BTCR[5]對應FSMC_BTR3

          BTCR[6]對應FSMC_BCR4,BTCR[7]對應FSMC_BTR4

          FSMC_BWTRx則組合成BWTR[7],他們的對應關系如下:

          BWTR[0]對應FSMC_BWTR1,

          BWTR[2]對應FSMC_BWTR2,

          BWTR[4]對應FSMC_BWTR3,

          BWTR[6]對應FSMC_BWTR4,

          BWTR[1]、BWTR[3]和BWTR[5]保留



        關鍵詞: FSMC TFTLCD

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 汕尾市| 科技| 建阳市| 泾源县| 宣恩县| 盐池县| 桑植县| 眉山市| 乌拉特后旗| 响水县| 罗田县| 永城市| 中牟县| 建德市| 浙江省| 乌兰浩特市| 饶平县| 罗山县| 福鼎市| 武乡县| 屯门区| 黄石市| 方山县| 莎车县| 竹溪县| 五寨县| 江安县| 张家港市| 香港 | 广灵县| 淮阳县| 冀州市| 赤水市| 芜湖县| 玛曲县| 专栏| 页游| 襄垣县| 井陉县| 邓州市| 中牟县|