STM32架構相關


整理了一下STM32相關的底層結構,有助於消化理解

先上幾張圖片(主要參照STM3210x系列)

1.芯片結構組成圖:

 

2.STM32內部結構:

 

3.Cortex-M3模塊結構圖:

 

4.STM3210X內部結構:

橋:

四個主動單元 :
        M3內核的ICode總線(I-bus)、DCode總線(D-bus)、 系統總線(S-bus)、DMA(DMA1、DMA2、以太網DMA) 
 
四個被動單元 :
        內部SRAM、內部閃存、FSMC、AHB到APB橋 
 
ICode總線 :
        將M3內核的指令總線與FLASH指令接口相連,用於指令預取
 
DCode總線:
        將M3內核的數據總線與FLASH數據接口相連,常量加載和調試 
 
系統總線 :
        將M3內核的系統總線與總線矩陣相連,協調內核與DMA訪問 
 
DMA總線: 
        將DMA的AHB主控接口與總線矩陣相連,協調CPU的DCode和DMA到SRAM、閃存、外設的訪問
 
總線矩陣:
        協調內核系統總線和DMA主控總線間的訪問仲裁,仲裁采用輪換算法
        包含DCode、系統總線、DMA1和DMA2總線、被動單元 
 
AHB到APB橋 :
        兩個AHB/APB橋在AHB和兩個APB總線間提供同步連接
        APB1速度限於36MHz,APB2全速最高72MHz

 

一、時鍾結構(時鍾和復位模塊,如參考上半部分所示)

系統復位后,所有外設全部關閉,但 SRAM 和 FLASH接口(FLITF)除外。
使用外設之前需打開該外設時鍾,設置 RCC——AHBENR 寄存器 。
 
 
二、存儲結構 :(參考上半部分
*存儲組織:
        Cortex-M3的存儲系統采用統一編址方式,小端方式 4GB 的線性地址空間內,
   尋址空間被分成 8 個主塊 block0-block7 ,每塊512MB。
 
        片內Flash: 從 0x00000000開始( 嚴格 來講是從0x08000000開始,到0x0800x xxxx結束,程序就燒到里面。
        片內SRAM:從 0x20000000開始( 用來保存程序運行時產生的臨時數據的隨機存儲器,運行時變量,堆棧的存放的地方
        包括: 
                代碼空間 
                數據空間 
                位段、位段別名 
                寄存器 
                片上外設 
                外部存儲器 
                外部外設
      拓展延伸:e2prom ,存儲掉電需要保存的數據;fsmc總線還可以擴展nor 和nand;
 
 
*FLASH:
由 Main Block 和 Information Block組成
            Main Block:
            存放用戶程序,最高512KB 
            地址范圍: 0x0800 0000 – 0x0807 FFFF 
            小容量:16K-32K,最大4Kx64bit,共32x1K頁
            中容量:64K-128K,最大16Kx64bit,共128x1K頁 
            大容量:256K-512K,最大64Kx64bit,共256x2K頁 
            小容量:16K-32K,最大4Kx64bit,共32x1K頁 
            互聯型:最大32Kx64bit,共128x2K頁
             Information Block:
         System Memory 2KB:0x1FFF F000 – 0x1FFF F7FF  ISP Bootloader程序 
         Option Bytes 16B:0x1FFF F800 – 0x1FFF F80F
 
*SRAM: 
        最大64KB 
        地址范圍:0x2000 0000 – 0x2000 FFFF
 
*片上外設地址映射:
 
 
*位段(bit-band)、位段別名 :
  M3存儲空間中包括兩個位段區,該區域即可字操作,又可位操作
            SRAM最低1MB空間: 0x2000 0000 – 0x200F FFFF 
            外設最低1MB空間:0x4000 0000 – 0x400F FFFF 
  a.為方便位段區的操作,安排了兩個32M的位段別名區
  b.位段區中每一位 映射 位段別名區中的一個字
  c.通過對別名區中某個字的讀寫操作,可以實現對位段區中某一位的讀寫操作
    別名區,2個32MB:
        SRAM:0x2200 0000 – 0x21FF FFFF 
        外設:0x4200 0000 – 0x41FF FFFF
  位段別名區中的字與位段區的位映射公式:
    bit_word_addr =  bit_band_base + (byte_offset x 32) + bit_number x 4
    例如:SRAM位段區中地址0x20000300字節中位2
            0x22006008 = 0x22000000 + (0x300 x 32) + (2 x 4)
    
    對別名區中某個字進行寫操作:該字的第 0 位將影響位段區中對應的位
    對別名區中某個字進行讀操作:若位段區中對應的位為 0 則讀的結果為 0x0 ,若位段區中對應的位為 1 則讀的結果為 0x1
    PS:  對別名區的讀寫可以實現對位段區中每一位的原子操作,而且僅只需要一條指令即可實現
 
 
* 啟動模式 :
        STM32系統啟動區:0x0000 0000 – 0x0007 FFFF,512KB
        系統啟動之后: CPU從位於0x0000 0000地址處的啟動區開始執行代碼
          該區實際既無FLASH,也無SRAM,通過引導配置后,將實際引導區映射到啟動區
        系統復位后,在SYSCLK第4個上升沿,BOOT管腳的狀態被保存,用戶通過設置BOOT1,BOOT0的引腳狀態選擇啟動模式
        CPU從位於0x0000 0000地址處的啟動區開始執行代碼
                 0x0000 0000 實際是SP 
                 0x0000 0004 是執行代碼的地址
         即使被映射到啟動區,仍然可以在原存儲空間訪問相關存儲器     
         從待機模式退出后,BOOT引腳狀態被重新保存,待機時,BOOT管腳需保持
    
   STM32F10x通過配置 BOOT[1:0]引腳選擇三種不同啟動模式
 
三、片上外設
STM32F10x外設

 

 

STM32F103xx增強型大容量外設

 

四、GPIO結構

共?(5) x 16個I/O口: 

  • PA0 ~ PA15 
  • PB0 ~ PB15 
  • PC0 ~ PC15 
  • PD0 ~ PD15 
  • PE0 ~ PE15

3.3V與5V兼容:

  • PA8 ~ PA15 
  • PB2 ~ PB4、 PB6 ~PB15
  • PC6 ~ PC12 
  • PD0 ~ PD15 
  • PE0 ~ PE15

僅支持3.3V:

  • PA0 ~ PA7,兼做 ADC_IN0 ~ ADC_IN7 
  • PB0 ~ PB1,兼做 ADC_IN8 ~ ADC_IN9
  • PB5 
  • PC0 ~ PC5,兼做 ADC_IN10 ~ ADC_IN15 
  • PC13 ~ PC15


引腳 (48 64  ...)
開發工具 

 

STM32系列的優點

   先進的內核結構,STM32系列使用了ARM最新的、先進架構Cortex-M3內核
           優秀的功耗控制,STM32處理器具有三種低功耗模式
                    運行模式時使用高效的動態耗電機制,在Flash中以72MHz全速運行時,如果開啟外部時鍾,處理器僅耗電27mA 
                    待機狀態時極低耗電,典型值2uA 
                    電池供電時,提供低電壓2.0~3.6V工作能力
           靈活的時鍾控制機制,用戶可以根據自己所需的耗電/性能要求進行合理優化
           RTC可獨立供電,外接紐扣電池供電

 

   性能出眾而且功能創新的片上外設
        STM32 處理器片上外設的優勢來源於雙 APB 總線結構
        其中有一個高速 APB,速度可達CPU 的運行頻率,連接到該總線上的外設能以更高的速度運行
                USB:   12Mbit/s         
                USART:  4.5Mbit/s 
                PI:   18Mbit/s       
                IIC:    400kHz 
                GPIO:  18MHz翻轉       
                PWM:    定時器72MHz輸入
         針對 MCU 應用中最常見的電機控制,STM32 對片上外圍設備進行一些功能創新
                 內嵌適合三相無刷電機控制的定時器和ADC
                 高級PWM定時器提供:
                         6路PWM輸出    -> 死去產生     -> 邊沿對齊和中心對齊波形 
                        編碼器輸入     -> 霍爾傳感器   -> 完整的向量控制環 緊急故障停機、
                        可與2路ADC同步、與其它定時器同步 可編程防范機制可用於防止對寄存器的非法寫入
                雙通道ADC采樣/保持,12位1uS,連續/獨立模式,多觸發源
                等等

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM