2017-01-23 33 views
2

我使用STM32系列微控制器,更具體地說是STM32F7系列。目前我正在研究通用定時器的使用。

STMicro錯誤地解釋了「影子寄存器」這個術語嗎?

關於雙緩衝寄存器。

微控制器有時使用雙緩衝寄存器。這樣,軟件就可以寫入和讀取寄存器而不會造成麻煩。下圖說明:

   buffered register:   active register: 
       --------------    -------------- 
       | REGX_BUF | <-------> | REGX  | 
       --------------    -------------- 
         |       | 
         |       | 
        SOFTWARE     HARDWARE 

     The software interacts  Updates to and from the 
     only with the buffered  active register take place 
     register.      at specific moments (when it 
             is 'safe'). 

     synonyms:      synonyms: 
      - buffered register   - active register 
      - preload register 
      - shadow register (?) 

有幾個方面從上圖中兩個REGX_BUFREGX

  • 通常寄存器REGX被稱爲「活動寄存器」。
  • 寄存器REGX_BUF有時稱爲「緩衝寄存器」。其他條款是「預加載寄存器」和「影子寄存器(?)」。

混淆說明。

不幸的是,關於術語「影子寄存器」有一個混淆。從我在互聯網上看到的幾個資料來看,它指的是REGX_BUF。但是在STM32F746微控制器的參考手冊RM0385和STM32F767微控制器的RM0410中,我偶然發現了這個術語「影子寄存器」的完全相反的解釋。它不會參考REGX_BUF,而是參考REGX
這是從參考手冊的圖片:

RM0385 -> chapter 23 General-purpose timers -> 23.3.2 Counter modes -> Fig 199 

RM0410 -> Chapter 26 General-purpose timers -> 26.3.2 Counter modes -> Fig 244 

enter image description here

該圖混淆了我。我是否對「影子寄存器」這個術語有錯誤的解釋,或者意法半導體在撰寫本參考手冊時是否犯了錯誤?

+0

到底是什麼問題? 「X的影子寄存器」指的是一個「遮蔽」或複製「X」值的寄存器。這張圖正好顯示了影子寄存器跟隨「自動預加載」的值,並且有一點時間延遲。 –

+0

從我在幾個源中讀到的內容來看,「影子寄存器」是「預加載寄存器」的同義詞:this是與軟件交互的註冊表。 --- 「活動寄存器」是與硬件交互的一個。 來自STMicro手冊的圖解釋術語「影子寄存器」不是「預加載寄存器」的同義詞,而是「有效寄存器」的同義詞。所以我感到困惑。 –

+0

http://electronics.stackexchange.com/questions/86032/what-actually-is-a-shadow-register –

回答

4

問題在於術語「影子寄存器」沒有特定的與架構無關的含義。

例如,ARM架構具有一組通用寄存器,您可以在其中寫入和讀取(R0 - R12)。但是,如果您輸入中斷處理程序上下文R8 - R12切換到「影子寄存器」。這意味着你仍然像在普通程序中那樣處理它們,但是你正在訪問完全不同於通常程序中使用的R8 - R12的寄存器。它們是專用的中斷處理資源,因此您不必像通常那樣處理保存和恢復寄存器。

一些PIC微控制器允許您爲引腳I/O寫入和讀取相同的地址,但事實上,您正在寫一個單獨的緩衝區,而不是讀取,因爲寫入引腳可能不一定會改變他們的狀態立即。這種配置允許體系結構緩存寫請求,同時等待它改變引腳狀態。這些額外的緩衝區有時也被稱爲影子寄存器,並且與您的示例類似。使用您的示例中給出的術語,我想這將被稱爲「預加載寄存器」。

一般來說,該術語用於表示可以用同樣方法解決的多個硬件資源。哪一個是「真正的」寄存器,哪個是「影子」寄存器,在架構和供應商之間並不一致,最終可能也不是很重要。

+0

非常感謝。這個答案澄清了這個問題:-) –

2

實際上ST定義其標準:(第通用T食譜 14)

  • 活性寄存器實例(也稱爲影子寄存器實例):其內容是由定時器外圍邏輯使用 生成定時器通道輸出波形。
  • 預加載寄存器實例:這是當相關寄存器的預加載特性被使能時由軟件 訪問的寄存器實例。

原稿是ST AN4776應用筆記 - ,可以發現here

+0

非常感謝 –