在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用MM32F3270 FSMC驅動TFT-LCD

jf_pJlTbmA9 ? 來源:靈動MM32MCU ? 作者:靈動MM32MCU ? 2023-09-27 15:34 ? 次閱讀

交互式界面被越來越多地集成于多種應用中,例如醫療設備、過程控制、手機和其它手持設備。這些界面主要基于使用彩色LCD的圖形HMI(人機界面)。對TFT-LCD的需求在全世界范圍內極大增長。本文介紹了如何使用 MM32F3270的FSMC(靈活的靜態存儲控制器)來驅動8080接口的TFT-LCD。

01、MM32F3270 FSMC的簡要介紹

FSMC是Flexible static memory controller(靈活的靜態存儲控制器)的簡稱,能夠與異步存儲器和 LCD等并行外設相連。MM32F3270 的 FSMC支持并行接口的SRAM、PSRAM 、NOR FLASH 和TFT-LCD。

wKgaomUD8ziAeNCQAADpa9c_-iE854.png 圖1 FSMC的功能框圖

02、FSMC 的功能特性

MM32的FSMC具有以下特性:

1) 可配置的靜態存儲器接口包括:

a) SRAM

b) PSRAM

c) NOR FLASH

2) 支持 Intel 8080 協議

3) 支持 moto 6800 協議

4) 8位,16位,32位可配置的數據總線寬度,支持非復用與復用模式

5) BANK1 分為 4 塊子 BANK,每塊 64Mbit 空間

6) 時序可編程以滿足不同的需求

a) 等待周期可編程

b) 總線恢復周期可編程

c) 寫,讀控制周期可編程

7) 可將32位的AHB訪問請求,轉換為對外接設備連續的8位,16位的訪問

MM32F3270的FSMC提供了對多個并行外設的控制與連接,具體配置取決于存儲器類型,主要涉及如下寄存器設置。

01、SMCTLR 的 sm_data_width[2:0],定義了外部存儲器的數據寬度,需根據實際數據寬度配置為8位,16位,32 位,此時需要保障實現數據傳輸的一致性。

02、SMCTLR的sm_data_width_set0/1/2 來設置存儲器的數據寬度,有三種情況:AHB 操作的數據寬度與存儲器數據寬度相同,無數據傳輸一致性的問題;AHB 操作的數據寬度大于存儲器的數據寬度時,AHB 接口將對 hwdata[15:0],hwdatabit[31:16]進行連續寫操作,以適應外部設備的數據寬度,讀操作時,hrdata[31:0]的低 16 位是有效數據;AHB 操作的數據寬度小于存儲器的數據寬度時,若存儲設備沒有高低字節片選,不允許進行寫操作,若存儲設備有高低字節選擇,通過 BL 控制訪問對應字節。可以進行讀操作,但有效數據需要用戶自己處理。

03、SYSCFG_CFGR1[30:29]:mode_sel來配置不同模式,默認值為 01

00:兼容 NOR FLASH 接口
01:兼容 8080 協議接口
10:兼容 6800 協議接口

04、SMSKR0[10:8]用來選擇三組不同的寄存器 register set0/set1/set2,以配置不同的時序

FMSC支持的外部接口

wKgZomUD8zqAZJh8AAAid0QA-Go866.png 表1 FSMC控制器外部信號

03、FSMC 控制LCD的硬件設計

FSMC是如何控制TFTLCD的呢?

我們可以把TFTLCD當成 SRAM 設備使用:外部SRAM的控制一般有:地址線(如A0~A18)、數據線(如D0~D15)、寫信號(WE)、讀信號(OE)、片選信號(CS)。TFTLCD的信號我們包括:RS、D0~D15、WR、RD、CS、 RST和BL等,其中真正在操作LCD的時候需要用到的就只有:RS、D0~D15、WR、 RD 和 CS。其操作時序和 SRAM的控制完全類似,唯一不同就是 TFT-LCD 有 RS 信號,但是沒有地址信號。TFT-LCD通過RS信號來決定傳送的數據是數據還是命令,本質上可以理解為一個地址信號,比如MB039是把RS接在A18上面,那么當FSMC控制器寫地址0的時候,會使得A18 變為0,對TFT-LCD來說,就是寫命令。而FSMC寫地址1的時候,A0 將會變為1,對TFT-LCD來說,就是寫數據。這樣,就把數據和命令區分開了,其實就是對應 SRAM 操作的兩個連續地址。當然RS也可以接在其他地址線上,MB039是把RS連接在PD13上面的。MM32F3270的FSMC支持8/16/32位數據寬度,我們這里用到的LCD是16位寬度的,在設置的時候需要選擇16位寬。

FSMC 控制LCD 的Demo應用中,使用的開發板為MB-039,它支持外接MDM2802與MDM2803兩種TFT-LCD (320x240 2.8’ 液晶顯示屏)。

wKgaomUD9cWAZmLGAAxHip53PSs543.png 圖2 MB-039實物效果圖

下圖是MB-039的FSMC與TFT-LCD的接口原理圖部分,完整原理圖可以通過MM32官網下載

wKgaomUD9ceAdi_FAAC_2srEMyE127.png 圖3 TFT-LCD接口原理圖

各個信號作用對應如下:

wKgZomUD9ciAfqPOAABDmVs4Jl4926.png 表2 LCD信號對應的電源、復位與MCU接口的引腳說明

04、FSMC 控制LCD的軟件設計

FMSC Demo應用中,使在庫函數樣例工程中使用選用:

FSMC_Ex8080TFTLCD.uvprojx

實驗展示如何初始化LCD接口與實現LCD并行驅動顯示。

軟件分為兩個部分:

01)FSMC接口GPIO與FSMC接口參數初始化

02)LCD顯示初始化與LCD顯示

FSMC接口GPIO與FSMC接口參數初始化

void BSP_LCD_Configure()
{
    initGPIO_LCD();
    initFSMC();
    LCDC_Init_Reg();
    lcdFillColor(Black);
    lcdBlcH();
}

① 在initGPIO_LCD()中實現LCD對應IO初始化

包括LCD對應nRST引腳,背光控制引腳,FSMC相關的片選,讀寫,數據/命令,數據D0~D15引腳的初始化。

② 在initFSMC()中實現FSMC功能配置初始化

A. 寫操作周期

B. 單個bit數據寫入保持時間

C. 寫操作時,地址線的建立時間

D. 讀操作周期長度設置

E. 存儲器數據總線位寬

F. 式選擇:8080模式

G. 外接設備的內存大小

void initFSMC(void)
{
    FSMC_InitTypeDef                FSMC_InitStructure;
    FSMC_NORSRAM_Bank_InitTypeDef   FSMC_BankInitStructure;

    RCC_AHB3PeriphClockCmd(RCC_AHB3ENR_FSMC, ENABLE);

    FSMC_BankInitStructure.FSMC_SMReadPipe    = 0;
    FSMC_BankInitStructure.FSMC_ReadyMode     = 0;
    FSMC_BankInitStructure.FSMC_WritePeriod   = 0x2;
    FSMC_BankInitStructure.FSMC_WriteHoldTime = 1;
    FSMC_BankInitStructure.FSMC_AddrSetTime   = 3;
    FSMC_BankInitStructure.FSMC_ReadPeriod    = 0x1;
    FSMC_BankInitStructure.FSMC_DataWidth     = FSMC_DataWidth_16bits;
    FSMC_NORSRAM_Bank_Init( FSMC_BankInitStructure, FSMC_NORSRAM_BANK0);

    FSMC_InitStructure.FSMC_Mode = FSMC_Mode_8080;
    FSMC_InitStructure.FSMC_TimingRegSelect = FSMC_TimingRegSelect_0;
    FSMC_InitStructure.FSMC_MemSize = FSMC_MemSize_64MB;
    FSMC_InitStructure.FSMC_MemType = FSMC_MemType_NorSRAM;
    FSMC_InitStructure.FSMC_AddrDataMode = FSMC_AddrDataMUX;
    FSMC_NORSRAMInit( FSMC_InitStructure);
}

LCD顯示初始化

Bank0地址為0x60000000,0x80000=(0x01 << 19)則是地址線A18的偏移量。首先完成寫CMD和DATA驅動:

void lcdCmd(u8 cmd)
{
    *(u16*)(0x60000000) = cmd;
}

////////////////////////////////////////////////////////////////////////////////
void lcdData(u8 dat)
{
    *(u16*)(0x60000000 | (0x01 << 19)) = dat;
}

////////////////////////////////////////////////////////////////////////////////
void lcdData16(u16 dat)
{
    *(u16*)(0x60000000 | (0x01<< 19)) = dat;
}     

讀CMD和REG也是一樣的操作,不同的是從相應地址讀取數據。

01)在LCDC_Init_Reg ()中調用上述3種函數實現LCD對應驅動芯片中寄存器器的初始設置

02)在lcdFillColor(Black); lcdBlcH();中實現配置LCD的初始顯示頁面為全黑色和打開背光

LCD驅動顯示

LCD的畫點流程都可以概括為:設置坐標→寫入GRAM指令→寫入顏色;

LCD的讀點的流程可以概括為:設置坐標→讀取GRAM指令→讀取顏色。

通過畫點的操作到畫方塊、線、圓、字符等功能。

該Demo中通過Systick定時刷新要顯示的數據,實現了LCD的功能演示。

void randRefresh()
{
    u16 x, y, w, h, c;
    drawSquare(dx,  dy,  dw, dh, SPACE, NUL);
    if (drawBlockCnt++ % 2) {
        x = rand();
        x %= (dw - 2);
        y = rand();
        y %= (dh - 2);
        w = rand();
        w %= DMAX;
        h = rand();
        h %= DMAX;
        c = rand();
        c  = 0x0f;
        if ((x + w) > (dw - 2)) x = dw - w - 2;
        if ((y + h) > (dh - 2)) y = dh - h - 2;
        drawRec (x + dx + 1, y + dy + 1, w, h, getColor(c));
    }
    else {
        c = rand();
        c  = 0x0f;
        drawRec (dx + 1, dy + 1, dw - 2, dh - 2, getColor(c));
    }
}

將程序下載進入板子我們可以觀察到,TFTLCD上顯示出了下列MindMotion Logo:

wKgaomUD9cuAVYD_AACWINNk8b4979.png 圖4 TFT-LCD接口顯示Logo圖

還可以觀察到屏幕快速畫出不同的顏色方框,表明實驗成功。

來源:靈動MM32MCU

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16361

    瀏覽量

    178046
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4426

    瀏覽量

    167494
  • TFT
    TFT
    +關注

    關注

    10

    文章

    385

    瀏覽量

    111098
  • FSMC
    +關注

    關注

    0

    文章

    55

    瀏覽量

    38151
收藏 人收藏

    評論

    相關推薦

    靈動微課堂 (第188講) | 使用MM32F3270 FSMC驅動TFT-LCD

    的需求在全世界范圍內極大增長。本文介紹了如何使用 MM32F3270FSMC(靈活的靜態存儲控制器)來驅動8080接口的TFT-LCD。 01 M
    發表于 10-29 17:12

    MM32F3270系列32位MCU的特點有哪些

    上海靈動微電子推出全新主流型MM32F3270系列32位MCU,此款MM32F3270系列是基于M3內核的32位微控制器,MM32F3270適用于要求高集成度的高性能控制領域,如:工業控制、消防監控
    發表于 11-03 07:20

    靈動微課堂 (第189講) | 使用MM32F3270 FSMC驅動SRAM

    _SRAM\下章的題目為《使用MM32F3270FSMC驅動外部NOR Flash》講解通過FSMC外擴并口Flash的實現。
    發表于 11-10 09:22

    靈動微課堂 (第190講) | 使用MM32F3270 FSMC驅動外部NOR Flash

    /mm32f_mainstream/mm32f3270/ 工程路徑如下:~MM32F327x_Samples\LibSamples\FSMC\FSM
    發表于 11-19 09:29

    靈動微課堂 (第191講) | 使用MM32F3270 FSMC驅動OLED

    了如何使用 MM32F3270FSMC(靈活的靜態存儲控制器)來驅動6800接口的OLED。1//MM32F3270 FSMC的簡要介紹
    發表于 11-29 10:45

    靈動微電子MM32F3270系列MCU的特點介紹

    上海靈動微電子推出全新主流型MM32F3270系列32位MCU,此款MM32F3270系列是基于M3內核的32位微控制器,MM32F3270適用于要求高集成度的高性能控制領域,如:工業控制、消防監控
    發表于 03-22 16:57 ?2161次閱讀

    如何采用MM32F3270單片機的FSMC接口來擴展SRAM

    夠支持應用的需要,就要用外擴SRAM/PSRAM的方式來擴展。這時可以采用MM32F3270片內的FSMC接口來擴展SRAM/PSRAM。 ? 靈動微MM32F3270系列32位MCU是基于M3內核
    發表于 11-19 16:32 ?655次閱讀

    【國產MCU移植】MM32F3270 EVBoard

    【國產MCU移植】MM32F3270 EVBoard
    發表于 12-03 17:21 ?5次下載
    【國產MCU移植】<b class='flag-5'>MM32F3270</b> EVBoard

    基于MM32F3270 以太網 Client使用

    接下來給大家介紹基于TCP包的通訊。內容分為基于MM32F3270以太網Client的使用與基于MM32F3270以太網Server的使用。
    發表于 02-08 15:10 ?0次下載
    基于<b class='flag-5'>MM32F3270</b> 以太網 Client使用

    MM32F3270 ADC注入通道

    MM32F3270 ADC注入通道
    的頭像 發表于 09-27 15:59 ?1000次閱讀
    <b class='flag-5'>MM32F3270</b> ADC注入通道

    使用MM32F3270的SDIO驅動SD卡

    使用MM32F3270的SDIO驅動SD卡
    的頭像 發表于 09-27 15:56 ?747次閱讀
    使用<b class='flag-5'>MM32F3270</b>的SDIO<b class='flag-5'>驅動</b>SD卡

    使用MM32F3270 FSMC驅動OLED

    使用MM32F3270 FSMC驅動OLED
    的頭像 發表于 09-27 15:30 ?954次閱讀
    使用<b class='flag-5'>MM32F3270</b> <b class='flag-5'>FSMC</b><b class='flag-5'>驅動</b>OLED

    使用MM32F3270 FSMC驅動外部NOR Flash

    使用MM32F3270 FSMC驅動外部NOR Flash
    的頭像 發表于 09-21 17:37 ?951次閱讀
    使用<b class='flag-5'>MM32F3270</b> <b class='flag-5'>FSMC</b><b class='flag-5'>驅動</b>外部NOR Flash

    基于MM32F3270以太網Client使用

    基于MM32F3270以太網Client使用
    的頭像 發表于 09-27 15:44 ?708次閱讀
    基于<b class='flag-5'>MM32F3270</b>以太網Client使用

    QVGA TFT-LCD直接驅動使用STM32F10xx FSMC外設

    電子發燒友網站提供《QVGA TFT-LCD直接驅動使用STM32F10xx FSMC外設.pdf》資料免費下載
    發表于 09-21 14:36 ?5次下載
    QVGA <b class='flag-5'>TFT-LCD</b>直接<b class='flag-5'>驅動</b>使用STM32<b class='flag-5'>F</b>10xx <b class='flag-5'>FSMC</b>外設
    主站蜘蛛池模板: 国产小视频免费在线观看| 黄色亚洲| 高清成人| 国产精品久久久久天天影视| 清朝荒淫牲艳史在线播放| 日韩成人午夜| 夜夜爽天天干| 最新亚洲一区二区三区四区| 婷婷六月激情在线综合激情 | 免费人成在线观看网站品爱网日本| 97福利| 动漫精品成人免费网站| 亚洲亚洲人成网站在线观看| 久久精品人| 国产福利2021最新在线观看| 亚洲大成色www永久网| 国产精品伦理一区二区三区| 1024你懂的在线播放欧日韩| 香港三级理论在线观看网站| 丁香六月在线| h在线国产| 人人做人人澡人人人爽| 手机看片91| 黄蓉吕文德欲乱系列小说| 激情都市亚洲| 直接看黄的网站| 日韩种子| 天堂在线最新版资源www| aaaaa毛片| 成年片免费网址网站| xxxxxxxx日本69| 美女一区二区三区| 国产精品九九热| 色噜噜噜噜噜| 日韩一级片免费| 亚洲黄色色图| 午夜剧院免费| 一级做a爰片久久毛片美女图片| 国产精品久久久亚洲| 一区在线播放| 黄 色 免 费 网站在线观看|