欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用MM32F3270 FSMC驅(qū)動OLED

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

交互式界面被越來越多地集成于多種應(yīng)用中,例如醫(yī)療設(shè)備、過程控制、手機(jī)和其它手持設(shè)備。這些界面主要基于使用彩色TFT-LCD的圖形HMI(人機(jī)界面)。隨著技術(shù)的變革,OLED技術(shù)的顯示方案也得到長足的發(fā)展與廣泛的應(yīng)用。

OLED技術(shù)與其它技術(shù)相比,具有以下優(yōu)點(diǎn):

(1)功耗低

(2)響應(yīng)速度快

(3)較寬的視角

(4)能實(shí)現(xiàn)高分辨率顯示

(5)寬溫度特性

(6)OLED能夠?qū)崿F(xiàn)軟屏

(7)OLED成品的質(zhì)量比較輕

電子產(chǎn)品領(lǐng)域中,OLED應(yīng)用最為廣泛的就是智能手機(jī),其次是筆記本、顯示屏、電視、平板、數(shù)碼相機(jī)等領(lǐng)域,嵌入式應(yīng)用領(lǐng)域中,OLED有很大一部分用作工業(yè)儀表、GPS手環(huán)、可視電話等小尺寸的顯示屏。

本文介紹了如何使用 MM32F3270的FSMC(靈活的靜態(tài)存儲控制器)來驅(qū)動6800接口的OLED。

1、MM32F3270 FSMC的簡要介紹

FSMC是Flexible static memory controller(靈活的靜態(tài)存儲控制器)的簡稱,支持并行接口的SRAM、PSRAM 、NOR FLASH 、TFT-LCD和OLED。

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

2、FSMC 的功能特性

MM32的FSMC具有以下特性:

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

a) SRAM

b) PSRAM

c) NOR FLASH

2) 支持 Intel 8080 協(xié)議

3) 支持 Moto 6800 協(xié)議

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

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

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

a) 等待周期可編程

b) 總線恢復(fù)周期可編程

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

7) 可將32位的AHB訪問請求,轉(zhuǎn)換為對外接設(shè)備連續(xù)的8位,16位的訪問

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

(1)SMCTLR 的 sm_data_width[2:0],定義了外部存儲器的數(shù)據(jù)寬度,需根據(jù)實(shí)際數(shù)據(jù)寬度配置為8位,16位,32 位,此時(shí)需要保障實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)囊恢滦浴?/p>

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

(3)SYSCFG_CFGR1[30:29]:mode_sel來配置不同模式,默認(rèn)值為 01

00:兼容 NOR FLASH 接口

01:兼容 8080 協(xié)議接口

10:兼容 6800 協(xié)議接口

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

FMSC支持的外部接口

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

3、6800和8080總線的區(qū)別

OLED的可支持串行接口(SPI,I2C)和并行接口(主要又可以分為8080模式和6800模式);8080模式和6800模式都需數(shù)據(jù)總線和地址總線,數(shù)據(jù)位傳輸可支持8位,9位,16位,18位,24位,32位,對于數(shù)據(jù)的尋址,都是一樣的。8080模式和6800模式的區(qū)別主要是總線的控制方式上。

以SSD1306 的OLED 驅(qū)動芯片為例,其接口與MCU連接所需要的信號線為:

wKgaomUD8zuAN25SAADpK5gt4b4502.png

I(intel)8080模式

I8080模式管腳的控制腳有5個(gè)及Data信號:

wKgZomUD8z2AG8y6AAAU4e5WOcU560.png
wKgZomUD8z-Acqd3AADzXjRYl7s663.png

M(Motorola)6800模式

wKgaomUD80CAHXHzAAAcD9DHuUw815.png
wKgZomUD80KABbUkAABqBlLwUs8140.png

通過上面分析,其實(shí)不難發(fā)現(xiàn),它們主要區(qū)別就是:

● 8080通過“讀使能(RD)”和“寫使能(WR)”進(jìn)行讀寫操作

● 6800通過“總使能(E)”和“讀寫選擇(W/R)”進(jìn)行讀寫操作

4、FSMC 控制OLED的硬件設(shè)計(jì)

FSMC是如何控制OLED的呢?

OLED控制使用:DC信號可以使用地址線(如A0~A18中的一根)、數(shù)據(jù)線(如D0~D7)、使能信號(E)、讀寫信號(RW)、片選信號(CS)。OLED通過DC信號來決定傳送的數(shù)據(jù)是數(shù)據(jù)還是命令,本質(zhì)上可以理解為一個(gè)地址信號,比如MB039是把DC接在A18上面,那么當(dāng)FSMC控制器寫地址0的時(shí)候,會使得A18 變?yōu)?,對OLED來說,就是寫命令。而FSMC寫地址1的時(shí)候,A0 將會變?yōu)?,對OLED來說,就是寫數(shù)據(jù)。這樣,就把數(shù)據(jù)和命令區(qū)分開了,其實(shí)就是對應(yīng) OLED 操作兩個(gè)地址。當(dāng)然DC也可以接在其他地址線上,MB039是把DC連接在PD13上面的。MM32F3270的FSMC支持8/16/32位數(shù)據(jù)寬度,我們這里用到的OLED是8位寬度的,在設(shè)置的時(shí)候需要選擇8位寬。

FSMC 控制OLED 的Demo應(yīng)用中,使用的開發(fā)板為MB-039,它支持外接使用SSD1306為驅(qū)動器的128 x 24 點(diǎn)陣OLED。

wKgaomUD80aAeoSBAAHRQn3Zxpw688.png 圖2 OLED模塊實(shí)物圖

下圖是OLED模塊接口原理圖:

wKgZomUD80eAczfhAAFodE54mvs211.png 圖3 OLED接口原理圖

各個(gè)信號作用對應(yīng)如下:

wKgaomUD80iAH_DhAAAuZdGEIbU981.png 表2 OLED信號對應(yīng)的電源、復(fù)位與MCU接口的引腳說明

MB039可通過轉(zhuǎn)接板接到OLED模塊。

5、FSMC 控制OLED的軟件設(shè)計(jì)

FMSC Demo應(yīng)用中,使在庫函數(shù)樣例工程中使用選用:

MM32F327x_SamplesLibSamplesFSMCFSMC_Ex6800OLED 中的 FSMC_Ex6800OLED.uvprojx

樣例展示如何初始化OLED接口與實(shí)現(xiàn)OLED并行驅(qū)動顯示。

軟件分為兩個(gè)部分:

(1)FSMC接口GPIO與FSMC接口參數(shù)初始化

(2)OLED顯示初始化與OLED顯示

FSMC接口GPIO與FSMC接口參數(shù)初始化

void FSMC_Ex6800OLED_Demo(void)
{
    u8 t = 0;
    u8* p = (u8*)0x60080000;

    OLED_nRST_Pin_Config();
    OLED_GPIO_Init();
    FSMC_Init_6800();
    OLED_nRST_Setting();
    OLED_Init();
    //其他用戶代碼
}

① 在OLED_GPIO_Init ()中實(shí)現(xiàn)OLED對應(yīng)IO初始化

包括OLED對應(yīng)nRST引腳,背光控制引腳,F(xiàn)SMC相關(guān)的片選,讀寫,E信號,數(shù)據(jù)/命令,數(shù)據(jù)D0~D7引腳的初始化。

② 在FSMC_Init_6800 ()中實(shí)現(xiàn)FSMC功能配置初始化

A. 寫操作周期

B. 單個(gè)bit數(shù)據(jù)寫入保持時(shí)間

C. 寫操作時(shí),地址線的建立時(shí)間

D. 讀操作周期長度設(shè)置

E. 存儲器數(shù)據(jù)總線位寬

F. 模式選擇:6800模式

G. 外接設(shè)備的內(nèi)存大小

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

    FSMC_NORSRAM_BankStructInit( FSMC_BankInitStructure);
    FSMC_NORSRAMStructInit( FSMC_InitStructure);

    RCC_AHB3PeriphClockCmd(RCC_AHB3ENR_FSMC, ENABLE);

    FSMC_BankInitStructure.FSMC_SMReadPipe    = 0;
    FSMC_BankInitStructure.FSMC_ReadyMode     = 0;
    FSMC_BankInitStructure.FSMC_WritePeriod   = 7;
    FSMC_BankInitStructure.FSMC_WriteHoldTime = 0;
    FSMC_BankInitStructure.FSMC_AddrSetTime   = 1;
    FSMC_BankInitStructure.FSMC_ReadPeriod    = 9;
    FSMC_BankInitStructure.FSMC_DataWidth     = FSMC_DataWidth_16bits;
    FSMC_NORSRAM_Bank_Init( FSMC_BankInitStructure, FSMC_NORSRAM_BANK0);

    FSMC_InitStructure.FSMC_Mode = FSMC_Mode_6800;
    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);
}

OLED顯示初始化

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

void OLED_WR_DATA(u16 data)
{
    *(vu16*)0x60000000 = data;
}
void OLED_WR_REG(u16 regval)
{
    *(vu16*)(0x60000000 | (0x01 << 19)) = regval;
}
void OLED_WR_Byte(u8 dat, u8 cmd)
{
    if(cmd) {
        OLED_WR_REG(dat);
    }
    else {
        OLED_WR_DATA(dat);
    }
}    

讀DATA和REG是一樣的操作,不同的是從相應(yīng)地址讀取數(shù)據(jù)。

通過OLED_Refresh_Gram()函數(shù),可以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)刷新。

void OLED_Refresh_Gram(void)
{
    u8 i, n;
    for(i = 0; i < 8; i++) {
        OLED_WR_Byte (0xb0 + i, OLED_CMD);  // Set page address (0~7)
        OLED_WR_Byte (0x00, OLED_CMD);      // Set display location - column low address
        OLED_WR_Byte (0x10, OLED_CMD);      // Set display location - column height address
        for(n = 0; n < 128; n++) {
            OLED_WR_Byte(OLED_GRAM[n][i], OLED_DATA);
        }
    }
} 

結(jié)合OLED_Fill和OLED_ShowChar函數(shù)可以實(shí)現(xiàn)OLED的顯示填充與字符輸出。

通過演示,觀察到在OLED上顯示出了MindMotion 的字符與年月日等打印信息。

來源:靈動MM32MCU

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16464

    瀏覽量

    179613
  • OLED
    +關(guān)注

    關(guān)注

    119

    文章

    6221

    瀏覽量

    224924
  • 人機(jī)界面
    +關(guān)注

    關(guān)注

    5

    文章

    534

    瀏覽量

    44267
  • FSMC
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    38224
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    MM32F3270系列32位MCU的特點(diǎn)有哪些

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

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

    _SRAM\下章的題目為《使用MM32F3270FSMC驅(qū)動外部NOR Flash》講解通過FSMC外擴(kuò)并口Flash的實(shí)現(xiàn)。
    發(fā)表于 11-10 09:22

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

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

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

    了如何使用 MM32F3270FSMC(靈活的靜態(tài)存儲控制器)來驅(qū)動6800接口的OLED。1//MM32F3270
    發(fā)表于 11-29 10:45

    靈動微電子MM32F3270系列MCU的特點(diǎn)介紹

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

    如何采用MM32F3270單片機(jī)的FSMC接口來擴(kuò)展SRAM

    夠支持應(yīng)用的需要,就要用外擴(kuò)SRAM/PSRAM的方式來擴(kuò)展。這時(shí)可以采用MM32F3270片內(nèi)的FSMC接口來擴(kuò)展SRAM/PSRAM。 ? 靈動微MM32F3270系列32位MCU是基于M3內(nèi)核
    發(fā)表于 11-19 16:32 ?675次閱讀

    【國產(chǎn)MCU移植】MM32F3270 EVBoard

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

    基于MM32F3270 以太網(wǎng) Client使用

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

    MM32F3270 ADC注入通道

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

    使用MM32F3270的SDIO驅(qū)動SD卡

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

    使用MM32F3270 FSMC驅(qū)動外部NOR Flash

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

    使用MM32F3270 FSMC驅(qū)動TFT-LCD

    使用MM32F3270 FSMC驅(qū)動TFT-LCD
    的頭像 發(fā)表于 09-27 15:34 ?1148次閱讀
    使用<b class='flag-5'>MM32F3270</b> <b class='flag-5'>FSMC</b><b class='flag-5'>驅(qū)動</b>TFT-LCD

    基于MM32F3270以太網(wǎng)Client使用

    基于MM32F3270以太網(wǎng)Client使用
    的頭像 發(fā)表于 09-27 15:44 ?756次閱讀
    基于<b class='flag-5'>MM32F3270</b>以太網(wǎng)Client使用

    基于MM32F3270以太網(wǎng)UDP使用

    基于MM32F3270以太網(wǎng) UDP使用
    的頭像 發(fā)表于 09-27 15:42 ?552次閱讀
    基于<b class='flag-5'>MM32F3270</b>以太網(wǎng)UDP使用