一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

STM32CubeMx之FSMC靈活靜態(tài)存儲(chǔ)器控制器

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-05-30 09:25 ? 次閱讀

1.簡介

?FSMC模塊能夠與同步或異步存儲(chǔ)器和16位PC存儲(chǔ)器卡接口,它的主要作用是:
● 將AHB傳輸信號(hào)轉(zhuǎn)換到適當(dāng)?shù)耐獠吭O(shè)備協(xié)議
● 滿足訪問外部設(shè)備的時(shí)序要求
所有的外部存儲(chǔ)器共享控制器輸出的地址、數(shù)據(jù)和控制信號(hào),每個(gè)外部設(shè)備可以通過一個(gè)唯一的片選信號(hào)加以區(qū)分。 FSMC在任一時(shí)刻只訪問一個(gè)外部設(shè)備。
FSMC具有下列主要功能:
● 具有靜態(tài)存儲(chǔ)器接口的器件包括:
? ─ 靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)
? ─ 只讀存儲(chǔ)器(ROM)
? ─ NOR閃存
? ─ PSRAM(4個(gè)存儲(chǔ)器塊)

● 兩個(gè)NAND閃存塊,支持硬件ECC并可檢測(cè)多達(dá)8K字節(jié)數(shù)據(jù)
● 16位的PC卡兼容設(shè)備
● 支持對(duì)同步器件的成組(Burst)訪問模式,如NOR閃存和PSRAM
● 8或16位數(shù)據(jù)總線
FSMC管理1GB空間,擁有4個(gè)Bank連接外部存儲(chǔ)器,每個(gè)Bank有獨(dú)立的片選信號(hào),每個(gè)Bank有獨(dú)立的時(shí)序配置,同步批量傳輸訪問最高頻率可達(dá)60MHz
支持的存儲(chǔ)器類型:
靜態(tài)地址映射存儲(chǔ)器:SRAM、PSRAM、NOR/ONENAND、ROM
LCD接口:支持8080和6800模式
NANDFlash和16位PCCard

2.外掛設(shè)備地址映射

pYYBAGKTf62AOVN-AAHcF6hKG8I493.pngpoYBAGKTf_GAYyz6AAIGy-UqnYI637.png

NOR/PSRAM是”static memory map”設(shè)備: 256M字節(jié)的空間需要28根地址線尋址,HADDR表示內(nèi)部AHB地址線;
HADDR[27:26]用來對(duì)4個(gè)region尋址;
HADDR[25:0]用來對(duì)外部地址FSMC[25:0];
無論8位/16位寬度,F(xiàn)SMC_A[0]始終連接外部設(shè)備地址A[0]
當(dāng)外接設(shè)備16位數(shù)據(jù)寬度:HADDR[25:1]–>FSMC_A[24:0]
當(dāng)外接設(shè)備8位數(shù)據(jù)寬度:HADDR[25:0]–>FSMC_A[25:0]

poYBAGKTg3uAPTfhAAD5NzLmbcs205.png#pic_center

3.LCD硬件接口

poYBAGKTgCyAAmI6AAQCN-Trsxo095.png

LCD屏
?分辨率:320*480;3.5寸;
?驅(qū)動(dòng)方式:8080并口時(shí)序(Intel公司),16位真彩色(RGB565);
?屏幕驅(qū)動(dòng)IC:NT35310;

pYYBAGKTgIKAP2jrAABzs-rp6cI825.png

4.軟件設(shè)置

?1.芯片選擇

poYBAGKTgJ2AfplTAAGGsV4_t44569.png

2. 時(shí)鐘配置

在這里插入圖片描述pYYBAGKTgLqAYpIrAADd010he_s984.png

3.FSMC配置
?根據(jù)LCD硬件接口可知LCD接在FSMC_Blank1的region4上。

pYYBAGKTgQWAFIeQAAM0gaFeqUo471.pngpYYBAGKTgROAcWfuAADPhfES4Ww313.png

5 代碼生成

?1.FSMC配置代碼

pYYBAGKTgVWAEUIDAAWpru7EKik372.png

FSMC寄存器配置可參考STM32中文參考手冊(cè)第19章靈活靜態(tài)存儲(chǔ)器控制器(FSMC)。

poYBAGKTgZWAbJZRAAGrJsRyJGg405.pngpYYBAGKTgaaAKZk7AAGk_ZxIbT8135.png

2.LCD顯示圖片和顯示漢字示例
(1) 讀寫數(shù)據(jù)

根據(jù)LCD硬件接口時(shí)序8080,要想實(shí)現(xiàn)對(duì)LCD屏數(shù)據(jù)顯示則需要完成LCD寫數(shù)據(jù)和寫寄存器,LCD接在FSMC_Blank1的region4上,通過地址線FSMC_A10作為數(shù)據(jù)命令選擇線,通過FSMC地址映射關(guān)系可知:
讀寫寄存器地址:0x6c000000
讀寫數(shù)據(jù)地址:0x6c000800
寫寄存器和寫數(shù)據(jù)代碼如下:

typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
#define LCD_WR_REG *((volatile u16 *)0x6c000000)
#define LCD_WR_DAT *((volatile u16 *)0x6c000800)	
/*LCD寫寄存器*/
static void LcdWriteReg(u16 reg)
{
	LCD_WR_REG=reg;
}
/*LCD寫數(shù)據(jù)*/
static void LcdWriteData(u16 dat)
{
	LCD_WR_DAT=dat;
}

(2)設(shè)置光標(biāo)指令0X2A 和0X2B
該指令是頁地址設(shè)置指令,在從左到右,從上到下的掃描方式(默認(rèn))下面,該指令用于設(shè)置縱坐標(biāo)( x 坐標(biāo))

poYBAGKTg3-AFLshAAEUMUjmm3Q823.png#pic_center

在默認(rèn)掃描方式時(shí),該指令用于設(shè)置 x 坐標(biāo),該指令帶有 4 個(gè)參數(shù),實(shí)際上是 2 個(gè)坐標(biāo)值: SC 和 EC,即列地址的起始值和結(jié)束值, SC 必須小于等于 EC,且 0≤SC/EC≤239。一般在設(shè)置 x 坐標(biāo)的時(shí)候,我們只需要帶 2個(gè)參數(shù)即可,也就是設(shè)置 SC 即可,因?yàn)槿绻?EC 沒有變化,我們只需要設(shè)置一次即可,從而提高速度。

0X2B 指令,該指令是頁地址設(shè)置指令,在從左到右,從上到下的掃描方式(默認(rèn))下面,該指令用于設(shè)置縱坐標(biāo)( y 坐標(biāo))。

pYYBAGKTg4CAbijiAAEAMnPAyGo118.png#pic_center
/*設(shè)置光標(biāo)*/
static void LCD_SetCursor(u16 x,u16 y)
{
	LcdWriteReg(0x2A);//設(shè)置x坐標(biāo)
	LcdWriteData(x>>8);
	LcdWriteData(x&0xff);
	LcdWriteReg(0x2B);//設(shè)置y坐標(biāo)
	LcdWriteData(y>>8);
	LcdWriteData(y&0xff);	
}

(3)寫入數(shù)據(jù)到GRAM指令0x2C
??該指令是寫 GRAM 指令,在發(fā)送該指令之后,我們便可以往 LCD 的 GRAM 里面寫入顏色數(shù)據(jù)了,該指令支持連續(xù)寫 (地址自動(dòng)遞增)。

在這里插入圖片描述
/*清屏函數(shù)*/
void LCD_Clear(u16 c)
{
	u32 i=0;
	LCD_SetCursor(0,0);//設(shè)置光標(biāo)
	LcdWriteReg(0x2c);//開始寫數(shù)據(jù)到GRAM
	for(i=0;i<320*480;i++)
	{
		LcdWriteData(c);
	}
}

(4)顯示圖片
??通過圖片取模工具Img2Lcd進(jìn)行圖片取模:

pYYBAGKTgmaAVCkfAA6BaLQRpTU001.png

?將生成的圖片數(shù)據(jù)放到工程中:

pYYBAGKTgn6ARXRDAAGzVgrNpdA198.png
/*lcd圖片顯示*/
void LCD_DrawBMP(u16 x,u16 y,u16 w,u16 h,const u8 *buff)
{
	u16 i,j;
	u16 temp;
	LcdWriteReg(0x2A);//設(shè)置x坐標(biāo)
	//設(shè)置x的起始坐標(biāo)
	LcdWriteData(x>>8);
	LcdWriteData(x&0xff);
	//設(shè)置x的結(jié)束坐標(biāo)
	LcdWriteData((x+w)>>8);
	LcdWriteData((x+w)&0xff);
	LcdWriteReg(0x2B);//設(shè)置y坐標(biāo)
	//設(shè)置y的起始坐標(biāo)
	LcdWriteData(y>>8);
	LcdWriteData(y&0xff);		
	//設(shè)置y的結(jié)束坐標(biāo)
	LcdWriteData((y+h)>>8);
	LcdWriteData((y+h)&0xff);		
	LcdWriteReg(0x2c);//開始寫數(shù)據(jù)到GRAM
	for(i=0;i>8);
	LcdWriteData(0);
	//設(shè)置x的結(jié)束坐標(biāo)
	LcdWriteData(320>>8);
	LcdWriteData(320&0xff);
	LcdWriteReg(0x2B);//設(shè)置y坐標(biāo)
	//設(shè)置y的起始坐標(biāo)
	LcdWriteData(0>>8);
	LcdWriteData(0);		
	//設(shè)置y的結(jié)束坐標(biāo)
	LcdWriteData(480>>8);
	LcdWriteData(480&0xff);			
}
;i++)>

(5)漢字顯示

pYYBAGKTgvmAc3SNAARpDWfFFAc215.png

??通過PCtoLCD2002進(jìn)行漢字取模,取模方式:高位在前,逐行式。

/*
漢字取模方式:逐列式,高位在前,高度需保證為8個(gè)倍數(shù)
*/
void LCD_Display_Font(u16 x,u16 y,u8 size,u8 *font,u16 c)
{	
	u16 i,j;
	u8 temp;
	u16 x0=x;
	for(i=0;i*size>

6 示例效果

poYBAGKTgyOAF_sRAAKWKfmZF2Q710.pngpYYBAGKTgzmAGlBdAAkpTGHcwrI665.png

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

    關(guān)注

    34

    文章

    4480

    瀏覽量

    170135
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7613

    瀏覽量

    165915
  • STM32
    +關(guān)注

    關(guān)注

    2283

    文章

    10986

    瀏覽量

    361307
  • FSMC
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    38470
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32接口中FSMC/FMC難點(diǎn)問題理解

    FSMC,即靈活靜態(tài)存儲(chǔ)控制器,能夠與同步或異步存儲(chǔ)器和 16 位 PC
    的頭像 發(fā)表于 04-19 12:36 ?1.7w次閱讀
    <b class='flag-5'>STM32</b>接口中<b class='flag-5'>FSMC</b>/FMC難點(diǎn)問題理解

    STM32FSMC外設(shè)簡介

    Flexible static memory controller(FSMC)靈活靜態(tài)存儲(chǔ)控制器。FS
    的頭像 發(fā)表于 07-11 16:07 ?2150次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>FSMC</b>外設(shè)簡介

    存儲(chǔ)控制器FSMC與觸摸屏介紹

    FSMC(Flexible Static Memory Controller,靈活靜態(tài)存儲(chǔ)控制器)是S
    發(fā)表于 07-27 17:23 ?5034次閱讀
    <b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>控制器</b><b class='flag-5'>FSMC</b>與觸摸屏介紹

    什么是FSMC?FSMC的作用

    一、FSMC模塊1、什么是FSMCFSMC(Flexible Static Memory Controller):靈活靜態(tài)存儲(chǔ)控制器,能夠
    發(fā)表于 07-28 06:13

    STM32FSMC詳解

    FSMC詳解1、FSMC簡介:FSMC,即靈活靜態(tài)存儲(chǔ)控制
    發(fā)表于 12-06 06:25

    【技術(shù)精選】嵌入式STM32原創(chuàng)征文活動(dòng)精選文章

    網(wǎng)絡(luò)協(xié)議棧移植步驟與方案STM32CubeMX定時(shí)PWM輸出STM32CubeMxSD卡驅(qū)動(dòng)STM
    發(fā)表于 07-27 18:26

    STM32F2靈活靜態(tài)存儲(chǔ)控制器FSMC

    FSMC特性簡介和FSMC框圖外掛存儲(chǔ)器地址映射 AHB接口 NOR/PSRAM控制器 接口信號(hào) 支持的存儲(chǔ)器和訪問方式異步傳輸 同步突發(fā)傳
    發(fā)表于 09-13 06:54

    STM32FSMC機(jī)制FlaSh存儲(chǔ)器擴(kuò)展

    STM32FSMC機(jī)制FlaSh存儲(chǔ)器擴(kuò)展  引 言   STM32是ST(意法半導(dǎo)體)公司推出的基于ARM內(nèi)核Cortex-M3的32位微控制器系列。Cortex-M3內(nèi)核是為
    發(fā)表于 11-27 10:07 ?1574次閱讀
    <b class='flag-5'>STM32FSMC</b>機(jī)制FlaSh<b class='flag-5'>存儲(chǔ)器</b>擴(kuò)展

    F2產(chǎn)品技術(shù)培訓(xùn)_13.外部靜態(tài)存儲(chǔ)器控制器FSMC

    F2產(chǎn)品技術(shù)培訓(xùn)_13.外部靜態(tài)存儲(chǔ)器控制器FSMC
    發(fā)表于 03-15 14:41 ?11次下載

    STM32系列微控制器新型存儲(chǔ)器擴(kuò)展技術(shù)--FSMC有什么優(yōu)點(diǎn)?

    Flash控制器管理第1個(gè)BANK,NAND/PC Card控制器管理第2~4個(gè)BANK。由于兩個(gè)控制器管理的存儲(chǔ)器類型不同,擴(kuò)展時(shí)應(yīng)根據(jù)選用的
    發(fā)表于 07-19 07:20 ?3124次閱讀
    <b class='flag-5'>STM32</b>系列微<b class='flag-5'>控制器</b>新型<b class='flag-5'>存儲(chǔ)器</b>擴(kuò)展技術(shù)--<b class='flag-5'>FSMC</b>有什么優(yōu)點(diǎn)?

    基于FPGA和STM32FSMC通信

    FSMC簡介:FSMC靈活靜態(tài)存儲(chǔ)控制器,FSMC
    發(fā)表于 07-28 09:35 ?1.2w次閱讀

    STM32F10xxx FSMC外圍設(shè)備驅(qū)動(dòng)外部存儲(chǔ)器的數(shù)據(jù)和使用手冊(cè)免費(fèi)下載

    本申請(qǐng)說明描述了如何使用高密度STM32F10xxx FSMC(柔性靜態(tài)存儲(chǔ)器控制器)外圍設(shè)備來驅(qū)動(dòng)一組外部
    發(fā)表于 12-27 16:03 ?29次下載
    <b class='flag-5'>STM32</b>F10xxx <b class='flag-5'>FSMC</b>外圍設(shè)備驅(qū)動(dòng)外部<b class='flag-5'>存儲(chǔ)器</b>的數(shù)據(jù)和使用手冊(cè)免費(fèi)下載

    嵌入式單片機(jī)基礎(chǔ)篇(二十)FSMC

    FSMC詳解1、FSMC簡介:FSMC,即靈活靜態(tài)存儲(chǔ)控制
    發(fā)表于 11-23 18:21 ?17次下載
    嵌入式單片機(jī)基礎(chǔ)篇(二十)<b class='flag-5'>之</b><b class='flag-5'>FSMC</b>

    STM32學(xué)習(xí)STM32cubeMX軟件安裝與使用(附STM32cubeMX5.2.1下載地址)

    STM32學(xué)習(xí)STM32cubeMX軟件安裝與使用(附STM32cubeMX5.2.1下載地址)
    發(fā)表于 12-07 11:51 ?28次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)<b class='flag-5'>之</b><b class='flag-5'>STM32cubeMX</b>軟件安裝與使用(附<b class='flag-5'>STM32cubeMX</b>5.2.1下載地址)

    為什么可以利用FSMC來使用外部RAM

    為什么可以利用FSMC來使用外部RAM呢,首先了解一下STM32里的FSMC。大容量且引腳數(shù)在100腳以上的STM32F103芯片都帶有FSMC
    發(fā)表于 04-28 16:22 ?2092次閱讀