一、系統架構
主系統由 32 位多層 AHB 總線矩陣構成,可實作以下部分的互連:
有關AHB總線和APB總線的更多資訊請參考博文:
淺析AMBA規範以及AMBA 5 AHB接口和AMBA 3 APB接口
1、六條主要總線:
● Cortex™-M4F 核心 I 總線、D 總線和 S 總線;
● DMA1 存儲器總線;
● DMA2 存儲器總線;
● DMA2 外設總線。
2、五條被控總線:
● 内部 Flash ICode 總線;
● 内部 Flash DCode 總線;
● 主要内部 SRAM;
● AHB1 外設(包括 AHB-APB 總線橋和 APB 外設);
● AHB2 外設。
借助總線矩陣,可以實作主要總線到被控總線的通路,這樣即使在多個高速外設同時運作期間,系統也可以實作并發通路和高效運作。此架構如 Figure 1 所示。
S0:I 總線
此總線用于将 Cortex™-M4F 核心的指令總線連接配接到總線矩陣。核心通過此總線擷取指令。此總線通路的對象是包含代碼的存儲器(内部 Flash/SRAM)。
S1:D 總線
此總線用于将 Cortex™-M4F 資料總線連接配接到總線矩陣。核心通過此總線進行立即數加載和調試通路。此總線通路的對象是包含代碼或資料的存儲器(内部 Flash/SRAM)。
S2:S 總線
此總線用于将 Cortex™-M4F 核心的系統總線連接配接到總線矩陣。此總線用于通路位于外設 或 SRAM 中的資料。也可通過此總線擷取指令(效率低于 I 總線)。此總線通路的對象是内部 SRAM、包括 APB 外設在内的 AHB1 外設、AHB2 外設。
S3、S4:DMA 存儲器總線
此總線用于将 DMA 存儲器總線主接口連接配接到總線矩陣。DMA 通過此總線來執行存儲器資料的傳入和傳出。此總線通路的對象是資料存儲器:内部 Flash、内部 SRAM 以及 S4 可以額外通路包括 APB 外設在内的 AHB1/AHB2 外設。
S5:DMA 外設總線
此總線用于将 DMA 外設主總線接口連接配接到總線矩陣。DMA 通過此總線通路 AHB 外設或執 行存儲器間的資料傳輸。此總線通路的對象是 AHB 和 APB 外設以及資料存儲器:Flash 儲存器和内部 SRAM。
總線矩陣
總線矩陣用于主要總線之間的通路仲裁管理。仲裁采用循環排程算法。
AHB/APB 總線橋 (APB)
借助兩個 AHB/APB 總線橋 APB1 和 APB2,可在 AHB 總線與兩個 APB 總線之間實作完全 同步的連接配接,進而靈活選擇外設頻率。
有關 APB1 和 APB2 最大頻率的詳細資訊,請參見器件資料手冊;有關 AHB 和 APB 外設地 址映射的資訊,請參見STM32F411參考手冊中的 Table 1。
每次晶片複位後,所有外設時鐘都被關閉(SRAM 和 Flash 接口除外)。使用外設前,必須在 RCC_AHBxENR 或 RCC_APBxENR 寄存器中使能其時鐘。其中RCC寄存器不屬于外設,複位後RCC寄存器直接由HSI提供時鐘信号。但其RCC寄存器仍然挂接在AHB1總線上,具體請看下文中 STM32F411xC/xE 方框圖中的“Reset & clock control”。
注意:對 APB 寄存器執行 16 位或 8 位通路時,該通路将轉換為 32 位通路:總線橋将 16 位或 8 位資料複制後提供給 32 位向量。
STM32F411xC/xE 方框圖
左邊部分:
右邊部分:
挂接在 AHB1 總線上的外設有:GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOH、CRC、RCC、Flash 接口寄存器、DMA1、DMA2;
挂接在 AHB1 總線上的外設有:USB OTG FS;
挂接在 APB1 總線上的外設有:TIM2、TIM3、TIM4、TIM5、RTC 和 BKP 寄存器、WWDG、IWDG、I2S2ext、SPI2 / I2S2、SPI3 / I2S3、I2S3ext、USART2、I2C1、I2C2、I2C3、PWR;
挂接在 APB2 總線上的外設有:USART1、USART6、ADC1、SDIO、SPI1/I2S1、SPI4/I2S4、SYSCFG、EXTI、TIM9、TIM10、TIM11、SPI5/I2S5。
有關 STM32F411xC/E 器件中可用外設的邊界位址請參考STM32F411資料手冊中的“Table 1. STM32F411xC/E register boundary addresses”。
二、存儲器組織結構
綜合存儲器映射圖:
程式存儲器、資料存儲器、寄存器和 I/O 端口排列在同一個順序的 4 GB 位址空間内。
各位元組按小端格式在存儲器中編碼。字中編号最低的位元組被視為該字的最低有效位元組,而編号最高的位元組被視為最高有效位元組。
有關外設寄存器映射的詳細資訊,請參見STM32F411參考手冊中的相關章節。
可尋址的存儲空間分為 8 個主要塊,每個塊為 512 MB。
未配置設定給片上存儲器和外設的所有存儲區域均視為“保留區”。請參見STM32F411資料手冊中的存儲器映射圖。
從0x0000 0000到0x03FF FFFF這段位址空間稱為自舉存儲空間,Cortex™-M4F CPU 通過 ICode 總線從位址 0x0000 0000 擷取棧頂值,然後從始于0x0000 0004 的存儲器開始執行代碼。自舉存儲空間使用别名,也就是說在單片機上電之前是沒有存儲器映射到這段自舉存儲空間内的。單片機上電之後通過硬體檢測相應的 BOOT 引腳來确定将自舉存儲空間映射到主 Flash、系統存儲器還是嵌入式 SRAM。