第二篇---血肉之軀STM32

       又迎來了週末,這個周是單週,只休一天,下午睡了一會兒,本來昏昏沉沉的狀態好多了,那就開始幹活吧,第一篇學習了CM3的架構,到此還只是理論,那麼這第二篇就算正式進入實戰了,因爲我們開始接觸真實的CM3架構的芯片了---STM32,意法半導體官方推出了STM32的開發庫,如果用庫開發的話,可能主要工作就是讀庫函數,調用庫函數,當然得理清庫的組織結構。這裏,我想不採用庫的方式開發,因爲如果當你換用其它半導體廠商提供的片子時就不一定有庫了,於是,認真研讀STM32的datasheet就顯得比較重要和不可或缺,當然,庫也有一定的好處,可以作爲我們寫代碼的參考。這麼說來,選擇STM32作爲CM3開發的入門,是很明智的選擇。

       進入正題,開始讀芯片手冊,首先是STM32的系統結構,如下圖:

      

      ● 五個驅動單元:

         ─ Cortex™-M3內核DCode總線(D-bus),和系統總線(S-bus)

         ─ 通用DMA1和通用DMA2

         ─ 以太網DMA

      ● 三個被動單元

         ─ 內部SRAM

         ─ 內部閃存存儲器

         ─ AHB到APB的橋(AHB2APBx),它連接所有的APB設備

         對着構架圖,梳理梳理它們之間的連接關係,這有利於宏觀上方向的把握,下一步要寫的程序只是在這基礎上的實現細節。

         1、ICode總線:該總線將CM3內核的指令總線與閃存指令接口相連接。指令預取在此總線上完成。

         2、DCode總線:該總線將CM3內核的DCode總線與閃存存儲器的數據接口相連接(常量加載和調試訪問)。

         3、系統總線:此總線連接CM3內核的系統總線(外設總線)到總線矩陣,總線矩陣協調着內核和DMA間的訪問。

         4、DMA總線:此總線將DMA的AHB主控接口與總線矩陣相聯,總線矩陣協調着CPU的DCode和DMA到 SRAM、閃存和外設的訪問。

         5、總線矩陣:總線矩陣協調內核系統總線和DMA主控總線之間的訪問仲裁,仲裁利用輪換算法。在互聯型產品中,總線矩陣包含5個驅動部件(CPU的DCode、系統總線、以太網DMA、DMA1總線和DMA2總線)和3個從部件(閃存存儲器接口(FLITF)、SRAM和AHB2APB橋)。在其它產品中總線矩陣包含4個驅動部件(CPU的DCode、系統總線、DMA1總線和DMA2總線)和4個被動部件(閃存存儲器接口(FLITF)、SRAM、FSMC和AHB2APB橋)。 AHB外設通過總線矩陣與系統總線相連,允許DMA訪問。

         6、AHB/APB橋: 兩個AHB/APB橋在AHB和2個APB總線間提供同步連接。APB1操作速度限於36MHz,APB2操作於全速(最高72MHz)。

         注:在每一次復位以後,所有除SRAM和FLITF以外的外設都被關閉,在使用一個外設之前,必須設置寄存器RCC_AHBENR來打開該外設的時鐘。

         然後,是系統的存儲器組織,這非常重要,因爲很多基本的功能都是通過寄存器的配置來實現的,要訪問和讀寫寄存器需要獲得寄存器的物理地址,那麼,我們就必須知道這些存儲器的映象。程序存儲器、數據存儲器、寄存器和輸入輸出端口被組織在同一個4GB的線性地址空間內(詳見上篇)。 數據字節以小端格式存放在存儲器中。一個字裏的最低地址字節被認爲是該字的最低有效字節,而最高地址字節是最高有效字節。可訪問的存儲器空間被分成8個主要塊,每個塊爲512MB。理解會用,之後,各存儲器的細節再去查數據手冊就可以了。

         以上,參考STM32的官方數據手冊(主要是翻譯~),介紹了STM32的大概,及數據手冊的使用方法,下篇就要開始編程之旅了,努力中~


歡迎大家掃描下方二維碼關注我的個人微信公衆號,一起交流學習,謝謝。

    

 

     

      

發佈了27 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章