高度なアプリケーションで PWM を使用する
重要
これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に 再提供されておりユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の上にある Version セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。
このトピックでは、Azure Sphere の高度なアプリケーションで使用するために、デバイス パルス幅変調器 (PWM) にアクセスする方法について説明します。
パルス幅変調は、パルス デジタル信号のデューティ サイクル (オフ タイムに対するオン タイムの比率) を変えることで実現されます。 パルス幅変調器は、デジタル モーターの制御、通信、デジタルからアナログへの変換など、幅広いアプリケーションで使用されます。
Azure Sphere アプリケーションで PWM を使用するには、必要なヘッダー ファイルと Pwm
機能を含め、アプリケーションがアクセスする PWM チャネルのコントローラーを指定する必要があります。
PWM_HighLevelApp サンプルは、MT3620 デバイス上の単純なデジタルからアナログへの変換アプリケーション内で PWM を使用する方法を示しています。
PWM の要件
PWM を使用するアプリケーションでは、適切なヘッダー ファイルをインクルードし、PWM の設定をアプリケーション マニフェストに追加する必要があります。
すべてのアプリケーションで、ターゲット ハードウェアを設定し、対応するハードウェア定義ヘッダー ファイルをインクルードする必要があります。
ヘッダー ファイル
#include <applibs/pwm.h>
#include "path-to-your-target-hardware.h"
"path-to-your-target-hardware.h" を、お使いのハードウェアのヘッダー ファイルへのパスに置き換えます。
アプリケーション マニフェストの設定
アプリケーション マニフェストの PWM 設定では、アプリケーションからアクセスされている PWM コントローラーが一覧表示されます。 これらの設定を構成するには、Pwm
機能をアプリケーション マニフェストに追加し、各 PWM コントローラーを機能に追加します。 Azure Sphere アプリケーション マニフェスト の詳細について説明します。
コードでは、ハードウェアに対して定義されている定数を使用して PWM コントローラーを識別します。 アプリをビルドするときに、これらの値がコンパイラによって生の値に変換されます。
たとえば、次に示すのは、MT3620 参照開発ボード (RDB) をターゲットとするアプリケーションのアプリケーション マニフェストからの抜粋です。
"Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]
次の抜粋は、Avnet MT3620 Starter Kit をターゲットとするアプリケーション内で同じ PWM コントローラーを指定する方法を示しています。
"Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]
PWM アクセス
高度な Azure Sphere アプリケーションでは、Applibs PWM API を呼び出すことによって PWM にアクセスできます。
PWM コントローラーを開く
PWM コントローラーを開いてアクセスできるようにするには、PWM_Open を呼び出し、開くコントローラーの ID をパラメーターとして渡します。 呼び出しが成功した場合は、ファイル記述子が返されます。 それ以外の場合は、-1 が返されます。
PWM チャネルの状態を設定する
PWM チャネルの状態を設定または更新するには、PWM_Apply を呼び出します。 次のパラメーターを PWM_Apply に渡します。
PWM_Open によって返されるファイル記述子
更新する PWM チャネル。この値はプラットフォームによって異なります
チャネルに適用する期間、デューティ サイクル、極性
チャネルを有効にするか無効にするか
Note
期間とデューティ サイクルの下限と上限はデバイスによって異なります。 たとえば、MT3620 の高レベル コアでは、PWM は 16 ビットのオン/オフ比較レジスタを備えた 2 MHz の固定ベース周波数で実行されます。 これは、デューティ サイクルの分解能が 500 ナノ秒で、最長有効期間が約 32.77 ミリ秒になることを意味します。 詳細については、特定のデバイスのデータ シートをご覧ください。
MT3620 サポート
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 は、MT3260 上の同じピンにマップされます。 アプリケーションで PWM コントローラーを使用する場合、そのコントローラーに関連付けられているすべてのピンが PWM 出力として使用するために割り当てられます。 他の種類の周辺機器には使用できません。