STM32的匯流排AMBA AHB APB

2021-07-24 14:30:25 字數 3015 閱讀 2619

一、匯流排的簡單介紹:

處理器無疑是計算機中最重要的部件,但並不是唯一的部件。一台計算機也需要隨機訪問儲存器(ram)來存放機器碼指令以便讓處理器執行。計算機還必須有一些方法使這些指令進入ram(輸入裝置)以及一些方法使程式執行結果得以看見(輸出裝置)。ram是易失性的,當斷電時,它的內容就會丟失。所以計算機中另乙個有用的部件是永久儲存裝置,當計算機斷電的時候,它們可以儲存**和資料。

組成一台完整計算機的所有積體電路必須安裝在電路板上。在一些小型機器上,所有的積體電路可以安裝在一塊板上,但更常見的是,不同的部件分開安裝在兩塊或更多的板上,這些板之間通過匯流排互相通訊。簡單地說,匯流排是提供給計算機中每塊電路板的數碼訊號的集合,這些訊號可以分為4類: •

位址訊號。這些訊號由微處理器提供,常用來定址 r a m單元,也可用來定址連線到計算機上的其他部件。

• 資料輸出訊號。也由微處理器提供,用來寫入資料到 r a m或其他裝置。要仔細推敲輸入( i n p u t)和輸出( o u t p u t)的含義。資料輸出訊號是從微處理器輸出,變成 r a m和其他裝置的資料輸入訊號。

• 資料輸入訊號。是由計算機的其餘部分提供,由微處理器讀入的訊號。資料輸入訊號通常來自於 r a m的輸出,也即表示微處理器讀入儲存器內容。但是其他部件也提供資料輸入訊號給處理器。

• 控制訊號。由各種各樣的訊號組成,通常與計算機的特定處理器的控制訊號一致。控制訊號可來自於微處理器或從其他部件傳送到微處理器。例如,微處理器可用乙個控制訊號來指示它要寫一些資料到某一儲存器位址。

另外,匯流排給計算機中的各個電路板提供電源。

二、stm32的匯流排amba、ahb、apb

前幾天看了看stm32主要的外設和電路設計,今天開始看stm32的程式設計了。

這裡我直接使用的是stm32的庫v3.5,懶得去看什麼暫存器

遇到的第乙個問題就是stm32的內部匯流排ahb和apb,這裡查了一些資料,記錄一下

amba(advanced microprocessor bus architecture)是arm公司提出的一種開放性的soc匯流排標準,現在已經廣泛的應用於risc的核心上了。 

amba定義了一種

多匯流排系統

(multilevel busing system),包括系統匯流排和等級稍低的外設匯流排。 

amba支援32位、64位、128位的資料匯流排,和32位的位址匯流排,同時支援byte和half-word設計。 

它定義了兩種匯流排: ahb(advanced high-performance bus)先進的高效能匯流排,也叫做asb(advanced system bus)。apb(advanced peripheral bus)先進的外設匯流排 

ahb和asb其實是乙個東西,是

高速匯流排

,主要負責嵌入式處理器、dma控制器、memory等等的介面。 

apb是

低速匯流排

,主要負責外設介面 

ahb和apb之間是通過bridge(橋接器)鏈結的 總所周知,乙個系統中的各個模組之間相互通訊是通過匯流排,匯流排的作用,就是把資料和位址從裝置a搬運到裝置b上, 

如果說裝置a和裝置b

具有一致性(原文是under discussion,這裡我不知道怎麼翻譯比較好,暫且翻譯為一致性)

,那麼裝置a和裝置b可以直接掛在同乙個匯流排上,並直接解讀匯流排上的資料。 

但是,如果裝置a和裝置b不具有一致性,那麼裝置a和裝置b就必須掛在兩條不同的匯流排上,這時候我們就需要乙個

「翻譯」

,把裝置a上的匯流排上的資料和位址

轉換成裝置b可以解析的格式

,然後放到裝置b的匯流排上,這個「翻譯」就是「bus bridge」, 

下面這幅圖就形象的說明了bus bridge在ahb和apb之間的作用。

ahb鏈結的裝置的資料傳輸速度是比apb裝置傳輸的速度快很多的,也就是說,這裡的這個bus beidge所起的作用就是「

緩衝器」,讓ahb和apb之間的資料/位址的傳輸速率歸到

同一速率

上。

這裡可以看到ahb主要是鏈結在了系統的核心以及儲存管理上面的,apb則主要分布給我外設。 

下面這張圖,更容易看出ahb和apb的作用: ahb鏈結的是系統匯流排、ram等等 apb鏈結的是常用的外設:gpio、uart等等

首先看一下f103系列的晶元的匯流排結構 

需要注意的是,這裡有

兩個apb

,它們鏈結的外設是不一樣的,所以在stm32的庫檔案中會有關於apb1和apb2的定義:

/** @defgroup apb2_peripheral 

* @*/

/** @defgroup apb1_peripheral

* @*/

apb的速率見下面說明:

apb1限制在了36mhz,apb2也可以達到全速72mhz 

下面是f105和f107的匯流排構架: 

文章整理於網路

stm32的匯流排AMBA AHB APB

出處 amba advanced microprocessor bus architecture 是arm公司提出的一種開放性的soc匯流排標準,現在已經廣泛的應用於risc的核心上了。amba定義了一種 多匯流排系統 multilevel busing system 包括系統匯流排和等級稍低的外設...

STM32匯流排架構筆記

amba是一種soc system of chip 匯流排標準,有amba1.0 2.0 3.0標準。利用amba定義的一款匯流排架構 ahb advanced high performance bus 高階高效能匯流排 asb advanced system bus 高階系統匯流排 apb adv...

STM32的CAN匯流排除錯

1.使用stm32的can匯流排,回環程式寫好之後,在無外接收發晶元的情況下,使程式不斷發資料,使用示波器可以看到tx引腳有波形,而rx引腳沒有波形 2.模式改為正常模式,在沒有接收發晶元的情況下再次測一下tx與rx的波形,但是發現使用示波器採集不到波形,而且在發了幾次資料後會進行標準庫的斷言,一直...