發(fā)布時間:2021-09-03 16:36:47來源:轉(zhuǎn)載
做嵌入式系統(tǒng)開發(fā),經(jīng)常要接觸硬件。做嵌入式開發(fā)對數(shù)字電路和模擬電路要有一定的了解。這樣才能深入的研究下去。下面我們簡單的介紹嵌入式開發(fā)中的一些硬件相關的概念。為讀者學習嵌入式知識出一份力。
片選(CS或EN)
片選信號對于外設芯片來講,就是一個(也是一根)通知信號,告訴芯片“嘿,請開門,我要放些東西進來,或是拿些東西走”,這里的東西只能是數(shù)據(jù),不可能是玉米棒什么的。那有個問題,這個信號源從哪里來呢?顯然,只能從處理器來。那是不是也是像總線那樣,每一個芯片都共用一根線連在一起呢?
如果這樣,可能處理器“一叫開門”所有的芯片都將“門”打開了。如果是處理器寫數(shù)據(jù),那可能所有的芯片都被寫入同樣的數(shù)據(jù)。而取數(shù)據(jù)時,每個外設芯片都向外“扔”數(shù)據(jù),這一定會造成數(shù)據(jù)總線沖突,因為有的芯片向總線上“扔”1,有的則“扔”0,這種情況下處理器一定會“發(fā)瘋”的,因為它不知道應當?shù)玫?還是0。
即然這樣,那顯然不能將所有的片選信號連在一起了,只能是各芯片的片選信號獨立。前面提到了地址總線,我們是采用一根地址線連一個外設芯片呢?還是采用其它的方法。如果采用一根地址線連一個外設芯片,那可能較多只能掛接32個芯片了,這顯然不行。
其實,在現(xiàn)實中,是采用32位的數(shù)字來表示一個外設芯片的地址的,比如1可以表示芯片A,而6534可以表示另外一個芯片B,等等。由此看來,理論上我們可以表示2的32次方(4294967296)個設備,之所以說理論上,是因為有的設備要占用大量的地址。即然這樣,那還有一個問題,如果將32位的地址總線轉(zhuǎn)換成芯片的一根片選信號呢?這需要引入譯碼(器)的概念。
譯碼(器)
譯碼器將一個數(shù)據(jù)轉(zhuǎn)換成一根信號線上的信號,比如3/8譯碼器,可以將一個位寬是3位的數(shù)據(jù)轉(zhuǎn)換成8根(2的3次方)完全獨立的信號線,當向數(shù)據(jù)側(cè)寫入二進制的011時,對應的是8根線的第3根,當輸入二進制的111時,對應的是8根線中的較后一根。有了譯碼器,處理器的地址線就簡化了,只要32根地址線加上外面的譯碼器,就可以訪問大量的外設芯片了。外部設備的選擇問題,我們已經(jīng)解決了,現(xiàn)在還得回頭看一看數(shù)據(jù)總線。
在嵌入式系統(tǒng)中,所有芯片的數(shù)據(jù)總線可以理解成是直接相連的。之所以用了“可以理解”一詞,是因為為了提高總線的負載能力,其中會加入總線驅(qū)動器。為了理解,我們看一看我們生活中的自來水,比如,在北京理論上可能所有的水管是連在一起的,但中間可能為了提高水壓,存在很多小的水站用來增加供水壓力,而不可能全北京所有的自來水自接來自一個水廠。
即然所有的數(shù)據(jù)總線是連在一起的,那就可能會有問題。當向外部設備寫數(shù)據(jù)時,處理器先向地址總線輸送目標外設的地址,地址譯碼器將其轉(zhuǎn)換成一根信號的片選信號送到了目標外設,目標外設收到這一信號后,將“門”打開。接下來處理器將要傳送到外設的數(shù)據(jù)往數(shù)據(jù)總線上一放,由于只有目標外設芯片打開了“門”,所以數(shù)據(jù)只會進入到目標外設,而其它的外設什么也不會收到。很好!處理器向外寫數(shù)據(jù)應當沒有問題,我們接下來看一看讀。
讀的話,由于數(shù)據(jù)是從外設輸送到處理器的,盡管我們采用和寫一樣的方法打開目標外設的“門”,但此時,其它的外設也在數(shù)據(jù)總線上,它們有可能處于1也可能處于0,是不是會影響處理器讀取目標外設的數(shù)據(jù)呢?結(jié)果當然不會,但我們得引入另一個概念:高阻態(tài)。
高阻態(tài)
很顯然,當處理器從目標外設讀數(shù)據(jù)時,我們希望其它沒有被選上的芯片的數(shù)據(jù)總線不會對目標外設所要傳送的數(shù)據(jù)有影響,那怎么辦呢?實際上,當芯片沒有被選中時,其數(shù)據(jù)總線都處于高阻態(tài)。
所謂的高阻態(tài),我們可以理解成這一管腳在外設芯片內(nèi)部是斷開的,如此一來,顯然不會對處理器從目標外設讀取數(shù)據(jù)造成任何的影響了。我們說當一個芯片沒有被選中或是沒有被使能時,其數(shù)據(jù)總線一定是處于高阻態(tài)的。前面用了“門”的開和關來打比方,那“門”是指什么呢?是指外設的數(shù)據(jù)總線,片選信號的作用就是控制將外設的數(shù)據(jù)總線與處理器的數(shù)據(jù)總線相連或是斷開。
驅(qū)動
總線上的數(shù)據(jù)是誰放上去的我們就說誰是那一時刻的驅(qū)動者。也就是說,當處理器向外設寫數(shù)據(jù)時,它是在驅(qū)動數(shù)據(jù)總線的,而當處理器從目標外設讀取數(shù)據(jù)時,目標外設是在驅(qū)動數(shù)據(jù)總線的。對于地址總線,因為只可能從處理器向目標外設寫,所以地址總線永遠是由處理器驅(qū)動的。當一個芯片沒有被選中時,我們說它并不驅(qū)動數(shù)據(jù)總線。
更多培訓課程: 朝陽區(qū)嵌入式 更多學校信息: 北京朝陽豐寶恒大廈達內(nèi)IT教育培訓 咨詢電話: