JAJAA44 October 2025 CC2340R5
メモリ レジスタ (4 つ) よりも ADC 入力 (ADC_COUNT は 5) が多く、各 PWM デューティ サイクル出力 (つまり PWM_PERIOD/2 のレートで) で ISEN ピン (モーター電流) を測定する必要があることを考慮すると、1 つの CC2340R5 ADC ペリフェラルを使用して、関連するすべての ADC チャネルを測定することが課題となります。修正された実装では、改良型 ADCBuf TI ドライバを使用して、ADC と DMA を利用して、CPU を中断せずにサイズの ADCSAMPLESIZE バッファを迅速かつ効率的に充填し、ISEN と VSENPVDD の両方 (システム電圧) を連続的に測定しながら、ときどきこのプロセスを中断し、ADC_INTERVAL のレートで残りの VSENA、VSENB、VSENC ADC ピンを測定します。その結果、ADC_INTERVAL タイマが満了するたびにトリガされる 1 つの ADC 測定の時間と周波数により、ADCBuf を使用するチャネルごとの ADC 測定数は PWM_PERIOD /2 よりもわずかに低くなります。ADCBuf ドライバは PWM LGPT アクティビティから ADC をトリガするよう構成されているため、モーターが停止している間、ドライバは測定を行いません。一方、単一の ADC 測定は、モーターの動作に関係なく、ADC_INTERVAL が発生するたびに有効となります。
ADC ペリフェラルでもウィンドウ モニタがイネーブルになるため、adcBufCallback でさらに処理されるように、最新の ISEN 測定の値がウィンドウ制限範囲内またはそれ以上になった場合にアクションを即座に実行できます。WINDOW_LOW の値を超えた場合、ADC_INT_INIFG の ADC コールバック ステータスによって、サイクルがウィンドウ値を下回るまで PWM デューティ サイクルが低下します。この時点で、ADC_INT_LOWIFG ステータスは、デューティ サイクルを元の値に戻します。WINDOW_HIGH を超えた場合、ADC_INT_HIGHIFG ステータスはモーターを直ちに停止します。ADC メモリ レジスタはウィンドウ モニタをトリガできますが、設定できるのは、下限ウィンドウおよび上限ウィンドウ スレッショルドの値は 1 つだけです。ウィンドウ モニタが有効になっているメモリ レジスタ 2 を使用するように ISEN のみが構成されているため、ISEN のみがウィンドウ モニタをトリガできます。ISEN が 2 つの ADC メモリ レジスタ (0 と 2) を切り替えると、ウィンドウ モニタは約 10kHz の速度で ISEN を評価します。
ウィンドウ モニタのステータスが原因ではなく、ADC コールバックがトリガされると、ADC バッファは充填されました。アプリケーションは、ADC 変換の結果を outputBuffer アレイに入力し、VSEN_THRESHOLD を上回る受信 VSENPVDD ADC 変換が原因でモーターを停止する必要があるかどうかを評価します。すべての変換は 12 ビットの分解能 (最大値 4096) で、未加工形式のままになります。ただし、これらの値をさらに調整し、それらの値を µV 形式に変換するために、追加の処理 API を TI ドライバで使用することもできます。これらのプロセスがモーター ドライブ機能を妨げることがないように注意する必要があります。