單片機中都有FLASH還需要EEROM嗎?
單片機中有FLASH為啥還需要EEROM?
///插播一條:我自己在今年年初錄制了一套還比較系統(tǒng)的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領取哦。最近比較閑,帶做畢設,帶學生參加省級或以上比賽///
既然打算學,基礎的東西元件的得知道是什么,這樣寫代碼的時候才能知道自己在干什么!
ROM和Flash斷電后都能儲存數(shù)據(jù),RAM則不能
其實閃存(flash)是ROM的一種它的全名---FLASH EEPROM
EEPROM---電可擦除可編程只讀存儲器
Flash
Flash是?種?易失性存儲器,即斷電之后數(shù)據(jù)也不會丟失,這個存儲器的特點是不能以字節(jié)的方式擦除信息,它按扇區(qū)(block)操作
32的芯片有些參數(shù)說 Flash的大小256k,64k,512k,它可以用于存儲代碼,也可以用于存儲數(shù)據(jù)。
我們編譯好的程序就放在這個地方。內(nèi)核通過 ICode總線來取里面的指令。
也存放常量 const修飾的
SRAM
靜態(tài)隨機存取存儲器(SRAM)是隨機存取存儲器的?種。所謂的“靜態(tài)”,是指這種存儲器只要保持通電,??儲存的數(shù)據(jù)就可以恒常保持。
相對之下,動態(tài)隨機存取存儲器(DRAM)??所儲存的數(shù)據(jù)就需要周期性地更新
程序的變量,堆棧等的開銷都是基于內(nèi)部的SRAM。內(nèi)核通過DCode總線來訪問它。
單片機中有FLASH為啥還需要EEROM?
flash可以一個字節(jié)一個字節(jié)寫,但是刪除的話,得一整個扇區(qū)刪除。
目前常見的flash一個扇區(qū)是4k的大小。如果你只要刪改一個哪怕一個字節(jié)的數(shù)據(jù)。都要先把flash的至少一個扇區(qū)的數(shù)據(jù)讀到ram里。然后修改。改好了后再把這個扇區(qū)的數(shù)據(jù)再存回去。如果只是小數(shù)據(jù)量的修改。則這樣一折騰,操作復雜。而且mega328才2k的RAM。存不下一個扇區(qū)的數(shù)據(jù)。所以內(nèi)置了EEPROM,可以按字節(jié)刪改。
stm32 F10xxx系統(tǒng)結(jié)構(gòu),圖下面是每個名詞的介紹,結(jié)合著看
系統(tǒng)構(gòu)架
●四個驅(qū)動單元:
.CortexTM-M3內(nèi)核DCode總線(D-bus)和系統(tǒng)總線(S-bus)
.通用DMA1和通用DMA2
●四個被動單元
.內(nèi)部SRAM
.內(nèi)部閃存存儲器
.FSMC
.AHB到APB的橋(AHB2APBx),它連接所有的APB設備
我們可以把驅(qū)動單元理解成是CPU部分,被動單元都理解成外設。下面我們簡單介紹下驅(qū)動單元和被動單元的各個部件
這些都是通過一個多級的AHB總線構(gòu)架相互連接的,如下圖所示:
從AHB總線延伸出來的兩條(APB1和APB2)總線,上面掛載著STM32各種各樣的特色外設。我們經(jīng)常說的GPIO、串口、I2C、SPI這些外設就掛載在這兩條總線上,這個是我們學習STM32的重點,就是要學會編程這些外設去驅(qū)動外部的各種設備。
ICode總線
該總線將CortexTM-M3內(nèi)核的指令總線與閃存指令接口相連接。指令預取在此總線上完成。
ICode中的I表示Instruction,即指令。程序編譯之后生成的二進制文件都是一條條指令,燒錄后寄存在FLASH中,內(nèi)核要讀取這些指令來執(zhí)行程序就必需通過ICode總線,它簡直每時每刻都須要被使用,它是專門用來取指的。
由上圖也可看出ICode連接M3內(nèi)核與Flash接口
DCode總線
該總線將CortexTM-M3內(nèi)核的DCode總線與閃存存儲器的數(shù)據(jù)接口相連接(常量加載和調(diào)試訪
問)。
DCode中的D表示Data,即數(shù)據(jù),那說明這條總線是用來取數(shù)的。我們在寫程序的時候,數(shù)據(jù)有常量和變量兩種,常量就是固定不變的,用C語言中的const關鍵字修飾,是放到內(nèi)部的FLASH?當中的,變量是可變的,不管是全局變量還是局部變量都放在內(nèi)部的SRAM。由于數(shù)據(jù)能夠被Dcode總線和DMA總線訪問,所以為了避免訪問沖突,在取數(shù)的時候須要經(jīng)過一個總線矩陣來仲裁,決定哪個總線在取數(shù)。
系統(tǒng)總線
此總線連接CortexTM-M3內(nèi)核的系統(tǒng)總線(外設總線)到總線矩陣,總線矩陣協(xié)調(diào)著內(nèi)核和DMA間
的訪問。
DMA總線
此總線將 DMA的AHB主控接口與總線矩陣相聯(lián) ,總線矩陣協(xié)調(diào)著 CPU的 DCode和 DMA到SRAM、閃存和外設的訪問。
總線矩陣
總線矩陣協(xié)調(diào)內(nèi)核系統(tǒng)總線和DMA主控總線之間的訪問仲裁,仲裁利用輪換算法。在互聯(lián)型產(chǎn)品中,總線矩陣包含5個驅(qū)動部件(CPU的DCode、系統(tǒng)總線、以太網(wǎng)DMA、DMA1總線和DMA2總線)和3個從部件(閃存存儲器接口(FLITF)、SRAM和AHB2APB橋)。在其它產(chǎn)品中總線矩陣包含4個驅(qū)動部件(CPU的DCode、系統(tǒng)總線、DMA1總線和DMA2總線)和4個被動部件(閃存存儲器接口(FLITF)、SRAM、FSMC和AHB2APB橋)。
AHB外設通過總線矩陣與系統(tǒng)總線相連,允許DMA訪問。
首先,說點不靠譜的,APB和AHB總線,我個人感覺這個類似于個人PC系統(tǒng)里的北橋和南橋總線。
南橋總線上掛接的都是鼠標、鍵盤這些慢速的設備,北橋上掛接顯卡等高速設備。南橋頻次低,北橋頻次高。另外,南橋最后也要接到北橋上。
這些感覺都類似于APB和AHB。
一定要看圖,比照著看!
從AHB總線延伸出來的兩條(APB1和APB2)總線,上面掛載著STM32各種各樣的特色外設。我們經(jīng)常說的GPIO、串口、I2C、SPI這些外設就掛載在這兩條總線上,這個