关于STM32系统构架的一点见解
一.首先說說STM32F10x芯片由絲印所體現(xiàn)出的共同點(diǎn)和區(qū)別。?
先簡(jiǎn)單說說命名規(guī)則:?
101基本型,102USB基本型,103增強(qiáng)型,105或107互聯(lián)型。?
T:36腳,C:48腳,R:64腳,V:100腳,Z:144腳。?
C:256K SRAM, D:384K SRAM, E:512K SRAM。?
我們正對(duì)芯片的絲印,會(huì)看到芯片左下角會(huì)有一個(gè)小圓點(diǎn)(正方向),有的在右上角會(huì)有一個(gè)稍大點(diǎn)的圓圈標(biāo)記,靠近左下角小圓點(diǎn)的管腳號(hào)為1,然后以逆時(shí)針方向,ZET6最后一個(gè)管腳號(hào)為144,VET6最后一個(gè)管腳號(hào)為100,即是Z的管腳多于V的,說以說Z的功能也要多于V的;接下來說說絲印上的ARM和ST,crotex-Mx內(nèi)核是由ARM公司(就叫做IP廠商)設(shè)計(jì)的,一塊32除了內(nèi)核還必須有外圍電路,ST公司在獲得ARM內(nèi)核設(shè)計(jì)的授權(quán)后,據(jù)此設(shè)計(jì)出外圍電路(SOC廠商,像三星,蘋果,飛思卡爾。。。都是SOC廠商,其使用的內(nèi)核都是IP廠商授權(quán)的),比如說儲(chǔ)存程序的FLASH,儲(chǔ)存變量的SRAM,外設(shè)(GPIO,IIC,SPI,USTAR等等),小結(jié)一下32的芯片構(gòu)架是由內(nèi)核(驅(qū)動(dòng)單元)和外設(shè)(被動(dòng)單元)組成。
二.STM32F10xx 的系統(tǒng)框架的理解
(1)驅(qū)動(dòng)單元?
Icode總線:?
我們寫好的程序?qū)懞煤笸ㄟ^編譯都變成一條條指令存儲(chǔ)在外設(shè)的FLASH里面,內(nèi)核要讀取這些指令來執(zhí)行程序就必須通過Icode總線(專門用來取指)。
DCode總線與DMA總線:?
即為DATA,我們知道常量const 存放在內(nèi)部FLASH里面,而變量存在內(nèi)部SRAM里面。這些數(shù)據(jù)可以由DCode和DMA來讀取,為了避免兩者同時(shí)去讀取數(shù)據(jù)從而造成沖突,所以在兩者讀取數(shù)據(jù)的時(shí)候會(huì)有一個(gè)總線矩陣來裁定誰來讀取數(shù)據(jù)。
System總線:?
讀取數(shù)據(jù),最主要還是用來訪問外設(shè)的寄存器,即讀寫寄存器都是通過這條總線來完成的。
DMA總線:?
說先說這條總線也是主要傳輸數(shù)據(jù)的,這個(gè)數(shù)據(jù)可以是某個(gè)外設(shè)的數(shù)據(jù)寄存器,可以是SRAM,可以是內(nèi)部的FLASH?
?
我們以一個(gè)例子來說明DMA總線的作用,還有簡(jiǎn)單的區(qū)分一下DMA和DCode的區(qū)別,如果我們沒有DMA ,現(xiàn)在要從SRAM里讀取一個(gè)數(shù)據(jù)到內(nèi)部的外設(shè)數(shù)據(jù)寄存器DR,首先CPU通過DCode總線將數(shù)據(jù)從SRAM讀到CPU的內(nèi)部的通用寄存器里來暫存數(shù)據(jù),然后在通過DCode總線將數(shù)據(jù)傳到DR,這樣通過了CPU作為數(shù)據(jù)的中轉(zhuǎn)。但是我們現(xiàn)在有了DMA總線,只需要CPU發(fā)送命令就可以將SRAM里的數(shù)據(jù)直接發(fā)送到DR。
(2)被動(dòng)單元?
內(nèi)部FLASH:?
內(nèi)部閃存存儲(chǔ)器,我們編寫好的程序通過編譯后變成一條條指令存放在這里,Crotex-Mx通過ICode總線訪問內(nèi)部FLASH來取指。
內(nèi)部SRAM:?
Static Random Access Memory?
它是一種具有靜止存取功能的內(nèi)存,不需要刷新電路即能保存它內(nèi)部存儲(chǔ)的數(shù)據(jù)。不像DRAM(Dynamic Random Access Memory)那樣需要刷新電路,每隔一段時(shí)間,固定要對(duì)DRAM刷新充電一次,否則內(nèi)部的數(shù)據(jù)即會(huì)消失,因此SRAM具有較高的性能,但是SRAM也有它的缺點(diǎn),即它的集成度較低,相同容量的DRAM內(nèi)存可以設(shè)計(jì)為較小的體積,但是SRAM卻需要很大的體積,所以在主板上SRAM存儲(chǔ)器要占用一部分面積。?
當(dāng)然SRAM的優(yōu)點(diǎn)就是速度快,不必配合內(nèi)存刷新電路,可提高整體的工作效率.?
SRAM的缺點(diǎn)是集成度低,功耗較大,相同的容量體積較大,而且價(jià)格較高,所以少量用于關(guān)鍵性系統(tǒng)以提高效率。?
像程序的變量,堆棧等等的開銷都是基于內(nèi)部的SRAM,Crotex-Mx通過DCode總線來訪問它。
FSMC:?
Flexible Static Memory Controller?
可變靜態(tài)存儲(chǔ)控制器,這是STM32系列采用一種新型的存儲(chǔ)器擴(kuò)展技術(shù),由于通過對(duì)特殊功能寄存器的設(shè)置,FSMC能夠根據(jù)不同的外部存儲(chǔ)器類型,發(fā)出相應(yīng)的數(shù)據(jù)/地址/控制信號(hào)類型以匹配信號(hào)的速度,從而使得STM32系列微控制器不僅能夠應(yīng)用各種不同類型、不同速度的外部靜態(tài)存儲(chǔ)器,而且能夠在不增加外部器件的情況下同時(shí)擴(kuò)展多種不同類型的靜態(tài)存儲(chǔ)器,滿足系統(tǒng)設(shè)計(jì)對(duì)存儲(chǔ)容量、產(chǎn)品體積以及成本的綜合要求。?
強(qiáng)調(diào)一下,只能拓展靜態(tài)內(nèi)存。
STM32F10xx系統(tǒng)時(shí)鐘樹:?
?
先來說說5個(gè)時(shí)鐘源,如圖左邊部分:?
1.HSI是高速內(nèi)部時(shí)鐘,RC振蕩器頻率為16MHz,可以直接作為系統(tǒng)時(shí)鐘或經(jīng)過二分頻后用作PLL的輸入。?
2.HSE是高速外部時(shí)鐘,可接4~26MHz石英陶瓷諧振器或者接外部時(shí)鐘源,可以直接作為系統(tǒng)時(shí)鐘或經(jīng)過二分頻后用作PLL的輸入。?
3.LSE是低速外部時(shí)鐘,接32.768KHz石英晶體,主要是RTC時(shí)鐘源。?
4.LSI是低速內(nèi)部時(shí)鐘,RC振蕩器,32KHz左右,供獨(dú)立看門狗和自動(dòng)喚醒單元使用。?
5.PLL為鎖相環(huán)倍頻輸出
使用的系統(tǒng)時(shí)鐘是72 MHz,如圖左邊部分是選擇時(shí)鐘源內(nèi)部還是外部時(shí)鐘,右邊綠色的部分是針對(duì)于不同外設(shè) 對(duì)系統(tǒng)時(shí)鐘進(jìn)行不同的時(shí)鐘分頻。
?
?
小結(jié)一下,APB1操作速度限于36MHZ,APB2操作用于全速72MHZ。
APB1掛載低速外設(shè),APN2 AHB掛載高速外設(shè)。
以上時(shí)鐘輸出中AHB總線時(shí)鐘,內(nèi)核時(shí)鐘,各種APB1 APB2外設(shè)都帶使能控制,當(dāng)需要某個(gè)模塊時(shí),一定要先使能對(duì)應(yīng)的時(shí)鐘,通過RCC_AHBENR來打開外設(shè)時(shí)鐘,使能時(shí)鐘的方法會(huì)在后面貼出。
?
轉(zhuǎn)載于:https://www.cnblogs.com/mrgsf/p/6864297.html
總結(jié)
以上是生活随笔為你收集整理的关于STM32系统构架的一点见解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyEclipse设置选中单词其它同名单
- 下一篇: [bzoj4825]:[Hnoi2017