FSMC驅動TFTLCD原理,時序和寄存器介紹

2020-11-25 電子工程世界

一,FSMC簡介

FSMC:靈活的靜態存儲控制器能夠與同步或異步存儲器和16位PC存儲器卡連接STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存儲器STM32 407和103是不支持SD RAM的,429,439支持SD RAM操作12345


二,FSMC驅動LCD原理

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

SRAM控制包含:    地址線(如A0~A25)    數據線(如D0~D15)    寫信號(WE,即WR)    讀信號(OE,即RD)    片選信號(CS)    若SRAM支持字節控制,還有UB/LB信號。12345678

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

其中真正操作LCD時用到的就只有:    數據&命令:RS    數據線:D0~D15    寫信號:WR    讀信號:RD    片選信號:CS1234567

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

TFTLCD通過RS信號來決定傳送是數據還是命令,可以理解為一個地址信號 
將RS接到FSMC地址線A10(A0-A25隨意),TFTLCD就被當做一個SRAM使用 
這樣TFTLCD成為只有一個地址的SRAM設備,從而實現FSMC驅動TFTLCD


三,FSMC存儲塊

STM32的FSMC支持8/16/32位數據寬度,我們使用的LCD為16位,所以設置選擇16位 
FSMC的外部設備地址映像:STM32的FSMC將外部存儲器劃分為固定大小為256M字節的四個存儲塊

如圖:    FSMC分為4塊,每塊256M字節又被劃分為4*64,即四個片選    NOR / PSRAM使用塊1,共256M    NAND快閃記憶體使用塊2,3,共512M    PC卡使用塊4,共256M123456

所以我們使用NOR PSRAM驅動TFTLCD


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

STM32的FSMC存儲塊1(Bank1)用於驅動NOR FLASH/SRAM/PSRAM 
Bank1被分為4個區,每個區管理64M字節空間,每個區都有獨立的寄存器對所連接的存儲器進行配置。 
Bank1的256M字節空間由28根地址線(HADDR[27:0])尋址。 這裡HADDR,是內部AHB地址總線 
HADDR[25:0]來自外部存儲器地址FSMC_A[25:0],而HADDR[26:27]對4個區進行尋址。

如下圖所示:

說明:     HADDR[27:26]是不可手動配置的,當選擇所在區後會自動賦值注意:     1,當Bank1接 8位寬度存儲器時:HADDR[25:0] -> FSMC_A[25:0]     2,當Bank1接16位寬度存儲器時:HADDR[25:1] -> FSMC_A[24:0]        由於內部每個地址對應一個字節,外部設備16位寬,FSMC的一個地址對應兩個字節        即:             0000對應FSMC_A[0]=0   (2位元組)             0010對應FSMC_A[0]=1   (2位元組)             0100對應FSMC_A[1]=1   (2位元組)        所以對應關係需要除以2,內部右移一位對齊        此時最低位沒用,訪問最低位需要使用UB/LB     不論外部接8位/16位寬設備,FSMC_A[0]永遠接在外部設備地址A[0]123456789101112131415161718


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

STM32的FSMC存儲塊1支持的異步突發訪問模式 
包括模式1,模式A~D等多種時序模型,驅動SRAM一般使用模式1或模式A 
我們使用模式A驅動LCD(當做SRAM使用),模式A支持讀寫時序分開設置

上一篇說的LCD時序,我們知道,LCD的讀寫耗時是不同的.寫快讀慢 
這裡採用模式A,針對不同的速度,做不同的設置

模式A讀時序:

模式A寫時序:

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

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


六,FSMC相關寄存器介紹

對於NOR FLASH/PSRAM控制器-存儲塊1,可通過FSMC_BCRx、FSMC_BTRx和FSMC_BWTRx寄存器設置(其中x=1~4,對應4個區)。 
通過這3個寄存器,可以設置FSMC訪問外部存儲器的時序參數,拓寬了可選用的外部存儲器的速度範圍。

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

EXTMOD:     擴展模式使能位,控制是否允許讀寫不同的時序,需設置為1WREN:     寫使能位。我們要向TFTLCD寫數據,需設置為1MWID[1:0]:     存儲器數據總線寬度。00,表示8位數據模式;01表示16位數據模式;10和11保留。     我們的TFTLCD是16位數據線,需設置WMID[1:0]=01。MTYP[1:0]:     存儲器類型。00表示SRAM、ROM;01表示PSRAM;10表示NOR FLASH;11保留。     我們把LCD當成SRAM用,需設置MTYP[1:0]=00。MBKEN:     存儲塊使能位。需設置為112345678910111213

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

ACCMOD[1:0]:     訪問模式。00:模式A;01:模式B;10:模式C;11:模式D。     我們使用模式A,需設置為00DATAST[7:0]:     數據保持時間,等於: DATAST(+1)個HCLK時鐘周期,DATAST最大為255。     對於ILI9341相當於RD低電平持續時間,最大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高電平持續時間,為90ns。     STM32F1的FSMC性能較低,即便設置為0,RD也有190ns高電平,所以設置為1     STM32F1設置為15注意:     如果未設置EXTMOD位,則讀寫共用FSMC_BTRx時序寄存器12345678910111213141516171819

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

ACCMOD[1:0]:     訪問模式。00:模式A;01:模式B;10:模式C;11:模式D。DATAST[7:0]:     數據保持時間,等於: DATAST(+1)個HCLK時鐘周期,DATAST最大為255。     對ILI9341來說,其實就是WR低電平持續時間,為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高電平持續時間,為15ns。     考慮兼容ILI9320,STM32F1即便設置為1,WR也有100ns高電平,所以設置為1。     而對STM32F4,則設置為8(9*6=54)12345678910111213


七,寄存器組合說明

ST官方庫寄存器定義中並沒有FSMC_BCRx、FSMC_BTRx、FSMC_BWTRx等單獨寄存器 
而是將他們進行了一些組合。規律如下:

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

BTCR[0]對應FSMC_BCR1,BTCR[1]對應FSMC_BTR1BTCR[2]對應FSMC_BCR2,BTCR[3]對應FSMC_BTR2BTCR[4]對應FSMC_BCR3,BTCR[5]對應FSMC_BTR3BTCR[6]對應FSMC_BCR4,BTCR[7]對應FSMC_BTR412345

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  時序  寄存器 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/article_2018060339542.html 本網站轉載的所有的文章、圖片、音頻視頻文件等資料的版權歸版權所有人所有,本站採用的非本站原創文章及圖片等內容無法一一聯繫確認版權者。如果本網所選內容的文章作者及編輯認為其作品不宜公開自由傳播,或不應無償使用,請及時通過電子郵件或電話通知我們,以迅速採取適當措施,避免給雙方造成不必要的經濟損失。

推薦閱讀

STM32 FSMC 詳解

,上面就是IO直接控制LCD的方法。假如放到STM32裡面,用IO直接控制顯得效率很低。STM32有FSMC(其實其他晶片基本都有類似的總線功能),FSMC的好處就是你一旦設置好之後,WR、RD、DB0-DB15這些控制線和數據線,都是FSMC自動控制的。打個比方,當你在程序中寫到:*(volatile unsigned short int *)(0x60000000)=val;那麼FSMC就會自動執行一個寫的操作,其對應的主控晶片的WE、RD這些腳,就會呈現出寫的時序出來(即WE=0,RD=1),數據val的值也會通過DB0-15自動呈現出來(即FSMC-D0:FSMC-D15=val)。地址0x60000000會被呈現

發表於 2020-03-23

FSMC-靈活的靜態存儲控制器

最近在學習SMT32的FSMC模塊,現將我自己對FSMC的理解講解一下,並對學習過程中遇到的疑點和難點進行分享。0.前言學習FSMC,我推薦《STM32F4xx中文參考手冊》、《STM32F4開發指南-庫函數版本_V1.1.pdf》和一些SRAM的技術文檔,比如《IS62WV51216.pdf》。如果有STM32開發板那就更好了,如果沒有開發板,只是想了解FSMC的工作原理及過程,可以參考STM32F407的程序代碼,這些資料可以去正點原子官方網站免費下載:http://www.openedv.com/thread-13912-1-1.html。本文主要是按照《STM32F4xx中文參考手冊》FSMC部分講解。對我在學習過程中

發表於 2020-03-23

STM32-FSMC-SRAM

一、基本概念1. 與非總線復用的16位SRAM接口FSMC配置SRAM存儲器和NOR快閃記憶體存儲器共用相同的FSMC存儲塊,所用的協議依不同的存儲器類型而有所不同。控制SRAM存儲器,FSMC應該具有下述功能:●使用或禁止地址/數據總線的復用功能。●選擇所用的存儲器類型:NOR快閃記憶體、SRAM或PSRAM。●定義外部存儲器的數據總線寬度:8或16位。●使用或關閉擴展模式:擴展模式用於訪問那些具有不同讀寫操作時序的存儲器。正如配置NOR快閃記憶體存儲器一樣,用戶必須按照SRAM存儲器的數據手冊給出的時序數據,計算和設置下列參數:●ADDSET:地址建立時間●ADDHOLD:地址保持時間●DATAST:數據建立時間二、例程1.

發表於 2020-03-23

STM32通過FSMC讀寫FPGA

硬體平臺:icore板(STM32F103VC + EP4C6E22C8)STM32F103VC是100管腳的,FSMC引腳定義:地址僅有A19-23  A16-18 共8根地址線,數據線有16根,控制信號RD、WR、NE1FPGA掛在BANK1的第一區(NE1,還可以有NE2、3、4) 這樣可以在FPGA內定義8個寄存器(僅解析A16-18三根地址線) /***********************************************************據此定義如下STM32與FPGA間通信用的寄存器&nbsp

發表於 2020-03-17

在使用STM32的FSMC的一些體會。。

剛開始接觸感覺似乎很難,真的是雲裡霧裡。但是看了百度百科FMSC介紹以及芯嵌stm32入門視頻《基於stm32的FSMC控制LCD的理解》視頻終於對FMSC有自己的理解。雖然還有些細節還沒有完全吃透,但是學東西就是需要在摸索中前進,停下來就是浪費時間。然後馬上拿起板子,下載SRAM的例程運行。好正常運行。下面我們來看看相關的代碼吧。/*神舟SRAM讀寫程序相關定義*/#define BUFFER_SIZE        0x400              /*定義讀寫BUFFER大小*/#define

發表於 2020-03-17

STM32使用FSMC驅動8080時序CH395的一些問題

CH395L是帶並口的版本,支持串口、SPI、並口三種模式,網卡類似於內置TCP協議的W5500,用戶只需讀取一些參數設置socket就可以完成網絡通信。CH395具有並口模式,這是個特色,在對速度要求高的場合,並口比SPI等串行方式快很多,在使用stm32f103以fsmc硬體並口驅動ch395時參考秉火和戰艦的驅動LCD的例程,因為都是8080時序的設備,方法相似。在配置過程中,發現在以杜邦線連接ch395模塊的情況下,readWriteTiming.FSMC_AddressSetupTime      = 0x03; &nbsp

發表於 2020-03-17

相關焦點

  • FSMC知識詳解,以及驅動TFTLCD原理
    的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存儲器  STM32 407和103是不支持SD RAM的,429,439支持SD RAM操作  二,FSMC驅動LCD原理
  • LCD驅動工作原理 ,基於51單片機LCD底層時序程序該如何編寫?
    LED驅動原理方式解析:  (1)被動矩陣LCD技術  高信息密度顯示技術中首先商品化的是被動矩陣顯示技術,它得名於控制液晶單元的開和關的簡單設計。被動矩陣液晶顯示的驅動方式是由垂直與水平方向的電極所構成的,且將單獨的液晶單元夾在彼此垂直的電極中間。
  • STM32 FSMC接口驅動TFT-LCD設計
    這種方案對相應的寄存器進行配置後就可以自動向TFT數字彩屏發送數據,無需CPU參與,讓CPU有足夠時間來處理其他程序。  1 STM32 簡介  STM32 是基於ARM 內核Cortex-M3 的32 位微控制器系列。Cortex-M3內核是為低功耗和價格敏感的應用而專門設計的,具有突出的能效比和處理速度。
  • 嵌入式開發:STM32 FSMC接口驅動TFT-LCD設計
    本文提出了一種能直接驅動數字液晶屏的設計方案,方案先介紹了TFT數字彩屏的工作原理,利用STM32處理器的FSMC接口設計的硬體電路和軟體程序均能對顯示控制晶片進行有效的控制。在實際應用中顯示清晰流暢,並且CPU有足夠的時間來處理用戶程序。該方案能成功應用在電腦橫機的人機界面顯示中,且其硬體電路結構簡單、控制方式靈活、對於其他型號的接口晶片也能提供參考。
  • tftlcd顯示器工作原理是什麼 tftlcd顯示器應用特性
    下面,小編就給大家介紹tft-lcd的工作原理以及tft-lcd的應用特性。和crt的原理完全不同,lcd需要來自背後的光源,當光束通過這層液晶時,液晶體會並排或呈不規則扭轉形狀,所以液晶更像是一個個閘 門 ,選擇光線穿透是否,我們才能在屏幕看到深淺不一,錯落有致的圖像。  目前主流的液晶顯示器都是薄膜電晶體lcd(tftlcd),是由原有的液晶顯示技術發展擴展而來的。
  • ...電路和時序邏輯電路比較_組合邏輯電路和時序邏輯電路有什麼區別
    打開APP 組合邏輯電路和時序邏輯電路比較_組合邏輯電路和時序邏輯電路有什麼區別 發表於 2018-01-30 17:26:04
  • 組合邏輯電路和時序邏輯電路比較_組合邏輯電路和時序邏輯電路有...
    打開APP 組合邏輯電路和時序邏輯電路比較_組合邏輯電路和時序邏輯電路有什麼區別 發表於 2018-01-30 17:26:04
  • Bootloader中LCD硬體初始化和軟體驅動程序設計
    在Bootloader啟動過程中使能一個顯示驅動,實現刷屏功能,並不違背這一目標。本文通過對Bootloader的原理分析和嵌入式晶片C6310中LCD控制器的研究,設計了Bootloader中LCD硬體初始化和軟體驅動程序。該設計完善了Bootloader的擴展功能,加快了手機動畫的實現,改善了客戶的使用體驗。
  • 電機驅動晶片DRV8823在XBT自動投放系統中的應用
    2 DRV8823時序及寄存器介紹2.1 DRV8823的時序DRV8823的串行數據時序如圖1所示,SSTB信號在原理圖中一直為高電平,因此串行接口一直有效並且輸出使能。數據包的傳輸包括16個數據位,需要注意的是,與常規SPI總線不同,控制器需要先向DRV8823晶片傳輸數據字節的低位。
  • STM32單片機的FSMC對TFT的驅動
    1、我們之前通過使用GPIO來模擬8080/6800時序從而達到驅動彩屏的,同樣需要明白的一點就是我們也只是使用FSMC來模擬8080/6800時序,只不過這個讀寫速度有些快(使用了總線嘛),僅此而已! 簡單一點就是:8080是通過「讀使能(RE)」和「寫使能(WE)」兩條控制線進行讀寫操作。
  • 移位寄存器的原理
    很多出現在我們生活中,而我們卻不知道,有沒有這樣一種經歷就是有一天你不小心把自己的高端產品摔壞了,出現很多很小的機械零件卻不知道它的功能和名稱呢?有的時候你甚至不在意這個。現在小編大家知道移位寄存器嗎? 移位寄存器的原理 移位寄存器不僅能寄存數據,而且在時鐘信號的最用下使它其中的數據依次左移或者右移。
  • 移位寄存器的特點_移位寄存器工作原理
    這種移位寄存器是一維的,事實上還有多維的移位寄存器,即輸入、輸出的數據本身就是一些列位。實現這種多維移位寄存器的方法可以是將幾個具有相同位數的移位寄存器並聯起來。   移位寄存器分類   根據移位方向,常把它分成左移寄存器、右移寄存器和雙向移位寄存器三種。
  • 同步時序邏輯電路的分析方法
    [例7.2.1] 1.寫方程式2.列狀態轉換真值表3.邏輯功能的說明4 畫狀態轉換圖和時序圖5.檢查電路能否自啟動[例7.2.2] 1.寫方程式2.列狀態轉換真值表3.邏輯功能的說明4 畫狀態轉換圖和時序圖7.2.2 異步時序邏輯電路的分析方法應寫出時鐘方程。
  • I2C總線驅動在嵌入式系統中的兩種實現
    2 I2C總線原理2.1 I2C工作原理I2C總線是由數據線SDA和時鐘線SCL構成的串行總線,可發送和接收數據。每個連接到總線的器件都可以通過惟一的地址與主機通訊,主機可以作為主機發送器或主機接收器。他是一個真正的多主機總線,如果兩個或更多主機同時初始化,數據傳輸可以通過衝突檢測和仲裁防止數據被破壞。
  • 從靜態時序分析到SDRAM時序收斂(上篇)
    ,比如我們需要從A寄存器到B寄存器的延遲不能大於10ns,如果我們不添加時序約束,綜合工具可能會有好幾條路徑,按照它自己的要求來布局布線,那麼從A寄存器到B寄存器的時間就有可能是20ns或者15ns之類的路徑,而我們需要的是不能大於10ns,因此,我們需要添加時序約束,再根據特定的時序模型,使我們的系統達到設計要求。
  • 移位寄存器的工作原理是什麼?
    移位寄存器的工作原理是什麼? 佚名 發表於 2010-03-08 14:56:55 移位寄存器的工作原理是什麼?
  • 基於80C52的光電二極體陣列驅動電路設計
    摘要:介紹了一種基於單片機的光電二極體陣列驅動電路。光敏面積大,S3923—256Q的像元高度可以達到0.5 mm,寬度為25μm,光電二極體陣列S3923—256Q將數字移位寄存器、有效光電二極體陣列和啞元二極體陣列集成在一起,使得S3923—256Q能夠在時序電路的控制下完成自掃描的過程,從而提高了響應速度,能夠響應0.1~500kHz的信號,電路靈活性強。其功耗僅有10 mW,適用於做微弱光信號檢測。
  • 數字溫度傳感器DS1621在Linux下的IIC接口驅動設計
    IIC總線時序如圖1所示,在IIC總線使用過程中,傳輸開始和停止的條件如下:當SCL持續為「1」而SDA從「1」變為「0」時表示將要開始發送數據;而當SCL持續為「1」而SDA從「0」變為「1」表示停止發送數據。其中SDA線上的數據在時鐘線SCL為「1」期間必須是穩定的,只有當SCL線上的時鐘信號為低時數據線上的狀態才能改變。
  • 詳解I2C總線鍵盤電路以及驅動程序設計
    >以及驅動程序的設計。二、MAX7348MAX7348 是美國MAXIM 公司生產的2 線接口、低EMI 鍵盤開關和發聲控制器,可監控多達40 個按鍵,可對按鍵去抖並保存在FIFO 中,去抖時間用戶可在9 ~ 40ms 之間任意設置,MAX7348 自帶的音調發生器在控制器的作用下可自動發出按鍵聲和報警聲,在發聲期間,輸出還可以設置為高電平或低電平,以驅動電子發聲器、繼電器或指示燈。
  • I2C總線概述及時序總結
    終端掛載在總線上,有主端和從端之分,主端必須是帶有CPU的邏輯模塊,在同一總線上同一時刻使能有一個主端,可以有多個從端,從端的數量受地址空間和總線的最大電容 400pF的限制。● 主端主要用來驅動SCL line;● 從設備對主設備產生響應;二者都可以傳輸數據,但是從設備不能發起傳輸,且傳輸是受到主設備控制的。