我們(men) 先普及一個(ge) 概念,單片機(即Microcontroller Unit;MCU) 裏麵有什麽(me) 。一個(ge) 人最重要的是大腦,身體(ti) 的各個(ge) 部分都在大腦的指揮下工作。MCU跟人體(ti) 很像,簡單來說是由一個(ge) 最重要的內(nei) 核加其他外設組成,內(nei) 核就相當於(yu) 人的大腦,外設就如人體(ti) 的各個(ge) 功能器官。下麵我們(men) 來簡單介紹下51單片機和STM32單片機的結構。
1. 51係統結構
51係統結構框圖
我們(men) 說的51一般是指51係列的單片機,型號有很多,常見的有STC89C51、AT89S51,其中國內(nei) 用的最多的是STC89C51/2,下麵我們(men) 就以STC89C51來講解,並以51簡稱。
1. 內(nei) 核
51內(nei) 核是上個(ge) 世紀70年代Intel公司設計的,速度隻有12M,外設是IC廠商(STC)在內(nei) 核的基礎上添加的,不同的IC廠商會(hui) 在內(nei) 核上添加不同的外設,從(cong) 而設計出各具特色的單片機。這裏Intel屬於(yu) IP核廠商,STC屬於(yu) IC廠商。我們(men) 後麵要講的STM32也一樣,ARM屬於(yu) IP核廠商,ARM給ST授權,ST公司在Cortex-M3內(nei) 核的基礎上設計出STM32單片機。
2. 外設
我們(men) 在學習(xi) 51的時候,關(guan) 於(yu) 內(nei) 核部分接觸的比較少,使用的最多的是片上外設,我們(men) 在編程的時候操作的也就是這些外設。
編程的時候操作的寄存器位於(yu) SFR和RAM這個(ge) 部分,其中SFR(特殊功能寄存器)占有 128字節(實際上隻用了 26 個(ge) 字節,隻有 26 個(ge) 寄存器,其他都屬於(yu) 保留區),RAM占有 128 字節,我們(men) 在程序中定義(yi) 的變量就是放在RAM中。其中SFR和RAM在地址上是重合的,都是在80~FF地址區間,但在物理區間上是分開的,所以51的RAM是有256個(ge) 字節。
編寫(xie) 好的程序是燒寫(xie) 到ROM區。剩下的外設都是我們(men) 非常熟悉的IO口,串口、定時器、中斷這幾個(ge) 外設。
2. STM32係統結構
STM32係統結構框圖
1. 內(nei) 核
在係統結構上,STM32和51都屬於(yu) 單片機,都是由內(nei) 核和片上外設組成。隻是STM32使用的Cortex-M3內(nei) 核比51複雜得多,優(you) 秀得多,支持的外設也比51多得多,同時總線寬度也上升到32bit,無論速度、功耗、外設都強於(yu) 51。
從(cong) 結構框圖上看,對比51內(nei) 核隻有一種總線,取指和取數共用。Cortex-M3內(nei) 部有若幹個(ge) 總線接口,以使CM3能同時取址和訪內(nei) (訪問內(nei) 存),它們(men) 是:
指令存儲(chu) 區總線(兩(liang) 條)、係統總線、私有外設總線。有兩(liang) 條代碼存儲(chu) 區總線負責對代碼存儲(chu) 區(即FLASH外設)的訪問,分別是I-Code總線和D-Code總線。
I-Code用於(yu) 取指,D-Code用於(yu) 查表等操作,它們(men) 按最佳執行速度進行優(you) 化。
係統總線(System)用於(yu) 訪問內(nei) 存和外設,覆蓋的區域包括SRAM,片上外設,片外RAM,片外擴展設備,以及係統級存儲(chu) 區的部分空間。
私有外設總線負責一部分私有外設的訪問,主要就是訪問調試組件。它們(men) 也在係統級存儲(chu) 區。
還有一個(ge) DMA總線,從(cong) 字麵上看,DMA是data memory access的意思,是一種連接內(nei) 核和外設的橋梁,它可以訪問外設、內(nei) 存,傳(chuan) 輸不受CPU的控製,並且是雙向通信。簡而言之,這個(ge) 家夥(huo) 就是一個(ge) 速度很快的且不受老大控製的數據搬運工,這個(ge) 在51裏麵是沒有的。
2. 外設
從(cong) 結構框圖上看, STM32比51的外設多得多,51有的串口、定時器、IO口等外設 STM32 都有。STM32還多了很多特色外設:如FSMC、SDIO、SPI、I2C等,這些外設按照速度的不同,分別掛載到AHB、APB2、APB1這三條總線上。