次の方法で共有


リアルタイム対応アプリケーションで PWM を使用する

Azure Sphere では、パルス幅変調がサポートされています。 パルス幅変調は、パルスデジタル信号のデューティサイクル(オンタイムとオフタイムの比率)を変化させることによって実現されます。 パルス幅変調器(PWM)は、デジタルモータ制御、通信、デジタルからアナログへの変換など、幅広い用途で使用されています。

このトピックでは、リアルタイム対応アプリケーション (RTApp) で PWM を使用する方法について説明します。 高レベル アプリケーションでの PWM の使用については、「高レベル アプリケーション での PWM の使用」を参照してください。

メモ

Azure Sphere OS は、起動時に周辺機器をリセットしません。 アプリケーションでは、起動時または再起動後に周辺機器が既知の良好な状態になっていることを確認する必要があります。

リアルタイム コアでの PWM の MT3620 サポート

このセクションでは、MT3620 で Azure Sphere を実行する場合にのみ適用される PWM オプションについて説明します。

MT3620 がサポートする PWM 機能は 、MT3620 のサポート状態に記載されています。 MT3620 開発ボードのユーザー ガイドでは、ピン レイアウトとピン機能について説明します。

MT3620には、PWM0-PWM11によって識別される12のPWMチャンネルがあります。 それらは4つのチャネルの3つのグループに整理される。 各グループは PWM コントローラー (PWM-CONTROLLER-0、PWM-CONTROLLER-1、PWM-CONTROLLER-2) に関連付けられています。 PWM チャネルと GPIO ピン GPIO0 から GPIO11 は、MT3620 の同じピンにマップされます。 アプリケーションが PWM コントローラーを使用している場合、そのコントローラーに関連付けられているすべてのピンが PWM 出力として使用されるように割り当てられます。 いずれも GPIO には使用できません。

MT3620 のレジスタ ベース アドレス、割り込み番号、クロック レート、サンプリング周波数、その他の詳細については、 MT3620 データシートMT3620 M4 ユーザー マニュアルを参照してください。質問が残っている場合は、電子メールで Avnet に詳細を Azure.Sphere@avnet.com要求できます。

PWM ハードウェアは、32 KHz、2 MHz (XTAL/13)、または 26 MHz (XTAL) の 3 つのクロック周波数のいずれかを使用するように構成できます。 リアルタイム (RT) コアでは、リアルタイム アプリケーション (RTApp) で、ベースとして使用するクロックを選択できます。 ユーザー定義の基本周波数はサポートされていません。 ただし、アプリケーションでは、選択した基本周波数から派生した信号周波数を生成できます。 例については、Azure Sphere ギャラリーPWMAudio サンプル アプリを参照してください。

アプリケーション マニフェストの設定

RTApp で PWM を使用するには、アプリケーション マニフェストに Pwm 機能を追加し、アプリケーションで使用する PWM コントローラーを指定します。 たとえば、次の行では、 MT3620 リファレンス開発ボード (RDB) をターゲットとする RTApp で使用する PWM コントローラー 0 を指定します。

"Capabilities": {
   "Pwm": [ "PWM-CONTROLLER-0" ] }

Azure Sphere アプリケーション マニフェストには、アプリケーション マニフェスト の詳細が記載されています。

PWM サンプル アプリケーション

GitHub の CodethinkLabs リポジトリには、Azure Sphere のリアルタイム対応アプリケーションでサポートされている MT3620 周辺機器を使用する方法を示すサンプル アプリケーションが多数含まれています。 具体的には、 PWM_RTApp_MT3620_BareMetal サンプルでは、リアルタイム対応アプリケーションに PWM 周辺機器を組み込む方法を示します。

PWMAudio プロジェクトでは、リアルタイム コアを使用して PWM (パルス幅変調) オーディオを生成する方法を示します。 このプロジェクトは、メンテナンスされていないスクリプト、ユーティリティ、および関数のコレクションである Azure Sphere ギャラリーの一部です。