看穿單片機(jī)第四節(jié):外設(shè)模型
外設(shè)模型
我們已經(jīng)知道了CPU如何通過總線進(jìn)行存儲器的讀寫,也知道地址總線的寬度決定了CPU的尋址空間,數(shù)據(jù)總線的寬度則決定了CPU的位數(shù)(單次能夠讀寫的數(shù)據(jù)量),而控制總線在一定程度上影響了訪存的速度(WR與RD為0的時間越短,訪存速度越快,當(dāng)然也要存儲器速度跟得上才行)。有了CPU和存儲器,以及連接它們的總線,這就足以構(gòu)成一個完整的、可正常運行的計算機(jī)系統(tǒng)。我們可以把一些算法放在其中來運行,但是單片機(jī)(嵌入式處理器)并不僅僅只是用來作計算的,它更大的作用在于控制(所以單片機(jī)的英文縮寫是MCU,即Micro Controller Unit,微控制單元)。IO是最直接、最常用的控制接口,我們可以將它置1或清0來輸出高電平或低電平,從而實現(xiàn)對外部電路或機(jī)構(gòu)的控制。
對前面振南的困惑從更基礎(chǔ)的層面進(jìn)行解釋:C語言是如何實現(xiàn)對物理世界產(chǎn)生影響的?
在圖1.6中,以CPU為核心,周邊除了存儲器(RAM與ROM)之外,還有很多控制器,比如IO控制器、串口控制器等等,這些就是所謂的“CPU外設(shè)”。外設(shè)其實就是一些電路,它用于實現(xiàn)某一特定的功能。這些電路肯定要受CPU的控制,因此在電路設(shè)計上留出了專門的接口(寄存器)。這個接口的讀寫是符合CPU總線時序的,所以它可以直接掛接在CPU總線上,與存儲器、其它外設(shè)并存(但是分屬于不同的地址區(qū)間,CPU向這些地址讀寫數(shù)據(jù)將對應(yīng)于外設(shè)電路的不同功能)。更形象的說明請看圖1.17。
圖1.17 CPU外設(shè)的結(jié)構(gòu)模型
很明顯,CPU的整個尋址空間(它的大小由地址總線寬度決定)并不都是由存儲器獨占的。存儲器只是占用其中的某一段而已,其它的地址空間一部分分配給各個外設(shè),而更多的可能只是空閑保留。有人可能會問:“既然這樣,那我們完全可以把自己作的電路接到CPU的總線上,為CPU擴(kuò)展外設(shè)?!睕]錯,只要CPU芯片把總線通過外部的引腳開放出來,我們就可以掛接自己的電路,讓CPU直接去訪問控制,比如掛接一個8080接口的液晶屏等。(51的xdata、STM32的FMC都是CPU內(nèi)核將總線對外開放的實例,在后面大家會看到一些單片機(jī)外部總線巧妙的應(yīng)用實例)。