1. STM32システムブロック図
STM32 マイクロコントローラは、図に示すように、プロセッサ、メモリ、クロック生成 (PLL など)、分配ロジック、システム バス、ペリフェラル (I/O インターフェイス、通信インターフェイス、ADC、DAC、タイマー、PWM、RTC など) で構成されています。図1。
図1 マイコンシステムブロック図
2. STM3 バス アーキテクチャ
STM32 メインシステムは 32 ビット多層 AHB バスマトリクスで構成されており、バスマトリクスにより 8 つのメイン制御バスから 7 つの制御バスへのアクセスを実現し、複数の高速ペリフェラルが混在している場合でも、同時に実行すると、システムは同時アクセスと効率的な運用を実現できます。STM32F407 のバス アーキテクチャを図 2 に示します。
図2 STM32F407 バス アーキテクチャ
8 つの主要な制御バスは次のとおりです。
- Cortex™-M4F コア I バス、D バス、S バス
- DMA1 メモリバス
- DMA2メモリバス
- DMA2ペリフェラルバス
- イーサネット DMA バス
- USB OTG HS DMA バス
制御される7つのバスは次のとおりです。
- 内部フラッシュ ICode バス
- 内部フラッシュ DCode バス
- メイン内部 SRAM1 (112 KB)
- 補助内部 SRAM2 (16 KB)
- AHB1 ペリフェラル (AHB-APB バス ブリッジおよび APB ペリフェラルを含む)。2 つの AHB/APB バス ブリッジ APB1 および APB2 を使用すると、AHB バスと 2 つの APB バス間の完全同期接続が実現され、周辺周波数の柔軟な選択が可能になります。
- AHB2周辺機器
- FSMC
2.1 S0:Iバス
このバスは、Cortex™-M4F コアの命令バスをバス マトリックスに接続するために使用されます。コアはこのバスを通じて命令をフェッチします。このバスによってアクセスされるオブジェクトは、コードを含むメモリ (内部フラッシュ/SRAM、または FSMC を介した外部メモリ) です。
2.2 S1:Dバス
このバスは、Cortex™-M4F データ バスと 64 KB CCM データ RAM をバス マトリックスに接続するために使用されます。コアはこのバスを即時ロードとデバッグ アクセスに使用します。このバスによってアクセスされるオブジェクトは、コードまたはデータを含むメモリ (内部フラッシュまたは FSMC を介した外部メモリ) です。
2.2 S2:Sバス
このバスは、Cortex™-M4F コアのシステム バスをバス マトリックスに接続するために使用されます。このバスは、周辺機器または SRAM にあるデータにアクセスするために使用されます。このバスを介して命令をフェッチすることもできます (ICode よりも効率は劣ります)。このバスは、FSMC を介して、112 KB、64 KB、および 16 KB の内部 SRAM、APB ペリフェラルを含む AHB1 ペリフェラル、AHB2 ペリフェラル、および外部メモリにアクセスします。
2.3 S3、S4: DMA メモリバス
このバスは、DMA メモリ バス マスターをバス マトリックスに接続するために使用されます。DMA は、このバスを介してメモリとの間でメモリ データ転送を実行します。このバスによってアクセスされるオブジェクトはデータ メモリです。内部 SRAM (112 KB、64 KB、16 KB) と FSMC 経由の外部メモリです。
2.4 S5: DMA ペリフェラル バス
このバスは、DMA ペリフェラル マスター バスをバス マトリックスに接続するために使用されます。DMA は、このバスを通じて AHB ペリフェラルにアクセスするか、メモリ間のデータ転送を実行します。このバスによってアクセスされるオブジェクトは、AHB および APB ペリフェラルとデータ メモリ (内部 SRAM および FSMC を介した外部メモリ) です。
2.5 S6: イーサネット DMA バス
このバスは、イーサネット DMA マスターをバス マトリックスに接続するために使用されます。イーサネット DMA は、このバスを通じてメモリにデータにアクセスします。このバスによってアクセスされるオブジェクトは、データ メモリ、つまり内部 SRAM (112 KB、64 KB、16 KB) と FSMC を介した外部メモリです。
2.6 S7: USB OTG HS DMA バス
このバスは、USB OTG HS DMA マスター インターフェイスをバス マトリックスに接続するために使用されます。USB OTG DMA は、このバスを通じてメモリへのデータのロード/メモリへのデータの保存を行います。このバスによってアクセスされるオブジェクトは、データ メモリ、つまり内部 SRAM (112 KB、64 KB、16 KB) と FSMC を介した外部メモリです。
2.7 バスマトリクス
バスマトリックスはマスターバス間のアクセス調停管理に使用されます。アービトレーションではラウンドロビン スケジューリング アルゴリズムが使用されます。
2.8 AHB/APB バスブリッジ (APB)
2 つの AHB/APB バス ブリッジ APB1 および APB2 を使用すると、AHB バスと 2 つの APB バス間の完全同期接続が実現され、周辺周波数の柔軟な選択が可能になります。APB1 および APB2 の最大周波数の詳細については、デバイスのデータシートを参照してください。
3. まとめ
STM32 バスアーキテクチャを初心者にとって深く理解するのはまだ難しいですが、個人的にはある程度の理解は必要だと考えており、システムブロック図とバスアーキテクチャを理解した上で、ペリフェラルの理解が深まりますプロセッサーと周辺機器は並行して実行されるため、低レベルのドライバーを作成することをお勧めします。外部デバイスについてある程度理解している場合は、ドライバーのプログラミングとデバッグをより簡単に行うために、バス アーキテクチャをより深く理解する必要があります。