インクリメンタル ADC データシート ADCINC V 1.1 001-66119 Rev. ** Incremental ADC Copyright © 2002-2010 Cypress Semiconductor Corporation. All Rights Reserved. PSoC® ブロック リソース デジタル 変調器 (1st または 2nd 次 ) アナログ CT API メモリ (バイト数) アナログ SC 1st およ び 2nd 1st フラッシュ 2nd 1st RAM ピン (外 部入出力 ごと) 2nd CY8C29xxx, CY8C24x94, CY8C23x33, CY7C64215, CY8CLED04 / 16, CY8CLED0xD, CY8CLED0xG, CY8CTST120, CY8CTMG120, CY8CTMA120, CY8C28x45, CY8C28x43, CY8C28x52, CY8CPLC20, CY8CLED16P01 CY8C27 / 24 / 22xxx, CY8CLED08 1 0 1 2 273 322 8 1 1 0 1 2 226 275 8 1 その他のコンバータ向け ADC 選択ガイドは、AN2239 をご覧ください。当ユーザ モジュールを使用し た、構成済みの機能的なプロジェクト例は下記のウェブサイトでご覧ください。 www.cypress.com/psocexampleprojects. 特性および概要 6 ~ 14-bit 分解能 シンクロナス 8-bit PWM 出力が可能 ディファレンシャル入力を選択可能 符号付きまたは符号なしの データ フォーマット 最大 15.6ksps までのサンプリング速度 (6-bit 分解能 ) 入力範囲は内部及び外部リファレンス オプションによって選択可能 内部または外部クロック Note このユーザ モジュールは、29k ファミリで使用すると、さらに 6mA を消費します。 代わりに、 ADCINCVR ユーザ モジュールを使用してください。 ADCINC は差動または単一入力 ADC で、6 ~ 14 ビットになります。 データ クロックの最大周波数は 8MHz ですが、より高い直線性を確保するためには、最大周波数は 2MH zにしてください。 この ADC は、デジタル ブロックではなくハードウェア デシメータを使用して実装しているため、1 個のみ設置で きます。 これは最もリソース効率の高い ADC です。2 次変調器はスイッチド キャパシタ ブロックを追 加することで実装することが可能であり、8MHz のデータ クロックでもより高い直線性を達成します。 タイミングは 8 ビット PWM で実装され、入力サンプルと同期する変調したパルス幅が得られます。 ADCINC は n ビットの分解能で出力を生成するために、2n–1 の積分サイクルを必要とします。 Cypress Semiconductor Corporation Document Number: 001-66119 Rev. ** • 198 Champion Court • San Jose, CA 95134-1709 • 408-943-2600 Revised December 20, 2010 [+] Feedback Incremental ADC Figure 1. ADCINC ブロック ダイアグラム クイック スタート 事前設定されたプロジェクト例は下記のサイトからダウンロードしていただけます。 www.cypress.com/psocexampleprojects. ADCINC プロジェクトを作成するには 1. PSoC Designer から New Project (新規プロジェクト)を選択してください。 2. 新規プロジェクトのダイアログ ボックスで、Designer Only Project を選択します。. プロジェク トの名前と保存先を選択し、OK をクリックします。. 3. そして New Base Part ダイアログ ボックスで、該当するユーザ モジュールをサポートするデバ イスをひとつ選択します。 このデータシートの始めにあるリソース表をご覧ください。 4. そして User Module Catalog (ユーザ モジュール カタログ)で ADC リストの展開をクリッ クします。 ADCsADCINC フォルダーを展開します。ADCINC folder. User Module Catalog が表示されていない場合は、 View (表示)をクリックし、User Module Catalog を選択して ください。 . 5. ADCINC には一段変調器または二段変調器を備えたものがあります。 どちらのバージョンを使ったら いいか不明な場合は、どちらかの上で右クリックして データシートを選択し、決定する前にもう 一度シートを見直してください。 6. ユーザ モジュール を右クリックし、Place を選択します。. Document Number: 001-66119 Rev. ** Page 2 of 24 [+] Feedback Incremental ADC 機能説明 ADCINC は以下の図で示すように、単一のアナログ スイッチド キャパシタ PSoC ブロック、ひとつの デジタル PSoC ブロック、およびデシメータで構成される1次変調器を提供します。 Figure 2. 1次変調器を備えた ADCINC の回路図 Figure 3. 2次変調器を備えた ADCINC の回路図 ADCINC の範囲は ±VRef で設定されます。VRef は PSoC Designer の Global Resources ウィンドウで 設 定できます。 固定スケールの場合は、VRef には VBandgap, または 1.6 VBandgap を設定してください。調 整可能なスケールの場合は、VRef は Port 2[6] に設定してください。供給比メトリック スケールの場合、 VRef は VDD / 2 に設定してください。 アナログ ブロックは、リセット可能な積分器として構成されます。 出力極性によって、リファレンス制 御は、リファレンス電圧が入力に加算または入力から減算され、積分器に置かれるように構成されま す。リファレンス制御は、積分器の出力を AGND に向かって引き戻そうとします。 積分器が 2Bits 回作 動し、出力電圧コンパレータがこれらの回数の正の 「n」の場合、出力の残留電圧 (Vresid) は以下のよう になります。 Document Number: 001-66119 Rev. ** Page 3 of 24 [+] Feedback Incremental ADC Equation 1 Equation 2 この式は、この ADC の入力範囲が ±VRef であり、分解能 (LSB) が VRef / 2Bits-1 であり、変換が終わった ときの出力電圧が残留電圧として定義されることを示しています。 Vresid は常に VRef 未満なので、LSB の半分未満の Vresid / 2Bits は無視できます。 積分器をインクリメンタル ADC として機能させるには、以下のデジタル リソースを使用します。 正確な積分サイクル数をカウントする PWM。 出力コンパレータが正の期間のサイクル数を累積するためにインクリメンタルモードで構成される デシメータ。 Note CAUTION: このモジュールを配置する場合、アナログ ブロックとデジタル ブロックの両方で同じ ソース クロックを構成する必要があります。そうしないと、正常に動作しません。 PWM は、256カウントごとに割り込みを生成するように設定されています。これにより、入力は1 積分サイクルと等しい64回サンプリングされます。 デシメータ カウンタは、これらの積分サイクルの 2Bits / 64 を累積するように設定されています。 累積値は、積分時間の最初と最後にサンプリングされま す。積分をリセットし、結果を処理するために、1サイクルを追加します。 Figure 4. ADCINC のタイミング ACDINC 制御は割り込みベースで、サンプル時間は比較的長いので、サンプルの処理中にプロセッサを 待機させるのは合理的ではありません。 ADC ルーチンとメインプログラム間の主な通信は、ポーリング 可能なデータ使用可能を示すフラグです。 API は、データフラグを確認し、データを取得するために使 用できます。 データ ハンドラは、ポーリング ベースとして設計されています。割り込みベースのデータ ハンドラが 必要な場合は、アセンブラ ファイル ANDINCINT.asm 内にある割り込みルーチン _ADCINC_ADConversion_ISR にアプリケーション固有のデータ ハンドラ コードを追加できます。 コー ドを挿入する点は、はっきりマークされています。 Document Number: 001-66119 Rev. ** Page 4 of 24 [+] Feedback Incremental ADC 下の周波数領域のマグニチュード プロットでは、サンプル レート、 14-bit Fnom = 1.0 となるように周波 数を標準化しています。-3 dB 変化するポイントは .443 ∞ Fnom であり、マグニチュードは FS の整数倍 のところでゼロになります。 ADCINCPWM は 14 ビットの分解能に対して設定されており、実際には、 公称の出力速度より 16385 倍速くサンプリングを行うので、ナイキスト限界は 8,192 高く、Fnom の 13 オクターブ上になり、これによりアンチエイリアス フィルタの要件が大幅に低減されます。ナイキスト 限界は 13 ビットの分解能では 12 オクターブ、12 ビットの分解能では 11 オクターブなどとなります。 Figure 5. 周波数領域のマグニチュード プロット Document Number: 001-66119 Rev. ** Page 5 of 24 [+] Feedback Incremental ADC DC 電気的特性と AC 電気的特性 以下の値は、拡張された性能と最初の特性データを表わしています。特に指定されている場合を除き、 TA = 25°C、Vdd = 5.0V、Power HIGH、オペアンプ バイアス LOW 、基準電圧は P2[4] で外部 2.5V と接 続され、範囲は 1.25 を P2[6] 外部 Vref に接続した状態を基準とします。 Table 1. 5.0V 2nd 次変調器の DC 電気的特性と AC 電気的特性 パラメータ 標準値 制限 単位 条件および注記 入力 入力電圧範囲 --- Vss ~ Vdd V 入力容量 1 3 --- pF 入力インピーダンス 1 / (C*clk) --- Ω 分解能 --- 8 ビット サンプリング速度 --- .125 ~ 31.25 ksps SNR 46 --- dB DNL 0.1 --- LSB INL 0.5 --- LSB 10 --- mV リファレンス ゲイン誤差を含む 3.0 -- % FSR リファレンス ゲイン誤差を除く 2 0.1 -- % FSR Low Power 時 180 --- uA Med Power 時 840 --- uA High Power 時 3450 --- uA データ クロック --- 0.032 ~ 8.0 MHz Ref Mux = Vdd / 2 ± Vdd / 2 DC 精度 オフセット誤差 アナログ カラム クロック 2 MHz ゲイン誤差 動作電流 Document Number: 001-66119 Rev. ** デジタル ブロックへの入力お よびアナログ コラムのクロッ ク Page 6 of 24 [+] Feedback Incremental ADC Table 2. 5.0V 1st 次変調器の DC 電気的特性と AC 5.0V 電気的特性 パラメータ 標準値 制限 単位 条件および注記 入力 入力電圧範囲 --- Vss ~ Vdd Ref Mux = Vdd / 2 ± Vdd / 2 入力容量 1 3 --- pF 入力インピーダンス 1 / (C*clk) --- Ω 分解能 --- 8 ビット サンプリング速度 --- .125 ~ 31.25 ksps SNR 44 --- dB DNL 0.6 --- LSB INL 0.7 --- LSB 5 --- mV リファレンス ゲイン誤差を含む 3.0 -- % FSR リファレンス ゲイン誤差を除く 2 0.1 -- % FSR Low Power 時 50 --- uA Med Power 時 500 --- uA High Power 時 1900 --- uA データ クロック --- 0.032 ~ 8.0 MHz DC 精度 オフセット誤差 アナログ カラム クロック 2MHz ゲイン誤差 動作電流 Document Number: 001-66119 Rev. ** デジタル ブロックへの入力お よびアナログ コラムのクロッ ク Page 7 of 24 [+] Feedback Incremental ADC 以下の値は、拡張された性能と最初の特性データを表わしています。特に指定されている場合を除き、 TA = 25°C、Vdd = 5.0V、Power HIGH、オペアンプ バイアス LOW、基準電圧は P2[4] で外部 2.5V と接 続され、範囲は 1.25 を P2[6] 外部 Vref に接続した状態を基準とします。 Table 3. 3.3V 2nd 次変調器の DC 電気的特性と AC 電気的特性 パラメータ 標準値 制限 単位 条件および注記 入力 入力電圧範囲 --- Vss ~ Vdd V 入力容量 1 3 --- pF 入力インピーダンス 1 / (C*clk) --- Ω 分解能 --- 8 ビット サンプリング速度 --- .125 ~ 31.25 ksps SNR 46 --- dB DNL 0.1 --- LSB INL 0.5 --- LSB 10 --- mV リファレンス ゲイン誤差を含む 3.0 -- % FSR リファレンス ゲイン誤差を除く 2 0.3 -- % FSR Low Power 130 --- uA Med Power 840 --- uA High Power 3370 --- uA データクロック --- 0.032 ~ 8.0 MHz Ref Mux = Vdd / 2 ± Vdd / 2 DC 精度 オフセット誤差 コラムのクロック 2 MHz ゲイン誤差 動作電流 Document Number: 001-66119 Rev. ** デジタル ブロックへの入力お よびアナログ コラムのクロッ ク Page 8 of 24 [+] Feedback Incremental ADC Table 4. 3.3V 1st 次変調器の DC 電気的特性と AC 電気的特性 パラメータ 標準値 制限 単位 条件および注記 入力 入力電圧範囲 --- Vss ~ Vdd V 入力容量 1 3 --- pF 入力インピーダンス 1 / (C*clk) --- Ω 分解能 --- 8 ビット サンプリング速度 --- .125 ~ 31.25 ksps SNR 44 --- dB DNL 0.6 --- LSB INL 0.8 --- LSB 6 --- mV リファレンス ゲイン誤差を含む 3.0 -- % FSR リファレンス ゲイン誤差を除く 2 0.3 -- % FSR Low Power 50 --- uA Med Power 500 --- uA High Power 1900 --- uA データ クロック --- 0.032 ~ 8.0 MHz Ref Mux = Vdd / 2 ± Vdd / 2 DC 精度 オフセット誤差 コラム クロック 2 MHz ゲイン誤差 動作電流 デジタル ブロックへの入力お よびアナログ コラムのクロッ ク 電気的特性に関する注意事項 1. 入出力ピンを含みます。 2. リファレンス ゲイン誤差は、テスト マルチ プレクサによって経路指定され、ピンに戻される VRefHigh および VRefLow と外部リファレンスを比較して測定します。 Document Number: 001-66119 Rev. ** Page 9 of 24 [+] Feedback Incremental ADC 配置 1 次変調器を設計するには、2つの PSoC ブロック、1つのデジタルブロック、および 1 つのアナログ ブロックが必要です。 アナログ ブロックは、どのスイッチド キャパシタ PSoC ブロックにも配置でき ます。 考慮する必要があるのは、入力とクロックを使用できるかどうかだけです。ただしデジタル ブロ ックは、ハードウェア デシメータに入力できなければなりません。CY8C27xxx ファミリで認証されて いるデジタルブロックは、DBB01、DBB02、DBB11、および DCB12 です。その他のデバイス ファミリ においては、どのデジタル ブロックでも使用できます。 デジタル ブロックにもアナログ ブロックにも に、同じクロックを選択する必要があります。クロックが同じでなければこのユーザ モジュールは正確 に機能しません。 2 次変調器の設計には、2 つ目のスイッチド キャパシタ PSoC ブロックが必要です。両方のアナログブ ロックは、コラム コンパレータバスを共有できるように、同じコラムに配置しなければなりません。 デ ジタル ブロックには、1 次および2次変調器の両方に対するのと同じ制限がかかります。 アナログおよびデジタル ブロックでは多数の配置が可能ですが、ADCINC は、PSoC デバイス唯一のハ ードウェア デシメータも使用します。あるコンフィグレーションに指定できる ADCINC インスタンス は1つだけです。ダイナミック リコンフィグレーションを使用すると、ブロックが重ならない限り、複 数のコンフィグレーションをロードできます。 どちらのインスタンスも機能しているように見えます が、一番最近ロードされたインスタンスの出力のみが有効です。 パラメータおよびリソース ADCINC PWM インスタンスを配置したら、正しい動作を実現するために、パラメータ、分解能、デー タ フォーマット、データ クロック、PosInput 信号マルチ プレクサの選択、 NegInput マルチ プレクサの 選択、NegInput ゲイン、クロック位相、パルス幅、および PWM 出力を必ず設定してください。 データ フォーマット この選択により、返される結果のデータ フォーマットが決まります。 符号付きの結果は、選択し た分解能の 2 の補数です。 分解能 この選択により、返される結果のデータ フォーマットが決まります。 分解能の有効な選択肢は、6 ~ 14 ビットです。 データ クロック データ クロックによりサンプリング速度が決まります。 このクロックは、1 次変調器設計の PSoC ブロックと、2 次設計の 3 つの PSoC ブロックの両方に反映されます。 Note IMPORTANT: デジタル ブロックとアナログ コラム クロックの両方に、必ず同じクロックを選択し なければなりません。クロックが同じでなければ、このユーザ モジュールは正確に機能しませ ん。 CPU が 24MH zで動作している場合は、データ クロックを 250kHz 未満で設定しないでくださ い。CPU が 24MH zで動作している場合でなければ、125kHz まで値を下げられます。 データ ク ロックは CPU クロックを超えてはなりません。常に CPU クロックと同じか、それより低く設定し てください。 PWM はデータクロックの 256 カウントごとに割り込みを発生させるように設定され ています。カウンタは、これらのサイクルの 2Bits-6 間の信号を積分します。積分器をリセットし、 Document Number: 001-66119 Rev. ** Page 10 of 24 [+] Feedback Incremental ADC データを処理するために、追加サイクルが必要です。 サンプリング速度は以下の式 3 で定義されま す。 Equation 3 データ クロックの使用可能な最大値は、8MH zです。これはスイッチド キャパシタ ブロックの制 限によります。 各種ビット レートの最大サンプリング速度 は、8MHz のクロック レートを使用し て計算できます。サンプリング速度は下の表に示されています。 分解能 最大サンプリング速度 6-bit 15.6 ksps 7-bit 10.4 ksps 8-bit 6.25 ksps 9-bit 3.4 ksps 10-bit 1.8 ksps 11-bit 976 sps 12-bit 480 sps 13-bit 242 sps 14-bit 121 sps サンプル ウィンドウは、ADC が遮断する通常モードの周波数を決定します。 これは以下のように 定義されます。 Equation 4 より高い周波数とその高調波を遮断するには、遮断周波数の偶数倍のサンプル ウィンドウを選択 します。 クロック位相 クロック位相の選択は、あるアナログ PSoC ブロックの出力を別のアナログ PSoC ブロックの入力 と同期させるために使用します。 スイッチド キャパシタ アナログ PSoC ブロックは、2 相クロッ ク (phi1、 phi2) を使用して、信号を取得および転送します。 通常、 ADCINC への入力は、 phi1 でサ ンプリングされます。 ユーザ モジュールの多くは、phi1 中に出力を自動的にゼロに設定し、 phi2 中しか有効な出力を供給しないため、問題が発生します。このようなモジュールの出力が ADCINC の入力に入力されると、有効な信号の代わりに自動的にゼロに設定された出力が取得されます。ク ロック位相を選択することで、入力信号を Phi2 中に取得するように、位相を交換できます。 Document Number: 001-66119 Rev. ** Page 11 of 24 [+] Feedback Incremental ADC PosInput ADC のメイン入力。PSoC Designer では、ユーザが有効な入力を選択できます。 NegInput ADC の差動入力を作成できるようにします。この入力は、NegInput ゲイン パラメータを使用して 重み付けできます。 差動入力に対比するような単一入力が必要な場合は、 NegInput ゲイン パラメ ータの値に 「Disconnected (切断)」を設定します。 PSoC Designer では、ユーザが NegInput パ ラメータに対して適正な入力を選択できます。 NegInput ゲイン 負の入力ゲインを選択します。シングル エンドの入力が必要な場合は、この値に 「Disconnected (切断)」を設定します。 パルス幅 PWM パルス幅は、1 ~ 255 カウントの値に設定できます。 値が設定されていない場合は、 GetSamples 関数が呼び出されると、ユーザ モジュールは PWM パルス幅を自動的に 1 に設定しま す。 PWM 出力 出力パラメータは、無効にすることや 4 つのグローバル出力信号のひとつに接続することができま す。 割り込み生成制御 以下のパラメータにアクセスできるのは、PSoC Designer の Enable Interrupt Generation Control (割 り込み生成制御をイネーブルにする)チェック ボックスがチェックされている場合だけです。 これは Project (プロジェクト)メニューの > Setting... (設定)から > Device Editor (デバイス エディタ)を 選択すると使用できます。 IntDispatchMode IntDispatchMode パラメータを使用して、同一ブロック内の異なるオーバレイ内に存在する複数の ユーザ モジュールで共用している割り込みについて、割り込みをどのように処理するかを指定し ます。 「ActiveStatus」を選択すると、ファームウェアは共用されている割り込み要求を処理する 前に、どのオーバレイがアクティブかをテストします。このテストは、共用割り込みが要求される たびに行われます。 このためにレイテンシが付加され、共用割り込み要求を処理する非決定性のプ ロセスも生じますが、RAM は不要です。 「OffsetPreCalc」を選択すると、ファームウェアはオー バレイが最初にロードされたときだけ共用割り込みの要求のソースを計算します。 この計算によっ て割り込みレイテンシは減少し、共用割り込み要求を処理する決定性のプロセスが生じますが、こ れは RAM のバイトを消費します。 Document Number: 001-66119 Rev. ** Page 12 of 24 [+] Feedback Incremental ADC アプリケーション プログラミング インタフェース アプリケーション プログラミング インタフェース (API) ルーチンは設計者がより高度なレベルでモジュ ールを処理できるようにユーザ モジュールの一部として提供されます。このセクションでは、 「include」ファイルによって提供される各機能に対するインタフェースおよび定数を示します。 Note ここでは、全てのユーザ モジュール API と同じように、API 関数を呼び出すことで A と X レジ スタの値が変更されることがあります。 関数を呼び出す場合、呼出し後に A と X の値が必要に なるならば、必ず呼び出し前に A と X の値を保存してください。PSoc Designer のバージョン 1.0 以降、効率性の観点から、この 「registers are volatile (レジスタの揮発性)」ポリシーが採 用されています。C コンパイラは自動的にこの条件を処理します。 アセンブラ言語のプログラマ は、コードがこのポリシーを遵守していることも確認しなければなりません。ユーザ モジュール API 関数の中には、A と X を変更しないものもありますが、今後も変更されないという保証はあ りません。 ユーザ モジュールを配置するたびに、インスタンス名が割り当てられます。 デフォルトでは、 PSoC Designer プロジェクトで、このユーザ モジュールの最初のインスタンスに ADCINC_1 を割り当てま す。これは識別子の構文ルールに従った一意の値に変更できます。 割り当てたインスタンス名が、全て のグローバル関数名、変数、および定数記号の接頭語になります。 以下の説明では、簡潔にするため に、インスタンス名を ADCINC に短縮しています。 ADCINC_Start 説明 このユーザ モジュールで必要な全ての初期化を実行し、スイッチド キャパシタ PSoC ブロックの 出力レベルを設定します。 PWM が起動します。 C プロトタイプ void ADCINC_Start (BYTE bPowerSetting) アセンブラ mov A, bPowerSetting lcall ADCINC_Start パラメータ bPowerSetting: 出力レベルを指定する 1 バイト。リセットとコンフィグレーションの後、ADCINC に割り当てられたアナログ PSoC ブロックの電力が遮断されます。C およびアセンブラで指定され ている記号名と関連する値を以下の表に示します。 記号名 値 ADCINC_OFF 0 ADCINC_LOWPOWER 1 ADCINC_MEDPOWER 2 ADCINC_HIGHPOWER 3 戻り値 なし Document Number: 001-66119 Rev. ** Page 13 of 24 [+] Feedback Incremental ADC 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 ADCINC_SetPower 説明 スイッチド キャパシタ PSoC ブロックの出力レベルを設定します。 C プロトタイプ void ADCINC_SetPower (BYTE bPowerSetting) アセンブラ mov A, bPowerSetting lcall ADCINC_SetPower パラメータ bPowerSetting: Start エントリ ポイントで使用した bPowerSetting パラメータと同じ。 戻り値 なし 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 ADCINC_Stop 説明 スイッチド キャパシタ PSoC ブロックの出力レベルをオフに設定します。 C プロトタイプ void ADCINC_Stop (void) アセンブラ lcall ADCINC_Stop パラメータ なし 戻り値 なし 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 Document Number: 001-66119 Rev. ** Page 14 of 24 [+] Feedback Incremental ADC ADCINC_GetSamples 説明 指定したサンプル数 ADC を実行します。 C プロトタイプ void ADCINC_GetSamples (BYTE bNumSamples) アセンブラ mov A, bNumSamples lcall ADCINC_GetSamples パラメータ bNumSamples: 変換するサンプル数を設定する 8-bit の値。 値が 「0」の場合、ADC は継続的に実 行されます。 戻り値 なし 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 現時 点では , CUR_PP ページ ポインタ レジスタのみが変更されています。 ADCINC_StopADC 説明 ADC を即座に停止します。PWM は実行を続けます。 C プロトタイプ void ADCINC_StopADC (void) アセンブラ lcall ADCINC_StopADC パラメータ なし 戻り値 なし 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 ADCINC_fIsDataAvailable 説明 サンプリングしたデータが使用できるかどうかチェックします。 Document Number: 001-66119 Rev. ** Page 15 of 24 [+] Feedback Incremental ADC C プロトタイプ BYTE ADCINC_fIsDataAvailable(void) アセンブラ lcall ADCINC_fIsDataAvailable パラメータ なし 戻り値 データが変換され、読み取れる状態の場合は、非ゼロ値を返します。 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 現時 点では , CUR_PP ページポインタレジスタのみが変更されています。 ADCINC_iGetData 説明 変換したデータを符号付き整数として返します。データサンプルがすぐ使用できるかどうか確認す るためには、 ADCINC_bfIsDataAvailable() を呼び出してください。 C プロトタイプ INT ADCINC_iGetData(void) アセンブラ lcall ADCINC_iGetData ; Data will be in A and X upon return パラメータ なし 戻り値 変換したデータ サンプルを 16-bit の 2 の補数の形で返します。 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 現時 点では , CUR_PP ページ ポインタ レジスタのみが変更されています。 ADCINC_wGetData 説明 変化したデータを符号なし整数として返します。データ サンプルがすぐ使用できるかどうか確認 するためには、 ADCINC_bfIsDataAvailable() を呼び出してください。 C プロトタイプ WORD ADCINC_wGetData(void) Document Number: 001-66119 Rev. ** Page 16 of 24 [+] Feedback Incremental ADC アセンブラ lcall ADCINC_wGetData ; Data will be in A and X upon return パラメータ なし 戻り値 変換した 16-bit の符号なしデータ サンプルを返します。 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 現時 点では , CUR_PP ページ ポインタ レジスタのみが変更されています。 ADCINC_cGetData 説明 変換したデータを符号付き文字として返します。データサンプルがすぐ使用できるかどうか確認す るためには、 ADCINC_bfIsDataAvailable() を呼び出してください。 C プロトタイプ CHAR ADCINC_cGetData(void) アセンブラ lcall ADCINC_cGetData ; Data will be in A upon return パラメータ なし 戻り値 変換したデータ サンプルを 8-bit の 2 の補数の形で返します。 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 現時 点では , CUR_PP ページ ポインタ レジスタのみが変更されています。 ADCINC_bGetData 説明 変換したデータを符号なし文字として返します。データサンプルがすぐ使用できるかどうか確認す るためには ADCINC_bfIsDataAvailable() を呼び出してください。 C プロトタイプ BYTE ADCINC_bGetData(void) アセンブラ lcall ADCINC_bGetData Document Number: 001-66119 Rev. ** ; Data will be in A upon return Page 17 of 24 [+] Feedback Incremental ADC パラメータ なし 戻り値 変換した 8-bit の符号なしデータサンプルを返します。 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 現時 点では , CUR_PP ページ ポインタ レジスタのみが変更されています。 ADCINC_iClearFlagGetData 説明 データ準備完了フラグを解除し、変換したデータを符号付き整数として取得します。そして、デー タ フラグがまだリセットされているかどうか確認します。もし、データフラグがリセットされて いなかったら、それはデータが更新された場合です。 これにより ADC 割り込みルーチンが、収集 時に応答を更新していないことが確認されます。 C プロトタイプ INT ADCINC_iClearFlagGetData(void) アセンブラ lcall ADCINC_iClearFlagGetData ; Data will be in A and X upon return パラメータ なし 戻り値 変換したデータ サンプルを 16-bit の 2 の補数の形で返します。 副作用 グローバル変数 ADCINC_bfStatus をゼロに設定します。A および X レジスタは、今回、または今 後、この関数を実装することによって変更される可能性があります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じことが言えます。 必要に応じて、 fastcall16 関数の呼び出しでこれらの値を保存してください。 現時点では , CUR_PP ページ ポイン タ レジスタのみが変更されています。 ADCINC_wClearFlagGetData 説明 データ準備完了フラグを解除し、変換したデータを符号なし整数として取得します。そして、デー タフラグがまだリセットされているかどうか確認します。もし、データフラグがリセットされてい なかったら、それはデータが更新された場合です。これにより ADC 割り込みルーチンが、収集時 に応答を更新しないことが確認されます。 C プロトタイプ WORD ADCINC_wClearFlagGetData(void) アセンブラ lcall ADCINC_wClearFlagGetData Document Number: 001-66119 Rev. ** ; Data will be in A and X upon return Page 18 of 24 [+] Feedback Incremental ADC パラメータ なし 戻り値 変換した 16-bit の符号なしデータ サンプルを返します。 副作用 グローバル変数 ADCINC_bfStatus をゼロに設定します。A および X レジスタは、今回、または今 後、この関数を実装することによって変更される可能性があります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じことが言えます。 必要に応じて、 fastcall16 関数の呼び出しでこれらの値を保存してください。 現時点では , CUR_PP ページ ポイン タ レジスタのみが変更されています。 ADCINC_cClearFlagGetData 説明 データ準備完了フラグを解除し、変換したデータを符号付き文字として取得します。データ フラ グがまだリセットされているかどうか確認します。もし、データフラグがリセットされていなかっ たら、それはデータが更新された場合です。これにより ADC 割り込みルーチンが、収集時に応答 を更新していないことが確認されます。 C プロトタイプ CHAR ADCINC_cClearFlagGetData(void) アセンブラ lcall ADCINC_cClearFlagGetData ; Data will be in A upon return パラメータ なし 戻り値 変換したデータ サンプルを 8-bit の 2 の補数の形で返します。 副作用 グローバル変数 ADCINC_bfStatus をゼロに設定します。A および X レジスタは、今回、または今 後、この関数を実装することによって変更される可能性があります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じことが言えます。 必要に応じて、 fastcall16 関数の呼び出しでこれらの値を保存してください。 現時点では , CUR_PP ページ ポイン タ レジスタのみが変更されています。 ADCINC_bClearFlagGetData 説明 データ準備完了フラグを解除し、変換したデータを符号なし文字として取得します。データ フラ グがまだリセットされているかどうか確認します。もし、データフラグがリセットされていなかっ たら、それはデータが更新された場合です。これにより ADC 割り込みルーチンが、収集時に応答 を更新していないことが確認されます。 C プロトタイプ BYTE ADCINC_bClearFlagGetData(void) Document Number: 001-66119 Rev. ** Page 19 of 24 [+] Feedback Incremental ADC アセンブラ lcall ADCINC_bClearFlagGetData ; Data will be in A upon return パラメータ なし 戻り値 変換した 8-bit の符号なしデータ サンプルを返します。 副作用 グローバル変数 ADCINC_bfStatus をゼロに設定します。A および X レジスタは、今回、または今 後、この関数を実装することによって変更される可能性があります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じことが言えます。 必要に応じて、 fastcall16 関数の呼び出しでこれらの値を保存してください。 現時点では , CUR_PP ページ ポイン タ レジスタのみが変更されています。 ADCINC_fClearFlag 説明 変換結果が使用可能かどうかを返し、フラグをリセットします。 C プロトタイプ BYTE ADCINC_fClearFlag(void) アセンブラ lcall ADCINC_fClearFlag パラメータ なし 戻り値 状態レジスタの値を返します。 副作用 グローバル変数 ADCINC_bfStatus をゼロに設定します。A および X レジスタは、今回、または今 後、この関数を実装することにより変更される可能性があります。 大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じことが言えます。 必要に応じて、 fastcall16 関数の呼び出しでこれらの値を保存してください。 現時点では , CUR_PP ページ ポイン タ レジスタのみが変更されています。 ADCINC_WritePulseWidth 説明 PWM のパルス幅を変更します。 C プロトタイプ void ADCINC_WritePulseWidth(BYTE bPulseWidth) アセンブラ mov A, bPulseWidth lcall ADCINC_WritePulseWidth Document Number: 001-66119 Rev. ** Page 20 of 24 [+] Feedback Incremental ADC パラメータ bPulseWidth: PWM のパルス幅を設定します。 この値がゼロになっていなければ ADC は機能を停 止します。 戻り値 なし 副作用 A および X レジスタは、今回、または今後、この関数を実装することによって変更される可能性が あります。大容量メモリ モデル (CY8C29xxx) の全ての RAM ページ ポインタ レジスタにも同じこ とが言えます。 必要に応じて、fastcall16 関数の呼び出しでこれらの値を保存してください。 ファームウェア ソースコードの例 以下のサンプル コードでは、フラグ レジスタをポーリングし、データを入出力ピンの 1 本にシフト ア ウトするルーチンにデータを送信します。 ;;; Sample Code for the ADCINC ;;; Continuously Sample and Output Data to a pin. ;;; ;;; The user must provide the function to shift the data out. ;;; include "m8c.inc" ; part specific constants and macros include "PSoCAPI.inc" ; PSoC API definitions for all User Modules export _main _main: M8C_EnableGInt ; enable global interrupts mov a,ADCINC_HIGHPOWER ; set Power call ADCINC_Start mov a,00h ; set ADC to continuous sampling call ADCINC_GetSamples loop1: wait: call ADCINC_fIsDataAvailable ; poll flag jz wait call ADCINC_iClearFlagGetData ; reset flag and retrieve data ;; call shift_it_out ; (user provided) send data to output pin jmp loop1 Document Number: 001-66119 Rev. ** Page 21 of 24 [+] Feedback Incremental ADC C で記述した同じプロジェクトを以下に示します。 //-----------------------------------------------------------------------// Sample C Code for the ADCINC // Continuously Sample input voltage // //-----------------------------------------------------------------------#include <m8c.h> // part specific constants and macros #include "PSoCAPI.h" // PSoC API definitions for all User Modules INT iData; void main(void) { M8C_EnableGInt; // Enable Global Interrupts ADCINC_Start(ADCINC_HIGHPOWER); // Apply power to the SC Block ADCINC_GetSamples(0); // Have ADC run continuously for(;;){ while(ADCINC_fIsDataAvailable() == 0); // Loop until value ready ADCINC_iClearFlagGetData(); // Clear ADC flag and get data // Add user code here to use or display result } } コンフィグレーション レジスタ Table 5. 「ADC」アナログ スイッチド キャパシタ PSoC ブロックによって使用されるレジスタ レジスタ 7 6 5 ClockPhas 0 e 4 3 2 CR0 1 CR1 PosInputSource CR2 0 1 AZ 0 0 CR3 1 1 1 FSW0 NegInputSource 1 0 ACap NegInputGain 0 0 0 0 0 ADC は、1つまたは2つのスイッチド キャパシタ PSoC ブロックを使用します。 ブロックはアナログ 変調器を作成するために構成されています。変調器を構築するために、ブロックは、入力値をデジタル パルス ストリームに変換するリファレンス フィードバックを持つ積分器として構成します。入力マルチ プレクサは、デジタル化する信号を決定します。 ClockPhase は、スイッチのクロック位相だけでなく、スイッチド キャパシタ ブロック内のコンパレー タのクロック位相を制御します。 ACap はキャパシタ ACap 用の 32 の可能なキャパシタ サイズのバイナリ エンコーディングを含みま す。 InputSource フィールドは、コンバータによってデジタル化される入力信号を選択します。 このパラメ ータはデバイス エディタで設定します。 AZ と FSW0 は PWM 割り込みハンドラ および各種 API によって、積分器をリセットするために使用さ れます。 Document Number: 001-66119 Rev. ** Page 22 of 24 [+] Feedback Incremental ADC Table 6. PWM デジタル PSoC ブロックが使用するレジスタ レジスタ 7 6 5 4 3 2 関数 0 0 1 1 0 入力 0 0 0 1 クロック 出力 0 0 0 0 0 DR0 タイマ停止カウント値 (API がアクセスすることはありません) DR1 1 DR2 パルス幅 CR0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 イネーブル PWM は 256 カウントの間、タイマ機能を持つように構成されたデジタル PSoC ブロックです。 割り込 みに際して、デシメータが読み取られ、ADC 値が計算されます。 クロックは 16 のクロック ソースの 1 つから入力クロックを選択します。このパラメータはデバイス エ ディタで設定します。 Note 選択したソースは、ADC ブロックが存在するコラムのアナログ クロックを制御するためにも使 用する必要があります。 イネーブルが設定されると、PWM が有効化されます。これは ADCINC API によって変更および制御さ れます。 Table 7. デシメーション制御レジスタ ビット 7 6 5 4 3 DEC_CR0 0 0 0 0 ICLKS0 DEC_CR1 1 1 0 0 ICLKS1 DEC_DH デシメータの上位バイト出力 DEC_DL デシメータの下位バイト出力 Document Number: 001-66119 Rev. ** 2 0 1 DCol 0 DCLKS0 DCLKS1 Page 23 of 24 [+] Feedback Incremental ADC バージョン ヒストリー バージョン 1.1 著者 DHA 説明 以下の項目を確認するために DRC を付加しました。 1. ソース クロックがデジタル リソースとアナログ リソースで違ったものであること 2. ADC クロックが CPU クロックより上位であること Note PSoC Designer 5.1 は、すべてのユーザ モジュール データシートにおいてバージョン ヒストリ ーを導入しています。 このセクションでは、ユーザ モジュールの過去のバージョンと現在のバー ジョンとの違いに関して高度な解説を掲載しています。 Document Number: 001-66119 Rev. ** Revised December 20, 2010 Page 24 of 24 Copyright © 2002-2010 Cypress Semiconductor Corporation. The information contained herein is subject to change without notice. Cypress Semiconductor Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control or safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. PSoC Designer™ and Programmable System-on-Chip™ are trademarks and PSoC® is a registered trademark of Cypress Semiconductor Corp. All other trademarks or registered trademarks referenced herein are property of the respective corporations. Any Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source Code except as specified above is prohibited without the express written permission of Cypress. Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress' product in a life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. Use may be limited by and subject to the applicable Cypress software license agreement. [+] Feedback