今天打算繼續(xù)總結(jié)stm32單片機(jī)的基礎(chǔ)知識(shí),鞏固基礎(chǔ)。這里呢,聲明一下,《stm32單片機(jī)基礎(chǔ)知識(shí)總結(jié)》主要基于stm32f1及stm32f4兩個(gè)系列來(lái)做的。原因是stm32f1系列是Cortex-M3內(nèi)核 ,stm32f4系列是基于Cortex-M4內(nèi)核。我在項(xiàng)目開(kāi)發(fā)中,主要用到了這兩個(gè)系列的片子,所以算是對(duì)自己知識(shí)的一個(gè)鞏固。另外,知識(shí)都是相通的。所以如果理解了這兩種架構(gòu),那么如果需要的話,我們也能夠快速地去學(xué)習(xí)其他的系統(tǒng)架構(gòu)。
一、STM32單片機(jī)架構(gòu)
通過(guò)兩張圖片來(lái)對(duì)Cortex-M3 和Cortex-M4兩個(gè)內(nèi)核資源進(jìn)行一個(gè)對(duì)比。
?
通過(guò)對(duì)此,我們可以看到有這樣幾個(gè)不同之處:
M4具有單精度浮點(diǎn)運(yùn)算單元,F(xiàn)1沒(méi)有浮點(diǎn)運(yùn)算單元。
M4具備增強(qiáng)的DSP指令集。
然后其他共有的模塊如下:
內(nèi)核系統(tǒng)模塊
nested vectored interrupt controller
嵌套向量中斷控制器
wake up interrupt controller interface
喚醒中斷控制器接口
DSP:數(shù)字信號(hào)處理單元,
FPU:浮點(diǎn)運(yùn)算器
Memory Interface Unit(MPU):存儲(chǔ)器保護(hù)單元
它可以實(shí)施對(duì)存儲(chǔ)器(主要是內(nèi)存和外設(shè)寄存器)的保護(hù),以使軟件更加健壯和可靠。在使用前,必須根據(jù)需要對(duì)其編程。如果沒(méi)有啟用MPU,則等同于系統(tǒng)中沒(méi)有配MPU。
MPU有如下的能力可以提高系統(tǒng)的可靠性:
阻止用戶應(yīng)用程序破壞操作系統(tǒng)使用的數(shù)據(jù)。
阻止一個(gè)任務(wù)訪問(wèn)其它任務(wù)的數(shù)據(jù)區(qū),從而把任務(wù)隔開(kāi)。
可以把關(guān)鍵數(shù)據(jù)區(qū)設(shè)置為只讀,從根本上消除了被破壞的可能。
檢測(cè)意外的存儲(chǔ)訪問(wèn),如,堆棧溢出,數(shù)組越界。
此外,還可以通過(guò)MPU設(shè)置存儲(chǔ)器regions的其它訪問(wèn)屬性,比如,是否緩區(qū),是否緩沖等。
SRAM &Peripheral interface:SRAM&外設(shè)接口
Bus Matrix:總線矩陣用于多主(Core,DMA等),多從(內(nèi)部RAM,APB,外部總線等)的交聯(lián)和仲裁。目的是為了提高不同主機(jī)訪問(wèn)不同外設(shè)情況下的帶寬。
跟蹤調(diào)試系統(tǒng)
Data Watchpoint:
用于實(shí)時(shí)變量監(jiān)控,可用于定期輸出PC或各種CPU內(nèi)部計(jì)數(shù)器,從目標(biāo)獲取分析信息。
Flash Patch &BreakPoint:轉(zhuǎn)換及斷電單元
ITM Trace:
指令跟蹤宏單元,一種針對(duì)MCU進(jìn)行跟蹤調(diào)試的新方法,與打斷點(diǎn)(Breakpoint)不同,ITM方法不需要暫停程序運(yùn)行,可以在程序全速運(yùn)行的過(guò)程中實(shí)時(shí)輸出變量的數(shù)值以便觀察,即Trace功能
ETM Trace:集成跟蹤選項(xiàng)
Debug Access Port:調(diào)試端口
Serial Wire Viewer ,Trace port :串行線查看器,跟蹤端口
以上把所有的模塊都簡(jiǎn)單翻譯了一下,個(gè)別的稍加闡述。篇幅原因就不再進(jìn)行深入了。感興趣的朋友可以網(wǎng)上再查一查資料。我這里當(dāng)是拋磚引玉了。
針對(duì)stm32f1與stm32f4,兩個(gè)片子的框架,再進(jìn)行一個(gè)簡(jiǎn)單總結(jié)。整個(gè)這些知識(shí)內(nèi)容都是一些基礎(chǔ)的東西,可能很多東西不懂也能夠把代碼寫(xiě)出來(lái),調(diào)試也能通過(guò)。入門(mén)的話,也可以了。我個(gè)人覺(jué)得想走更遠(yuǎn),應(yīng)該知其然也知其所以然。雖然我水平一般,需要學(xué)習(xí)實(shí)踐的地方有很多。但從多年的工作經(jīng)歷來(lái)說(shuō),我覺(jué)得做到大而廣不難,做到大而廣還要細(xì)就是很考驗(yàn)人的了。
下面兩張Block diagram 是我從ST官方文檔上面截下來(lái)的。第一張是STM32f103。第二張是STM32F40x。STM32f103是基于Cortex-M3架構(gòu)。STM32f40x是基于Cortex-M4架構(gòu)。很明顯STM32f40x芯片的內(nèi)核所掛載的資源相當(dāng)于STM32f103芯片所掛載的資源要豐富很多。
stm32f103內(nèi)部架構(gòu)圖?
stm32f40x架構(gòu)圖
從上面兩張架構(gòu)圖中,我們可以讀出很多信息。
1)stm32f1主頻最高是72MHZ.stm32f4主頻最高是168MHZ,且集成了FPU功能。
2)F1內(nèi)部SRAM最大64K字節(jié), F4內(nèi)部SRAM有192K字節(jié)(112K+64K+16K)。
3)四個(gè)主動(dòng)單元 :
M3內(nèi)核的ICode總線(I-bus)、DCode總線(D-bus)、 系統(tǒng)總線(S-bus)、DMA(DMA1、DMA2、以太網(wǎng)DMA)
ICode總線 :
將M3內(nèi)核的指令總線與FLASH指令接口相連,用于指令預(yù)取
DCode總線:
將M3內(nèi)核的數(shù)據(jù)總線與FLASH數(shù)據(jù)接口相連,常量加載和調(diào)試
系統(tǒng)總線 :
將M3內(nèi)核的系統(tǒng)總線與總線矩陣相連,協(xié)調(diào)內(nèi)核與DMA訪問(wèn)
DMA總線:
將DMA的AHB主控接口與總線矩陣相連,協(xié)調(diào)CPU的DCode和DMA到SRAM、閃存、外設(shè)的訪問(wèn)
4)四個(gè)被動(dòng)單元 :
內(nèi)部SRAM、內(nèi)部閃存、FSMC、AHB到APB橋
AHB橋:
AHB(Advanced High performance Bus),高性能總線。主要用于高性能模塊(如CPU、DMA和DSP等)AHB 系統(tǒng)由主模塊、從模塊和基礎(chǔ)結(jié)構(gòu)(Infrastructure)3部分組成,整個(gè)AHB總線上的傳輸都由主模塊發(fā)出,由從模塊負(fù)責(zé)回應(yīng)。
APB橋:
APB(Advanced Peripheral Bus),片上外設(shè)總線。主要用于慢速片上外設(shè)與ARM核的通訊。
例如UART、1284等,它的總線架構(gòu)不像 AHB支持多個(gè)主模塊,在APB里面唯一的主模塊就是APB 橋。再往下,APB2負(fù)責(zé)AD,I/O,高級(jí)TIM,串口1;APB1負(fù)責(zé)DA,USB,SPI,I2C,CAN,串口2345,普通TIM。
cortex-M3、cortex-M4內(nèi)核是由ARM公司提供的。芯片其余外圍是由ST公司設(shè)計(jì)完成的。
篇幅有限,很多要點(diǎn)的內(nèi)容也需要時(shí)間的沉淀。后續(xù)的工作學(xué)習(xí)中,再對(duì)這些知識(shí)點(diǎn)做補(bǔ)充優(yōu)化。
評(píng)論
查看更多