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





