STM32WB - IPCC
プロセッサ間通信コントローラ

1.0 版

STM32 のプロセス間通信コントローラ（IPCC）モジュールのプレゼンテーションにようこそ。CPU 間のシグナルメッセージ交換に用いられるモジュールの主な機能の説明を行います。

1

概要

2

• 通信チャネル管理のためのノンブロッキング
シグナリング• メッセージ有効割込み• 割込み通知フロー• 通信方法：• 単方向：方向ごとの専用チャネル• 半二重：単一共有双方向チャネル

アプリケーション側の利点• ノンブロッキングメッセージ交換• チャネルフロー制御• CPU の SLEEP モードと STOP モードに対応• 最大 6 本の双方向チャネル• 共有 RAM に格納されるチャネルデータ

STM32 製品に内蔵されているプロセッサ間通信コントローラ
モジュールは、割込みのシグナリングに対応しており、マイクロコントローラがノンブロッキングでメッセージを交換可能です。このモジュールでは単方向通信が可能で、プロセッサ Aからプロセッサ B にメッセージを送るのに専用チャネルが使用されます。半二重（メッセージ - 応答）通信も可能であり、単一の共有チャネルを用いてプロセッサ A とプロセッサ B の間の通信を行います。アプリケーションは、ノンブロッキング割込みベースのメッセージ交換とチャネルフロー制御による恩恵を受けることができます。プロセッサ間通信コントローラによって、SLEEP モードと STOP モードから CPU を復帰できます。
チャネルデータは、プロセッサ間通信コントローラの一部ではなく、共有メモリに格納されています。

2ブロック図

3

IPCC
割込み管理

AHB インタフェース

スレーブ AHB

CPU1
チャネル [N:0]
ステータス

HCLK
CPU2
チャネル [N:0]
ステータス

[N]

[N]

[N]

[N]

CPU1 RXCPU1 受信占有

CPU1 TX

CPU1 送信解放

CPU2 RXCPU2 受信占有

CPU2 TX

CPU2 送信解放

プロセッサ間通信コントローラは、AHB スレーブモジュールです。レジスタを含んでいる「AHB インタフェース」と、「割込み管理」部で構成されています。
チャネルごとに、片方の CPU に対する送信ステータスともう一方の CPU に対する受信ステータスを示す 1 本のステータ
スフラグがあります。それぞれの CPU には、個々のステータ
スマスクと、各チャネルに対するセット／クリアレジスタビットがあります。レジスタ領域は、2 つの領域に分割されており、CPU 当たり 1 つの領域を使用します。それぞれの領域には、CPU に関連するレジスタが含まれており、読出し-変更-書込みアクセスの競合を防止します。
各 CPU に専用の割込みが備わっています。

3

チャネルの管理

4• 各チャネルには以下の機能があります。
• 関連する方向：• CPU1 から送信されて CPU2 によって受信、または、CPU2 から送信されて CPU1 によって受信• 単一読出し専用チャネルステータスフラグ（CHnFビット）• 送信側 CPU によって占有にセット可能（CHnSビット）• 受信側 CPU によって解放にクリア可能（CHnCビット）• 割込みマスク• 送信側 CPU チャネル解放マスク（CHnFMビット）• 受信側 CPU チャネル占有マスク（CHnOMビット）
送信側 CPU
占有にセット
チャネルステータス
CHnF
受信側 CPU
解放にクリア

送信側 CPU解放マスク

送信側 CPU 送信 解放

受信側 CPU占有マスク

受信側 CPU 受信占有

チャネルには、送信側 CPU から受信側 CPU への方向が関連しています。
送信側 CPU は、セットチャネル N レジスタビット（CHnS）を用いてチャネルステータスを占有にセットすることで、占有するチャネルにシグナルを送ることができます。
受信側 CPU がそのチャネル N 占有マスクレジスタビット（CHnOM）の中でチャネル占有割込みをマスクしていない場
合、受信側 CPU に対して 受信占有割込み（メッセージ使用可能）が生成されます。
受信側 CPU は、クリアチャネル N レジスタビット（CHnC）を用いてチャネルステータスを解放にセットすることで、解放するチャネルにシグナルを送ることができます。
送信側 CPU がそのチャネル N 解放マスクレジスタビット（CHnFM）の中でチャネル解放割込みをマスクしていない場
合、送信側 CPU に対して 送信解放割込み（フローオン）が生成されます。

4

IPCC の手順

5

単方向送信

チャネル N
ステータスの読出し

スタート

チャネル解放チャネルデータの書込み

チャネル N
ステータスを占有にセット終了

チャネル占有チャネル N
送信解放割込み
マスク解除

送信解放割込み待機チャネル N
送信解放割込み
マスク

送信解放割込み

送信解放
割込み受信

単方向の手順によって、専用チャネル経由での送信側から受信側へのメッセージ転送が可能となります。
単方向の手順を用いてメッセージを送信するするために、チャネルステータスフラグがチェックされます。受信側が前のメッセージからバッファを解放していないために、チャネルステータスフラグがチャネル占有（フローオフ）を示している場
合、チャネル解放割込みのマスクは解除されます。ひとたび受信側によってチャネルが解放されると、チャネル解放割込み（フローオン）が生成されます。チャネル解放割込みが生成されると、チャネル解放割込みはマスクされ、チャネルデータバッファへのメッセージの書込みが可能となります。その後、チャネルステータスフラグが占有にセットされ、受信側に対してチャネル占有割込みがトリガされます。
チャネルステータスフラグが解放されていることが確認されると、チャネルデータバッファへのメッセージの直接書込みが可能となります。

5

IPCC の手順

6

単方向受信

受信占有割込み

チャネルステータスの読出しどのチャネルが占有されているか判定

チャネル N
受信占有割込み
マスクチャネルデータ読出し

チャネル N
ステータスを解放にセット

チャネル N
受信占有割込み
マスク解除

終了

チャネル占有割込みが生成されると、受信側はどのチャネルが占有されたかを判定し、該当するチャネル占有割込みをマスクします。その後、チャネルデータバッファからメッセージを読出し可能となります。ひとたび読み出されると、チャネルステータスフラグが解放（フローオン）にクリアされ、チャネル占有割込みのマスクが解除されます。

6

IPCC の手順

7

送信側：半二重送信メッセージ待ち応答• メッセージの送信と応答の受信には解放ステータスを用います。
スタート

チャネル N
ステータスの読出しメッセージ送信チャネル解放チャネル N（メッセージ）の書込み

応答受信
チャネル N
ステータスを占有にセット

チャネル N
受信解放割込み
マスク

チャネル N
送信解放割込み
マスク解除

どのチャネルが解放されているか判定

チャネル N（応答）読出しチャネル占有前回メッセージへの応答待機

送信解放割込み待機

送信解放割込み終了

チャネルステータスの読出し半二重方向の手順によって、ただ 1 つの共有バッファを使って、送信側から受信側へのメッセージの後、受信側から送信側に送信される応答を転送することが可能となります。
半二重方向の手順では、最初に送信側がチャネルステータスフラグをチェックします。受信側が前のメッセージへの応答をまだ送信していないために、チャネルステータスフラグがチャネル占有（フローオフ）を示している場合、送信側は応答（ソフトウェアフラグ）を待ちます。
チャネルが解放されていると、チャネルデータバッファへのメッセージの書込みが可能となります。その後、チャネルステータスフラグが占有にセットされ、受信側に対してチャネル占有割込みがトリガされてチャネル解放割込みがマスクされます。チャネル解放割込みは、受信側から送信された応答が有効であることを示します。
チャネル解放割込み（応答可能）が生成されると、送信側はどのチャネルが解放されたかを判定し、対応するチャネル解放割込みをマスクします。その後、チャネルデータバッファから応答を読出し可能となります。
7

IPCC の手順

8

受信側：半二重受信メッセージ送信応答• メッセージの受信と応答の送信には占有ステータスを用います。
メッセージ受信受信占有割込み

チャネルステータスの読出し

どのチャネルが占有されているか判定
チャネル N
受信占有割込みマスク

応答送信チャネル N（メッセージ）の読出し終了

スタート

チャネル N（応答）の書込み

チャネル N
ステータスを解放にセット
チャネル N
受信占有割込み
マスク解除

終了

チャネル占有割込み（メッセージ使用可能）が生成されると、受信側はどのチャネルが占有されたかを判定し、対応するチャネル占有割込みをマスクします。その後、チャネルデータバッファからメッセージを読出し可能となります。受信側がチャネルデータバッファに応答を送信して、はじめてチャネルは解放されます。 ひとたびチャネルデータバッファに応答が受信されると、チャネルステータスフラグがクリアされ解放（応答可能）された後、チャネル占有割込みのマスクが解除されます。

8

割込み
割込みイベント

9

説明CPU1 送信解放

CPU1 送信チャネルステータスがクリアされて解放されます。

CPU1 受信占有

CPU1 受信チャネルステータスが占有にセットされます。

CPU2 送信解放

CPU2 送信チャネルステータスがクリアされて解放されます。

CPU2 受信占有

CPU2 受信チャネルステータスが占有にセットされます。

これは、プロセス間通信コントローラ割込みの概要です。
各 CPU には、個々の送信チャネルに関連する 送信解放割込みが備わっています。
各 CPU には、送信 CPU チャネルに関連する 受信占有割込みが備わっています。

9低電力モード
システムモード

10

説明

RUN有効。ペリフェラル割込みによって、CPU が CSleep モードと CStop モードから復帰します。

SLEEP停止。

STOP停止。

STANDBYパワーダウン状態です。ペリフェラルは、システム STANBY モードから復帰後に再初期化する必要があります。

ここでは、特定の低電力設定モードにおけるペリフェラルのステータスの概要を示します。SLEEP モードと STOP モードでは、プロセッサ間通信コントローラの状態を変更できません。
STANBY モードでは、プロセッサ間通信コントローラ の内容は失われます。プロセッサ間通信コントローラは、CPU がRUN モードにあるときには必ず RUN モードとなります。プロ
セッサ間通信コントローラ は、CRun、CSleep、CStop の各モードにある CPU の割込みと復帰が可能です。

10関連ペリフェラル

11• これは、IPCC コントローラに関連したペリフェラルのリストです。詳細については、必要に応じてこれらのペリフェラルトレーニングを参照してください。
• リセットおよびクロック制御（RCC）• 非同期割込み／イベントコントローラ（AIEC）• 割込み（NVIC）

これは、プロセッサ間通信コントローラモジュールに関連したペリフェラルのリストです。ユーザは、プロセッサ間通信コントローラモジュールを正しく設定して使用するために、これらのペリフェラルの間のすべての関係に精通していることが望まれます。

11