高レベルのアプリケーションで PWM を使用する
このトピックでは、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 チャネル。この値はプラットフォームに依存します
チャネルに適用する期間、デューティ サイクル、極性
チャネルを有効または無効にするかどうか
メモ
期間とデューティ サイクルの最小および最大制限は、デバイスによって異なります。 たとえば、MT3620 の高レベル コアでは、PWM は 16 ビットのオン/オフ比較レジスタを使用して 2 MHz の固定基本周波数で実行されます。 これにより、デューティ サイクル分解能は 500 ns、有効な最大期間は約 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 出力として使用するために割り当てられます。 他の周辺機器の種類には使用できません。