AN86439 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 著者: Rajiv Badiger 関連プロジェクト: あり 関連製品ファミリ: PSoC 4、PSoC アナログ コプロセッサ ソフトウェア バージョン: PSoC Creator™3.3 SP2 以降 関連アプリケーション ノート: アプリケーション ノートの完全なリストについては、ここをクリックしてください。 更にサンプル コードをお求めでしょうか?以下の通りご対応いたします。 PSoC のサンプル コードのリストにアクセスするには、サンプル コードのウェブページをご覧ください。PSoC 4 のビデオ ライブ ラリについてはここからご覧ください。 AN86439 は特徴を実証するための様々な用途例を使用し、PSoC® 4 および PSoC アナログ コプロセッサの GPIO ピンを効果 的に使用する方法を説明します。本アプリケーション ノートの主な内容は GPIO の概要、設定オプション、混合信号の用途、割り 込みや低電力時の動作を含めています。 目次 1 はじめに ....................................................................2 6.3 デジタル ロジック ゲートから出力を駆動する .... 37 2 PSoC リソース ...........................................................2 2.1 PSoC Creator ..................................................3 2.2 コード用例 .........................................................4 6.4 双方向ピンの使用 ........................................... 38 6.5 GPIO 入力/出力同期の設定 ......................... 40 6.6 データ レジスタで GPIO をより速くトグル .......... 45 2.3 PSoC Creator ヘルプ .......................................5 6.7 GPIO 出力イネーブル ロジックの設定 .............. 48 2.4 テクニカル サポート ...........................................5 6.8 ピン割り込み ................................................... 50 GPIO ピンの基本情報................................................6 6.9 ファームウェアで GPIO 割り込みの設定 ........... 52 3 3.1 GPIO ピンの物理構造 .......................................6 6.10 GPIO でアナログとデジタルの両方を使用 ........ 54 3.2 ピン配線 ...........................................................9 6.11 3.3 スタートアップおよび低電力動作 ...................... 19 より大きな駆動/シンク電流のために ピンを連動 ..................................................... 57 3.4 GPIO 割り込み................................................ 20 6.12 ディープスリープモードにおける 制御レジスタの取り扱い .................................. 60 4 過電圧耐性 (OVT) ピン ............................................ 22 5 PSoC Creator での GPIO ピン ................................. 22 7 関連アプリケーション ノート....................................... 63 5.1 ピン コンポーネント シンボル ............................ 22 8 まとめ ...................................................................... 63 5.2 ピンコンポーネントのカスタマイザ ..................... 22 9 著者について ........................................................... 63 5.3 ピン コンポーネント割り込み............................. 25 5.4 手動のピン割り当て ......................................... 28 A 付録 A: PSoC 4 と PSoC アナログ コプロセッサの GPIO と PSoC 1、PSoC 3、PSoC 5LP の GPIO の比較 ... 64 5.5 PSoC Creator の API ..................................... 28 5.6 GPIO ピンのデバッグ ロジック ......................... 29 5.7 複数の GPIO ピンを論理ポートとして追加 ........ 29 5.8 オフチップコンポーネントについて..................... 32 6 GPIO のヒントおよびコツ .......................................... 34 6.1 LED をトグル................................................... 35 6.2 入力の読み出しと出力への書き込み ................ 36 www.cypress.com B 付録 B: PSoC 4 開発基板 ....................................... 64 改訂履歴 .......................................................................... 65 ワールドワイドな販売と設計サポート ................................. 66 製品 ................................................................................. 66 PSoC®ソリューション ........................................................ 66 サイプレス開発者コミュニティ ............................................ 66 テクニカル サポート .......................................................... 66 文書番号: 001-97886 Rev. *A 1 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 1 はじめに PSoC は、従来の MCU と比べてより多くの機能を提供する柔軟な汎用 I/O (GPIO) アーキテクチャを有しています。PSoC GPIO は従来の MCU のようにファームウェア レジスタの設定で制御することだけでなく、カスタム デジタル ロジックおよびア ナログ ブロック信号からも駆動されます。本アプリケーション ノートは PSoC 4 および PSoC アナログ コプロセッサ GPIO ピ ンの基本情報および異なる機能のために、効果的な使用方法を説明します。 本アプリケーション ノートは読者が PSoC Creator™および PSoC 4 アーキテクチャーに精通されていることを前提としていま す。PSoC 4 または PSoC アナログ コプロセッサが初めてである場合、「AN79953 – Getting Started with PSoC 4」または 「AN211293 - Getting Started with PSoC Analog Coprocessor」をそれぞれ参照してください。PSoC Creator を初めてご使 用になる場合は「PSoC Creator ホーム ページ」を参照ください。デバイス パッケージまたは GPIO 仕様の詳細情報は 「PSoC 4 データシート」または「PSoC アナログ コプロセッサ データシート」を参照ください。デバイス 1 および PSoC Creator に精通されている場合「GPIO のヒントおよびコツ」の節に移動してください。 1 注:「PSoC」または「デバイス」はここで、特に指定しない限り、PSoC 4 および PSoC アナログ コプロセッサの両デバイスを 指します。 2 PSoC リソース サイプレスは、www.cypress.com に大量のデータを掲載しており、ユーザーがデザインに適切な PSoC デバイスを選択し、 デバイスをデザインに迅速で効果的に統合する手助けをしています。リソースの包括的なリストについては「KBA86521 How to Design with PSoC 3, PSoC 4, PSoC 5LP, and PSoC Analog Coprocessor」を参照ください。以下は PSoC 4 のリ ソースの要約です。 概要: PSoC Portfolio、PSoC Roadmap データシートは PSoC 3、PSoC 4、PSoC 5LP および PSoC アナログ コプロセッサ デバイス ファミリの電気的仕様を説明し、提供します。 CapSense® デザイン ガイド: PSoC 3、PSoC 4、 PSoC 5LP および PSoC Analog Coprocessor デバイス ファミリを使用して、静電容量タッチ センシング アプリケーションを設計する方法 について説明いたします。 製品セレクター: PSoC 1、PSoC 3、PSoC 4、 PSoC 5LP または PSoC Analog Coprocessor。 また、PSoC Creator にはデバイス選択ツール が含まれています。 アプリケーション ノートおよびコード用例は、基 本的なレベルから上級者レベルまで、幅広い トピックを提供します。多くのアプリケーション ノート はサンプル コードを含んでいます。 テクニカル リファレンス マニュアル (TRM) は、 PSoC 3、PSoC 4、PSoC 5LP および PSoC ア ナログ コプロセッサ デバイス ファミリのそれぞ れにおける、アーキテクチャおよびレジスタの詳 細な説明を提供します。 www.cypress.com 文書番号: 001-97886 Rev. *A 開発キット: CY8CKIT-040、CY8CKIT-041、CY8CKIT042、CY8CKIT-042-BLE、CY8CKIT-044、 CY8CKIT-046 お よ び CY8CKIT-048 Pioneer キットは使いやすく、安価な開発 プラットフォームです。これらのキットには、 Arduino™ 互 換 シ ー ル ド お よ び Digilent® Pmod™ドーターカード用のコネクタを搭載し ています。 CY8CKIT-049 は、PSoC 4 デバイスをサン プリングする用途の低コスト プロトタイプ プラットフォームです。 CY8CKIT-001 はすべての PSoC ファミリ デバイスの共通開発プラットフォームです。 MiniProg3 デバイスはフラッシュのプログラムと デバッグ用のインターフェースを提供します。 2 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 2.1 PSoC Creator PSoC Creator は Windows ベースの統合開発環境 (IDE) であり、無料で利用できます。これにより、PSoC 3、PSoC 4、 PSoC 5LP および PSoC アナログ コプロセッサに基づく、システムのハードウェアとファームウェアの同時設計が可能です。 図 1 に示すように、PSoC Creator により以下のことが可能です: 1. コンポーネントをドラッグ アンド ドロップして、メ イン デザイン ワークスペースでハードウェア シ ステム デザインを構築 2. PSoC ハードウェアとアプリケーション ファーム ウェアを同時設計 3. コンフィギュレーション ツールを用いてコンポーネントを 構成 4. 100 以上のコンポーネントを含むライブラリを利用 5. コンポーネント データシートの閲覧 図 1. PSoC Creator の特長 www.cypress.com 文書番号: 001-97886 Rev. *A 3 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 2.2 図 2. PSoC Creator のサンプル コード コード用例 PSoC Creator は多数のコード用例のプロジェクトを含んでいます。 これらのプロジェクトは図 2 に示すように、PSoC Creator のスタート ページからアクセスできます。 サンプル プロジェクトにより、最初 (空のページ) からではなく完成 した設計で始めるため、設計時間を短縮させることができます。サン プル プロジェクトは PSoC Creator コンポーネントを様々なアプリケー ションに使用する方法も示します。図 3 に示すように、サンプル コード およびデータ シートが含まれています。 図 3 に示す Find Code Example Project ダイアログにはいくつか のオプションがあります: デバイス ファミリ (PSoC 3、PSoC 4、PSoC アナログ コプロセッサ や PSoC 5LP など)、カテゴリやキーワードに基づいてサンプル プロジェクトをフィルターします。 Filter Options に基づいてフィルターされたリストからサンプル プロジェクトを選択します。 選択のためにデータシートをレビューします (Documentation タブ 上で)。 選択したプロジェクトのサンプル コードをレビューします。コード 開発時間を短縮するためにユーザーはこのウィンドウからコード をコピーして自身のプロジェクトに貼り付けることができます。 または、選択したものに基づいて新規プロジェクト (また必要な場 合は新規ワークスペース) を作成します。これにより、完備した基 本設計で開始し、設計時間を短縮させることができます。サンプル 設計を、所望のアプリケーションに変えて行きます。 図 3. サンプル プロジェクトおよびサンプル コード www.cypress.com 文書番号: 001-97886 Rev. *A 4 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 2.3 PSoC Creator ヘルプ PSoC Creator ホームページへアクセスし、PSoC Creator の最新版をダウンロードしてください。次に、PSoC Creator を起 動して以下のアイテムへナビゲートします: 2.4 クイック スタート ガイド: Help > Documentation > Quick Start Guide を選択します。このガイドは PSoC Creator プ ロジェクトを開発するための基礎知識を提供します。 システム リファレンス ガイド: Help > System Reference Guide を選択します。このガイドは、PSoC Creator により提 供されるシステム機能を一覧にして、説明します。 コンポーネント データシート: コンポーネントを右クリックして「Open Datasheet」を選択します。全ての PSoC 4 のコン ポーネント データシートの一覧については「PSoC 4 Component Datasheets」ページをアクセスしてください。 ドキュメント マネージャー: PSoC Creator が提供するドキュメント マネージャーにより、ドキュメント リソースを容易に 検索し、レビューすることができます。ドキュメント マネージャーを開くには、メニューアイテムの Help > Document Manager を選択します。 テクニカル サポート ご質問には弊社のテクニカル サポート チームが対応させて頂きますので、お気軽にご連絡ください。Cypress Technical Support ページにアクセスし、サポート リクエストを作成してください。 米国のお客様は、テクニカル サポート チームに連絡する際、以下の電話番号 (通話無料) にお問い合わせください: +1-800-541-4736 プロンプトでオプション「8」を選択してください。 早急な対応が求められる場合は、以下のサポート リソースをご利用ください。 セルフ ヘルプ お近くの販売代理店 www.cypress.com 文書番号: 001-97886 Rev. *A 5 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 3 GPIO ピンの基本情報 PSoC GPIO ピンは次の機能を提供しています。 アナログ-デジタル入出力機能 LCD セグメント駆動の対応 (PSoC 4000 で利用できない) CapSense®のサポート 立ち上がりエッジ、立ち下がりエッジ、または両方のレベルで割り込みが可能 スルー レート制御 入力閾値の選択 (CMOS/LVTTL/1.8V CMOS) ホットスワップ機能を持つ過電圧耐性ピン (PSoC 4 BLE、PSoC 4 M シリーズおよび PSoC 4 L シリーズでのみ利用可能) GPIO 機能は PSoC 4 または PSoC アナログ コプロセッサ デバイスで使用可能なペリフェラルに依存します。異なる PSoC 4 ファミリで使用可能な機能の横比較については「AN79953 – Getting Started with PSoC 4」の表 1 を参照ください。PSoC アナログ コプロセッサで使用可能な機能の詳細は「AN211293 - Getting Started with PSoC Analog Coprocessor」を参照く ださい。 3.1 GPIO ピンの物理構造 図 4 に PSoC デバイスでリソースとのピン接続を示します。 図 4. 簡略化した GPIO ブロック図 Buffer Digital Input Digital Output Digital Output Driver Pin Analog GPIO 構造の詳細ブロック図は「PSoC 4 Architecture TRM」および「PSoC Analog Coprocessor Architecture TRM」の 「I/O System」節に掲載されています。各ピンは CPU およびタイマー、PWM、または I2C などのデジタルペリフェラルの入力 または出力として動作できます。オペアンプおよび ADC 用のアナログ ピンとしても動作できます。任意の時点では、デジタル 専用の入力、デジタル専用の出力、アナログ専用のピン、またはそれらの組み合わせとしてピンを使用できます。例えば、デ ジタル出力およびデジタル入力の両方を有効にする場合、デジタル双方向ピンとなります。入力バッファは高インピーダンスを 外部入力に提供します。それは CMOS、LVTTL または 1.8V CMOS (PSoC 4 BLE、PSoC 4 M シリーズおよび PSoC 4 L シリーズでのみ使用可能) にコンフィギュレーション可能です。 入力閾値の値は device datasheet を参照ください。 www.cypress.com 文書番号: 001-97886 Rev. *A 6 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 デジタル出力ドライバーは異なる駆動モードおよびスルーレート制御をサポートします (図 5 を参照)。 図 5. デジタル出力ドライバー Vdd Vdd Digital Logic Vdd In Slew Control PIN Output Enable Drive Mode スルーレート制御は EMI およびクロストークを低減するために提供されます。2 つのオプション – 高速と低速です。スルー レートはデフォルトで高速に設定されています。速度が重要ではない信号の場合、低速オプションを使用します。 表 1 の一覧のように、図 5 に示す回路は PSoC 4 の 8 つの駆動モードをサポートします。 表 1. 駆動モードおよびアプリケーション 駆動モード # 応用例 1 高インピーダンス アナログ アナログ入力/出力 2 高インピーダンス デジタル デジタル入力 3 抵抗プルアップ (~5kΩ) モーターからのタコメーター出力またはグランドに接続されたスイッチのようなオープンドレイン LOW 入力へのインターフェースとして使用する。LED の駆動にも使用可能 4 抵抗プルダウン (~5kΩ) オープンドレイン HIGH 入力または VDD に接続されたスイッチへのインターフェースとして使 用する。電流吸い込み (シンク) モードでの LED とインターフェースするための出力として使 用可能 5 オープン ドレイン、LOW に駆動 HIGH 状態で高インピーダンスおよび LOW 状態でストロング ドライブを提供する。この設定 は I2C ピンのために使用される。このモードは、外部プルアップ抵抗と連動して動作する 6 オープン ドレイン、HIGH に駆動 HIGH 状態でストロング ドライブおよび LOW 状態で高インピーダンスを提供する。このモード は、外部プルダウン抵抗と共に動作する 7 ストロング ドライブ LOW 状態および HIGH 状態の両方で CMOS 出力ドライブを提供する 8 抵抗プルアップおよび抵抗プル ダウン (~5kΩ) HIGH および LOW の両方の状態で直列抵抗を追加する www.cypress.com 文書番号: 001-97886 Rev. *A 7 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 6. 駆動モード In In VDD VDD In Pin Out Out Pin In Out Out Pin ~5 k ~5k Pin Analog Analog Analog 1 . High-Impedance Analog 2 . High-Impedance Digital 3 . Resistive Pull Up Analog 4 . Resistive Pull Down VDD In In VDD ~5k In Out Pin Out In VDD Out Out Pin Pin ~5k Pin Analog Analog 5 . Open Drain, Drives Low 6 . Open Drain, Drives High Analog 7 . Strong Drive Analog 8 . Resistive Pull Up & Pull Down 注 1: 図 6 に示すプルアップおよびプルダウン駆動モード用の抵抗値は近似値です。抵抗値の仕様については、デバイス データシートを参照ください。高い精度が必要となる場合、外部抵抗を使用します。この場合では、ピンをオープン ドレイン HIGH 駆動またはオープン ドレイン LOW 駆動として設定する必要があります。 注 2: 常にデバイスの VDD は ESD クランプ ダイオードを介したピンで外部電圧からの電力を及ばせないようにします。 PSoC 4 デバイスまたは PSoC アナログ コプロセッサ デバイスに電力供給されず、外部電圧が GPIO に適用される場合、 または GPIO での外部電圧がデバイス VDD より高い場合、この問題は発生する可能性があります。しかし、クランプ ダイオード がないため過電圧耐性 (OVT) ピンに適用できません。 www.cypress.com 文書番号: 001-97886 Rev. *A 8 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 3.2 3.2.1 ピン配線 デジタル配線 1 つのピンは、 汎用デジタル ブロック (UDB)、シリアル通信ブロック(SCB)、タイマー/カウンター/パルス幅 変調器 (TCPWM) ブロック、LCD ドライバー、CAN ブロック、割り込みコントローラおよび CPU により読み出し/書き込みされるデータ レジスタなど様々なデジタル ペリフェラルに接続することができます。図 7 には入力ピン、図 8 には出力ピンの配線を示して います。 図 7 および図 8 に示すように、デバイスの周辺機器は高速 I/O マトリクス (HSIOM) でピンに接続されます。このマトリクスは 異なるペリフェラルからの信号を多重化し、特定のピンに接続します。 PSoC では、HSIOM を介して配線される専用 I/O と、デジタル システム相互接続 (DSI) を使用する柔軟な配線の 2 つの配 線が可能です。DSI の使用はペリフェラル入力および出力をピンに配線することに限定されません。デジタル リソース間に信 号を配線するためにも使用されます。ポート アダプタは HSIOM と DSI を繋ぎ、ピン入力および出力信号を同期化する ためのハードウェアも提供します。 図 7. デジタルピン入力パス CAN(3) SCB HSIOM From Input Buffer High Speed IO Matrix TCPWM Port Adapter(1) DSI(1) GPIO Edge Detect UDB(2) Interrupt Controller CPU (Pin State Reg) 1. not applicable to PSoC 4000, PSoC 4000S, PSoC 4100S, PSoC 4Axx 2. not applicable to PSoC 4000, PSoC 4000S, PSoC 4Axx, PSoC 4100, PSoC 4100S, PSoC 41xx-BL or PSoC 4100M 3. only available in PSoC 4200M and PSoC 4200L SCB (I2C、UART と SPI) および TCPWM はいくつかの I/O への専用配線があります。柔軟性のある配線のオプションは UDB 入出力に使用可能であり、ピンからの割り込みを生成します。そのオプションは TCPWM にも使用可能です。LCD ドラ イバーは PSoC デバイスの全ての I/O (PSoC 4000 以外) にあります。いずれかの I/O は LCD 用のセグメントまたは共通ド ライバーとして動作します。 GPIO エッジ検出ブロックは立ち上がりエッジ、立ち下がりエッジおよび両方のエッジでピン割り込みを有効にします。詳細は GPIO 割り込み節を参照ください。 www.cypress.com 文書番号: 001-97886 Rev. *A 9 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 8. デジタルピン出力パス CAN(4) SCB HSIOM TCPWM DSI(2) Port Adapter(2) High Speed IO Matrix To Digital Output Driver UDB(3) LCD(1) CPU (Data Reg) 1. not applicable to PSoC 4000 2. not applicable to PSoC 4000, PSoC 4000S, PSoC 4100S, PSoC 4Axx 3. not applicable to PSoC 4000, PSoC 4000S, PSoC 4Axx, PSoC 4100, PSoC 4100S, PSoC 41xx-BL or PSoC 4100M 4. only available in PSoC 4200M and PSoC 4200L 注: PSoC 4 は複数のポートがあり、ポートごとに最大 8 つのピンがあります。PSoC 4200L デバイスでは、ポート 7 からポート 10 のピンにはポート アダプタがありません。他のデバイスでは、ポート 4 以上はポート アダプタがありません。これらの ポートは以下の制限があります: DSI を介した配線ができないこと。従って、UDB ベースのデジタル信号はこれらポートのピンに配線されることが不可能 入力/出力の同期化なし SAR ADC、オペアンプ - 連続時間ブロック ミニ (CTBm)、および低電力コンパレータ (PSoC 4100 および PSoC 4200 にのみ利用可能) などのアナログ ブロックのために使用できないこと しかし、これらポートは以下ように有用です: ファームウェアで制御される GPIO として使用 TCPWM、SCB または CAN に直接接続 LCD および CapSense ピン 割り込みの生成 注: PSoC デバイスのピンは異なるペリフェラルへの専用接続のために共有される。各ピンでの機能については、それぞれの 「デバイス データシート」の「Pinouts」節を参照ください。 www.cypress.com 文書番号: 001-97886 Rev. *A 10 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 3.2.2 アナログ配線 図 9~図 14 に示すように、高インピーダンス アナログ (HI-Z) モードで設定された GPIO ピンは直接接続または、アナログ ス イッチおよびアナログマルチプレクサ (AMUX) バスを介して、アナログ リソースに接続されます。 下記は図 9 に示した PSoC 4000 デバイスでのアナログ配線のキーポイントです: すべてのピン (ポート 3 以外) はファームウェアで制御される AMUX バスに接続することができます。2 つのバスがあります: AMUXBUS_A および AMUXBUS_B。 CapSense IDAC0 が AMUXBUS_A に、IDAC1 が AMUXBUS_B に接続されます。 CapSense CMOD が P0[4]に、シールド タンク コンデンサが P0[2]に接続されます。 CapSense ブロックが AMUX バスを介してセンサーに接続するため、いずれかのピンは静電容量タッチ センサー (ポート 3 以外) のために使用することができます。 注:CMOD コンデンサをピンに近く配置します。レイアウト ガイドラインについては、AN85951 - PSoC 4 CapSense Design Guide を参照ください。 下記は他の PSoC 4 デバイスのアナログ配線のキーポイントです。図 11~図 15 を参照ください。 2 つの AMUX バスがあります。すべてのピンは AMUXBUS_A と AMUXBUS_B に接続することができます。AMUX バスの 接続はファームウェアまたは DSI 信号の使用により制御されます。ポート 4 以上のピンは、DSI 接続が利用できず、 AMUX はファームウェアでのみ接続されることに注意してください。 直接接続はオペアンプの入出力に利用可能です。これにより、配線抵抗および寄生容量が低くなるため、より良い性能と なります。直接接続はスイッチなしで低電力コンパレータ (LPCOMP) 入力にも利用可能です。 これらは CapSense CMOD およびシールド タンク コンデンサのための専用ピンです。ピンの詳細は図 11~図 15 を参 照ください。 CapSense IDAC0 が AMUXBUS_A に、IDAC1 が AMUXBUS_B に接続されます。 図 12~図 15 に示すように、AMUXBUS_A および AMUXBUS_B はスイッチ (青色でマーク) を使用して分割することが できます。これは、AMUX バスが、入力と出力がシステムで CapSense と共に配線されるオペアンプ/コンパレータなど の非 CapSense アプリケーションに必要とされる場合、有用です。 SAR シーケンサーは SAR ADC 入力を下記のものに接続します: CapSense ブロックが AMUX バスを介してセンサーに接続するため、いずれかのピンは静電容量タッチ センサーのため に使用することができます。 PSoC 4100、PSoC 4100S、PSoC 4200、PSoC 4100M、PSoC 4200M および PSoC 4200L のポート 2 PSoC 41xx-BL、PSoC 42xx-BL および PSoC CY8C4Axx のポート 3 CTBm 出力 温度センサー出力 図 11~図 15 の赤色で示されるように、スイッチを制御することにより多重化ができます。SAR ADC はシーケンサーなしで AMUXBUS を使用して任意のピンから入力を受け取ることもできることに注意してください。 注: オペアンプ出力はスイッチなしで専用ピンに接続されます。AMUX バスへの接続が必要な場合、専用ピンに関連付けら れる AMUX スイッチはアクティブにします。これにより、関連する AMUX スイッチがアクティブになる場合、他のピンはオペア ンプ出力ピンとして動作できます。 注: SAR ADC はシーケンサー モードの差動入力で動作する場合、正の入力は偶数ピンである必要があり、負の入力は隣接 する奇数ピンである必要があります。例えば、PSoC 4200 で、P2[0]と P2[1]のペアでは、P2[0]は正の入力で、P2[1]は負の 入力です。これはアナログ配線図にリング形 www.cypress.com を使用して示します。 文書番号: 001-97886 Rev. *A 11 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 9. PSoC 4000 のアナログ配線図 Port1 P2[0] Port2 P1[7] P1[6] P1[5] P1[4] P1[3] P1[2] P1[1] P1[0] P0[7] P0[6] P0[5] P0[4] P0[3] P0[2] P0[1] P0[0] Port0 CapSense Port3 P3[2] P3[1] P3[0] AMUXBUS_B source shield csh cmod CSIDAC1 AMUXBUS_A CSD0 iout Switch Control Legend CSIDAC0 Firmware Controlled Switch iout 図 10. PSoC 4000S アナログ配線図 P0[0], P0[1], P0[2] and P0[3] are directly connected to LPCOMP0 and LPCOMP1 inputs without switches. P0[7] P0[6] P0[5] P0[4] P0[3] P0[2] P0[1] P0[0] Port0 Switch Control Legend Firmware Controlled Switch AMUXBUS_A AMUXBUS_B LPCOMP0 P2[0] P2[1] P2[2] P2[3] P2[4] P2[5] P2[6] P2[7] CSIDAC1 iout CSIDAC0 iout P3[0] P3[1] P3[2] P3[3] P3[4] P3[5] P3[6] P3[7] CSD0 sense shield csh shield_pad LPCOMP1 vplus vminus P4[0] P4[1] P4[2] P4[3] cmod vplus vminus Port4 Port3 Port2 www.cypress.com 文書番号: 001-97886 Rev. *A P1[7] P1[6] P1[5] P1[4] P1[3] P1[2] P1[1] P1[0] Port1 vref_ext CapSense 12 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 11. PSoC 4200/PSoC 4100 のアナログ配線図 P1[2] and P1[3] are directly connected to OPAMP 0 and OPAMP 1 outputs, respectively, without switches. CTBm SARMUX Port1 Port2 P1[7] P1[6] P1[5] P1[4] P1[3] P1[2] P1[1] P1[0] P2[7] P2[6] P2[5] P2[4] P2[3] P2[2] P2[1] P2[0] P0[0], P0[1], P0[2] and P0[3] are directly connected to LPCOMP0 and LPCOMP1 inputs without switches. P0[7] P0[6] P0[5] P0[4] P0[3] P0[2] P0[1] P0[0] Port0 AMUXBUS_A AMUXBUS_B LPCOMP0 vplus vminus LPCOMP1 vplus vminus Port3 P3[7] P3[6] P3[5] P3[4] P3[3] P3[2] P3[1] P3[0] vminus source shield csh cmod CSIDAC1 iout Differential input pairs - - + CSIDAC0 + iout OA1 OA0 TEMP0 10x ~ 1x 1x ~ 10x Switch Control Legend Firmware Only Firmware + DSI temp Vssa_kelvin SARADC0 Firmware + DSI + SAR-Sequencer vplus vminus ext_vref Comp out to DSI www.cypress.com CAP SENSE P4[3] P4[2] P4[1] P4[0] Port4 sarbus0 sarbus1 vplus CSD0 SAR Comp out to DSI 文書番号: 001-97886 Rev. *A 13 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 12. PSoC 4100S アナログ配線図 Port0 P1[0] P1[1] P1[2] P1[3] P1[4] P1[5] P1[6] P1[7] P0[7] P0[6] P0[5] P0[4] P0[3] P0[2] P0[1] P0[0] Port1 AMUXBUS_A AMUXBUS_B SARMUX LPCOMP1 vplus vminus P4[3] P4[2] P4[1] P4[0] Port4 CTBm P3[7] P3[6] P3[5] P3[4] P3[3] P3[2] P3[1] P3[0] Port3 Port2 LPCOMP0 vplus vminus P2[7] P2[6] P2[5] P2[4] P2[3] P2[2] P2[1] P2[0] CSD0 TEMP0 source shield csh temp Vssa_kelvin cmod sarbus0 sarbus1 CSIDAC1 - + vminus vplus iout - CSIDAC0 + iout OA0 OA1 10x ~ 1x 1x ~ 10x CAPSENSE Differential input pairs SAR SARADC0 vplus vminus ext_vref www.cypress.com Comp out Comp out 文書番号: 001-97886 Rev. *A Switch Control Legend AMUX Splitter Firmware Only Firmware Only Firmware + SAR-Sequencer 14 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 13. PSoC 41xx-BL/PSoC 42xx-BL のアナログ配線図 P2[2] and P2[3] are connected to OA0 and OA1 OPAMP outputs respectively P1[2] and P1[3] are connected to OA2 and OA3 OPAMP outputs respectively P1[7] P1[6] P1[5] P1[4] P1[3] P1[2] P1[1] P1[0] CTBm P2[7] P2[6] P2[5] P2[4] P2[3] P2[2] P2[1] P2[0] CTBm AMUXBUS_A AMUXBUS_B LPCOMP P0[7] P0[6] P0[5] P0[4] P0[3] P0[2] P0[1] P0[0] LPCOMP1 vminus vplus LPCOMP0 vminus vplus P0[0], P0[1], P0[4] and P0[5] are connected to LPCOMP0 and LPCOMP1 inputs sarbus0 sarbus1 Comp out to DSI iout CSIDAC0 iout CSIDAC1 CSD0 cmod source shield csh vplus Differential input pairs CAPSENSE temp Vssa_kelvin SARADC0 10x 1x 1x Comp out to DSI Comp out to DSI TEMP0 SAR + OA2 ~ 10x ~ 1x 1x Comp out to DSI - OA3 OA0 ~ 10x OA1 - + + ~ - 10x - + vminus Switch Control Legend Firmware Only Firmware + DSI Firmware + DSI + SAR-Sequencer AMUX Splitter - Firmware Only ext_vref AMUXBUS_B AMUXBUS_A P6[1] P6[0] 文書番号: 001-97886 Rev. *A P5[1] P5[0] P4[1] P4[0] P3[7] P3[6] P3[5] P3[4] P3[3] P3[2] P3[1] P3[0] VREF www.cypress.com 15 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 14. PSoC 4100M/PSoC 4200M のアナログ配線図 P1[2] and P1[3] are connected to OA0 and OA1 OPAMP outputs respectively P5[2] and P5[3] are connected to OA2 and OA3 OPAMP outputs respectively P5[5] P5[4] P5[3] P5[2] P5[1] P5[0] CTBm P1[7] P1[6] P1[5] P1[4] P1[3] P1[2] P1[1] P1[0] CTBm AMUXBUS_A AMUXBUS_B CAPSENSE CSD1 csh cmod source shield CSIDAC3 iout CSIDAC2 iout LPCOMP sarbus0 sarbus1 LPCOMP1 vminus vplus - - + + - - + + LPCOMP0 OA1 OA0 OA3 vminus OA2 P0[0], P0[1], P0[2] and P0[3] are connected to LPCOMP0 and LPCOMP1 inputs ~ 10x 1x ~ 1x 10x 10x ~ 1x ~ 1x 10x vplus P0[7] P0[6] P0[5] P0[4] P0[3] P0[2] P0[1] P0[0] P7[2] P7[1] P7[0] Comp out to DSI Comp out to DSI Comp out to DSI Comp out to DSI Differential input pairs CAPSENSE TEMP0 Switch Control Legend Firmware Only CSD0 csh cmod source shield iout vplus CSIDAC0 iout SARADC0 CSIDAC1 SAR temp Vssa_kelvin Firmware + DSI P6[5] P6[4] P6[3] P6[2] P6[1] P6[0] Firmware + DSI + SAR-Sequencer AMUX Splitter - Firmware Only vminus ext_vref 文書番号: 001-97886 Rev. *A P3[7] P3[6] P3[5] P3[4] P3[3] P3[2] P3[1] P3[0] P4[7] P4[6] P4[5] P4[4] P4[3] P4[2] P4[1] P4[0] P2[7] P2[6] P2[5] P2[4] P2[3] P2[2] P2[1] P2[0] www.cypress.com 16 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 15. PSoC 4200L アナログ配線図 AMUXBUS_A ~ P1[7] P1[6] P1[5] P1[4] P1[3] P1[2] P1[1] P1[0] sarbus1 sarbus0 10x P5[7] P5[6] P5[5] P5[4] P5[3] P5[2] P5[1] P5[0] - + Comp out to DSI 1x ~ 10x CSD1 CAPSENSE Differential input pairs P3[0] P3[1] P3[2] P3[3] P3[4] P3[5] P3[6] P3[7] Switch Control Legend AMUX Splitter Firmware Only Firmware + DSI + SAR-Sequencer Firmware + DSI Firmware Only CSIDAC3 7-bit iout P9[7] P9[6] P9[5] P9[4] P9[3] P9[2] P9[1] P9[0] iout 8-bit P8[7] P8[6] P8[5] P8[4] P8[3] P8[2] P8[1] P8[0] P7[0] P7[1] P7[2] P7[3] P7[4] P7[5] P7[6] P7[7] LPCOMP P0[2] and P0[3] are connected to LPCOMP1 inputs LPCOMP1 vplus vminus vplus CSD0 LPCOMP0 P0[0] and P0[1] are connected LPCOMP0 inputs shield source cmod csh vminus CSIDAC0 P0[0] P0[1] P0[2] P0[3] P0[4] P0[5] P0[6] P0[7] iout 7-bit CAPSENSE CSIDAC1 www.cypress.com P5[2] and P5[3] are connected to OA2 and OA3 OPAMP outputs respectively CSIDAC2 8-bit iout P11[0] P11[1] P11[2] P11[3] P11[4] P11[5] P11[6] P11[7] P4[0] P4[1] P4[2] P4[3] P4[4] P4[5] P4[6] P4[7] csh cmod source shield CTBm OA2 1x P12[0] P12[1] P6[0] P6[1] P6[2] P6[3] P6[4] P6[5] OA3 ~ - P10[0] P10[1] P10[2] P10[3] P10[4] P10[5] P10[6] P10[7] P1[2] and P1[3] are connected to OA0 and OA1 OPAMP outputs respectively + Comp out to DSI 10x CTBm 1x Comp out to DSI TEMP0 OA0 1x - + Vssa_kelvin temp OA1 Comp out to DSI SAR vminus vplus SARADC0 ~ - VREF P2[0] P2[1] P2[2] P2[3] P2[4] P2[5] P2[6] P2[7] 10x + ext_vref AMUXBUS_B 文書番号: 001-97886 Rev. *A 17 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 16. PSoC CY8C4Axx アナログ配線図 ARoute CapSense sarbus1 sarbus0 CTB1_Vout0 Differential input pairs Switch Control Legend AMUX Splitter Firmware Only Firmware + SAR-Sequencer Firmware Only CTB1_Vout1 Universal Analog Block CTB1 External reference CTB0_Vout0 CTB0_Vout1 CTB0 Vref[3:0] sar_aroute_vref SARMUX SAR ADC sar_vminus sar_vplus sarbus0 sarbus1 Programmable Reference block sar_vminus sar_vplus www.cypress.com 文書番号: 001-97886 Rev. *A 18 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 注: PSoC Creator IDE ツールは図 9~図 16 に示されるものと同様な設計のためにアナログ配線図を提供します。PSoC Creator でのプロジェクトの.cydwr ファイルの「Analog」タブをご覧ください。 3.3 スタートアップおよび低電力動作 リセット/電源投入時、すべての GPIO ピンは高インピーダンス アナログ モードで起動し、すなはち、入力バッファおよび出力 ドライバーは無効です。これらの GPIO ピンはリセットが解除されるまでこのモードのままです。各 GPIO ピンの関連レジスタの 初期動作設定が起動中にロードされ、その時から有効になります。実行中、GPIO は関連レジスタに書き込むことで設定する ことができます。 注: PSoC 4000 デバイスでは (24 ピン QFN デバイスを除き)、ピン P1[6]は電源投入の間にデバイスが起動コードを実行する まで XRES として暫定的に設定されます。電源投入の間にこのピンをプルダウンすると、デバイスがリセットに保持されるため、 そうしないでください。 詳細は KBA91258 – I/O System Restrictions in the PSoC 4000 Family を参照ください。 PSoC は最大 4 つの消費電力モードがあります。表 2 に PSoC 4 ファミリで利用可能な消費電力モードを示します。 表 2. 低消費電力モード デバイス スリープ ディープスリープ ハイバネート ストップ PSoC 4000 PSoC 4000S PSoC 4100/4200 PSoC 4100S PSoC 4 BLE PSoC 4 M PSoC 4 L PSoC アナログ コプロセッサ スリープ モードで、GPIO はアクティブであり、ペリフェラルにより積極的に駆動されることができます。このモードで CPU だけが 非アクティブです。ディープ スリープ モードで、I2C、LCD ドライバー、オペアンプおよびコンパレータなどのディープ スリープ ペリフェラルにより駆動されるピンは動作可能です。I2C ピンはアドレス一致イベントでデバイスを起こすことができます。デバ イス ピンに接続されるセグメント LCD はディープスリープ モードでも周期的にリフレッシュされます。 PSoC 4 デバイス (PSoC 4000 以外) は GPIO をディープスリープ、ハイバネートおよびストップ モードでフリーズする追加機 能があります。低消費電力モードが終了すると、GPIO は自動的にフリーズ解除されます。しかし、ディープスリープ ペリフェラル により駆動される GPIO はディープスリープ モードでアクティブであり、フリーズされないことに注意してください。 ハイバネートおよびストップ モードの場合、ウェイク アップはデバイス リセットによって発生し、GPIO 設定およびピン状態を クリアします。ピン状態を保持するために、CySysPmFreezeIo()と CySysPmUnfreezeIo() API 関数をご使用ください。ユー ザーが CySysPmStop() API 関数を使用してストップ モードを起動すると、CySysPmFreezeIo() 関数が自動的に呼び出さ れるので、ストップ モードのためにこの関数の呼び出しが不要であることに注意してください。しかし、 ハイバネート モードに 入 る 関 数 呼 び 出 し の 直 前 に 、 CySysPmFreezeIo() API を 呼 び 出 す 必 要 が あ り ま す 。 GPIO は API 関 数 CySysPmUnfreezeIo() の呼び出しにより、ロックされません。ストップ モードを終了する場合、この API 関数の呼び出しも必 要です。フリーズされたピンの状態と設定は外部リセット (XRES) イベントの時に維持されないことに注意してください。 CySysPmFreezeIo() および CySysPmUnfreezeIo() はディープ スリープ モードでも利用可能です。ディープスリープモード における制御レジスタの取り扱いの節にこの特徴の使用例を示します。制御レジスタなどの UDB ベースのコンポーネントは ディープスリープ、ハイバネートおよびストップ モードで非アクティブであり、データを失います。制御レジスタがピンを駆動して いる場合、ピンの最終状態が「1」であると、PSoC がこれらのモードに入る時、または終了する時にグリッチが発生する可能 性があります。このグリッチを回避するためには、低電力モードに入る前に GPIO をフリーズする必要があります。 低電力モードの詳細は、AN86233 – PSoC 4 Low-Power Modes and Power Reduction Techniques を参照ください。 www.cypress.com 文書番号: 001-97886 Rev. *A 19 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 3.4 GPIO 割り込み 図 17 に HSIOM から割り込みコントローラまでの信号経路を示します。 図 17. GPIO 割り込み信号の配線 Interrupt Configuration DSI Port Adapter(1) From HSIOM 0 DSI(1) GPIO Edge Detect Interrupt Source Multiplexer 1 Rising Edge Detect (1) 1 To Interrupt Controller Fixed Function 0 Interrupt Select (1) not applicable to PSoC 4000, PSoC 4000S, PSoC 4100S, PSoC 4Axx プロセッサ コア内の割り込みコントローラの 32 割り込みラインでは、それぞれ一つの割り込みソース マルチプレクサがありま す。このマルチプレクサ ブロックは割り込みソースを選択し、立ち上がりエッジ検出か割り込みコントローラへの直接接続のオ プションを提供します。2 つの割り込みソースがあります: 1. 固定機能ソース 2. DSI ソース 割り込み選択ラインは DSI ソースまたは固定機能ソースを選択します。割り込み設定は割り込みコントローラに接続するため に、直接接続または立ち上がりエッジ検出のロジック ルートを選択します。 固定機能の割り込みソースは固定割り込みベクタがあります。すなわち、割り込みソースは Cortex® M0 CPU の 32 割り込み ラインの 1 つへの専用接続があります。このルート上の割り込みソースは割り込みコントローラに直接接続します。割り込み ソースが DSI を通して配線される時には、ベクタ選択は固定されません。この配線は直接接続に加えて、立ち上りエッジ検出 のオプションも提供します。 注: 割り込みベクタ テーブルの詳細は「テクニカル リファレンス マニュアル」の「割り込み」章をご覧ください。 割り込みソース マルチプレクサの使用は GPIO 割り込みに限定されません。他のすべてのソースにも使用されます。他の割 り込みソースについては「AN90799 - PSoC® 4 Interrupts」の「割り込みソース」節を参照ください。 図 17 に示すように、GPIO 割り込みは割り込みソース マルチプレクサに存在しているリソースに加えて、自身の GPIO エッジ 検出ブロックも使用します。 HSIOM からの GPIO 割り込み信号は以下の方法で配線されます: 経路 1: GPIO エッジ検出ブロックを通じる固定機能配線 (割り込みソース マルチプレクサが直接接続に設定)。 経路 2: GPIO エッジ検出ブロックを通じる DSI 配線 (割り込みソース マルチプレクサが立ち上がりエッジ検出に設定)。 経路 3: GPIO エッジ検出ブロックを通じる DSI 配線 (割り込みソース マルチプレクサが直接接続に設定)。 経路 4: GPIO エッジ検出ブロックをバイパスする DSI 配線 (割り込みソース マルチプレクサが立ち上がりエッジ検出に 設定)。 経路 5: GPIO エッジ検出ブロックをバイパスする DSI 配線 (割り込みソース マルチプレクサが直接接続に設定)。 異なるルートを設定する方法については「ピン コンポーネント割り込み」を参照ください。 www.cypress.com 文書番号: 001-97886 Rev. *A 20 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 18 に GPIO エッジ検出ブロックを示します。このブロックは着信 GPIO 信号の立ち上がりエッジ、立ち下がりエッジ、および 両方のエッジを検出します。1 つのポート内の個々の GPIO 割り込み信号は OR され、単一の割り込み要求を生成します。 従って、各ポートには 1 つの割込みベクタがあります。 図 18. GPIO エッジ検出 Pin 0 Pin 1 Pin 2 Pin 3 Pin 4 Pin 5 Pin 6 Pin 7 Edge Detector Edge Detector Edge Detector Edge Detector Edge Detector To Interrupt Source Multiplexer Edge Detector Edge Detector Edge Detector 図 18 に示すように、割り込みがトリガーされると、割り込みソースを識別する必要があります。PSoC 4 は割り込みピンを 識別するために、ステータス レジスタを提供します。GPIO エッジ検出ロジックを使用する度に、下記の状況を避けるために、 ステータス レジスタは読み出した後、クリアすることが重要です: 1. 割り込みソース マルチプレクサが立ち上がりエッジに設定される場合のシングル割り込みトリガーおよび次の割り込みに 対する非反応性。経路 2 が使用される場合、このシナリオが発生します。 2. 割り込みソース マルチプレクサが直接接続に設定される場合の、単一の要求に対する繰り返しの割り込み。経路 1 また は経路 3 が使用される場合、このシナリオが発生します。 GPIO 割り込みが GPIO エッジ検出ブロックを通じない場合、割り込みをクリアすることが不要です。しかし、割り込みソース マルチプレクサの立ち上がりエッジ検出ロジックもバイパスされると、レベルタイプの割り込み (経路 5) が発生します。この場 合は、ピン信号が HIGH になる限り、割り込みは繰り返しトリガーされます。そのため、GPIO エッジ検出ブロックがバイパスさ れる場合 (経路 4)、 割り込みソース マルチプレクサを立ち上がりエッジ割り込みに設定することが推奨されます。 注: 任意のピンがウェイクアップ ソースとして使用できるように、GPIO 割り込み論理はスリープ モード、ディープスリープ モード、 およびハイバネート モードで機能し続けます。専用のウェイクアップ ピン (P0[7]) は PSoC 4200/PSoC 4100、PSoC 4 M、 および PSoC 4 L 部品のストップ モードでデバイスをウェイクアップするために使用可能です。PSoC 4 BLE デバイスの場合 は、ウェイクアップ ピンは P2[2]です。 3.4.1 GPIO 割り込みの制限 1. ポート 4 以上はポート アダプタがありません。従って、DSI ルーティングを介するピン割り込みはこれらのポート ピンに対 して不可能です。 2. PSoC 4000 および PSoC 4100/PSoC 4200 は各ポートに 1 つの割り込みベクタがあります。PSoC 4 BLE はポート 5 以上、PSoC 4 M はポート 4 以上のポートに専用割り込みベクタを持っていませんが、共有ポート割り込みベクタがあり ます。この割り込みベクタは任意のポート割り込みがアクティブになると、トリガーされます。この共有ポート割り込みの使 い方については、Pins Component datasheet を参照ください。 サンプル プロジェクトはピン割り込みセクションに示され、GPIO 割り込みの使い方を説明します。割り込みを一般的に理解する には、「AN90799 – PSoC 4 Interrupts」アプリケーション ノートを参照ください。 www.cypress.com 文書番号: 001-97886 Rev. *A 21 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 4 過電圧耐性 (OVT) ピン PSoC 4 BLE でのピン P5[0]と P5[1]、および PSoC 4 M でのポート 6 は OVT ピンです。PSoC 4 L では、ポート 6 および ポート 8 は OVT ピンがあります。それらは普通の GPIO ピンと同様であり、以下の特徴が追加されています: 1. 過電圧耐性 - OVT ピンには ESD クランプ ダイオードがありません。また、GPIO-OVT セルは I/O 電源電圧 (VDDIO) と ピン電圧を比較するためのハードウェアがあります。ピン電圧が VDDIO 電圧を超える場合、出力ドライバーは無効になり、 ピンはトライステートになります。結果として、ピンでごく少量の電流シンクを発生させます。ピンでの過電圧状況の間に、 VOH および VOL の外部ソースの仕様が入力バッファのトリップ ポイントに一致しない場合、入力バッファ データは無効 になります。 2. 普通の GPIO と比べると、より良いプルダウン駆動能力を提供します。 3. シリアル通信ブロック (SCB) : I2C として設定し、自体のラインを OVT ピンにルートされる場合、SCB は下記の I2C 仕様 を満たします: a) 高速モード プラス LOW レベル出力電流 (IOL) 仕様 b) 高速モードおよび高速モード プラス ヒステリシスおよび最小立ち下がり時間の仕様 I/O ハードウェアの詳細は「テクニカル リファレンス マニュアル」の「I/O システム」章を参照ください。 5 PSoC Creator での GPIO ピン 本節は、PSoC Creator を使用して GPIO ピンを設定および使用する方法について説明します。 5.1 ピン コンポーネント シンボル ピン コンポーネントは、内部 PSoC リソースを物理ピンに接続するための推奨方法です。これにより、PSoC Creator は選択 済みのピン設定に基づいて PSoC デバイス内に自動的に信号を配置し、配線できます。 標準的サイプレス コンポーネント カタログでは、ポートおよびピンの 4 個のシンボル タイプ (アナログ、デジタル双方向、デジ タル入力、およびデジタル出力) で 4 個の定義済みの GPIO 設定が含まれます。図 19 に示すように、これらのコンポーネン トの 1 つを回路図にドラッグして、ピンをプロジェクトに加えます。 図 19. PSoC Creator でのピン コンポーネント シンボル タイプ 5.2 ピンコンポーネントのカスタマイザ PSoC Creator では、各コンポーネントはそのカスタマイザにより設定されます。図 20 にピン コンポーネント カスタマイザを示 します。このカスタマイザをアクセスするには、コンポーネントをダブルクリックしてください。 www.cypress.com 文書番号: 001-97886 Rev. *A 22 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 20. ピン コンポーネント カスタマイザ 表 3 にピン コンポーネント カスタマイザーのいくつのパラメーターを示します。すべてのパラメーターの詳細は「ピン コンポー ネント データシート」を参照ください。 表 3. ピン コンポーネントの設定 設定 General タブ > Type 説明 このパラメーターはピン タイプを設定する。利用可能なオプションは: アナログ ハードウェア (HW) 接続有り、または無しのデジタル入力 HW 接続と出力イネーブル有り、または無しのデジタル出力 双方向ピン デジタル入力または出力がハードウェア接続なしで設定される場合、ピン状態は CPU により制御されることを 意味する。複数の選択を一度に実行できることに注意してください。例えば、ピンは同時にアナログとデジタル入 力に設定することができる General タブ > Drive Mode 「GPIO ピンの基本情報」の節で説明されているように、このパラメーターはピンを 8 つの駆動モードの 1 つに設定 する。図 21 にピン カスタマイザの駆動モードのオプションを示す General タブ > Initial Drive State 「Initial drive state」パラメーターはデータ レジスタの値を設定する。ピンがソフトウェア駆動であり、適切なモー ドに設定されている場合、この値はピンで表示される。ピンが出力モードにある場合 (HW 接続が有効、および 出力イネーブルが無効)、「initial drive state」はイネーブル制御として見なされる。図 21 に示すように、初期状 態を「1」に設定すると、ピンは有効になる。これは PSoC Creator によりデフォルトで実行される。ピンが入力と して設定される場合、初期駆動状態はまだ有用である。例えば、抵抗プルアップが入力ピンに必要な場合、抵 抗を通じるプルアップ パスを有効にするために、「Drive mode」を「Initial drive state = HIGH」で「Resistive pull up」に設定する。同様に、抵抗プルダウンの場合、「Initial drive state」はプルダウン パスを有効にするた めに、LOW に設定する必要がある Input タブ > Threshold CMOS および LVTTL 入力閾値の設定はポート全体で適用可能である。図 22 に示すように、3 つのオプション がある。「CMOS or LVTTL」オプションにより、ポート内の他のピンの閾値に基づいて、PSoC Creator ツールは CMOS または LVTTL を選択することができる Input タブ > Interrupt GPIO 割り込み節で説明するように、このパラメーターは GPIO エッジ検出ブロックを設定する。詳細については ピン コンポーネント割り込みを参照ください www.cypress.com 文書番号: 001-97886 Rev. *A 23 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 21. ピン駆動モードの設定および初期駆動状態 図 22. ピン入力閾値の選択 www.cypress.com 文書番号: 001-97886 Rev. *A 24 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 5.3 ピン コンポーネント割り込み GPIO 割り込み節で説明するように、ピン カスタマイザの「Interrupt」パラメーターは GPIO エッジ検出ブロックを設定します。 図 23. PSoC Creator の割り込み設定 図 24 に示しているように、割り込みが有効になると、ピン コンポーネント シンボルが変わります。 図 24. 割り込みが有効になるピン コンポーネント シンボル 割り込みが有効になる場合、各物理 GPIO ポートに 1 つだけのピン コンポーネントを使用できることに注意してください。 GPIO 割り込み節で説明するように、この制限の理由としては、1 個のポートですべてのピン割り込みは OR されます。そのため、 ポートごとに一つのみの IRQ 信号を回路図に示します。例えば、図 25 に示すように、割り込みが有効化された 2 つのピン コンポーネントを考えましょう。これらのコンポーネントは同じ物理ポートでのピンにマップすることができません。 www.cypress.com 文書番号: 001-97886 Rev. *A 25 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 25. 割り込みが有効になる 2 つのピン コンポーネント PSoC Creator は 2 つのコンポーネントを同じポートに割り当てることを許可しません。図 26 に示すように、許容方法は同じ コンポーネントに複数のピンを割り当てることです。これは、回路図上でその物理ポートに対して 1 つのみの IRQ 信号がある ことを保証します。各ピンにそれ自身の割り込みエッジ タイプを割り当てることができます。唯一の制限はピンが同じポートで 隣接しなければならないことです。割り込みソースは ISR で識別する必要があります。ピン割り込み節を参照ください。 図 26. 有効な割り込みがある同じポートの複数ピン ピン コンポーネントの IRQ は割り込みコンポーネントに接続する必要があります。これは GPIO 割り込み信号を割り込みコン トローラに配線します。図 27 に示すように、割り込みコンポーネントはコンポーネント カタログにあります。 図 27. 割り込みコンポーネントがカタログにある 割り込みコンポーネントは割り込みソース マルチプレクサを直接接続 (割り込みコンポーネント カスタマイザで「レベル」として 表示) または立ち上がりエッジに設定します。GPIO 割り込みアーキテクチャは、割り込み信号に使用可能な異なる配線と共 に GPIO 割り込み節で説明されます。異なる配線は、表 4 にまとめるピンコンポーネントおよび割り込みコンポーネント カスタ マイザの設定により設定されます。 www.cypress.com 文書番号: 001-97886 Rev. *A 26 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 表 4. GPIO 割り込みの設定 回路図 www.cypress.com ピン コンポーネントで の割り込み設定 割り込みコンポ ーネントの設定 配線 詳細 立ち上がりエッジまた は立ち下がりあるいは 両方のエッジ レベル 経路 1 エッジの割り込みはピン コンポーネントの 設定に依存する。選択されたポートによっ て固定割り込みベクタを使用する。このコ ンフィギュレーションでは、GPIO 割り込み ステータス レジスタをクリアする必要があ る。そうしないと、割り込みは 1 つの割り込 み要求で繰り返しトリガーされる 立ち上がりエッジまた は立ち下がりまたは 両方のエッジ 立ち上がり エッジ 経路 2 エッジの割り込みはピン コンポーネントの 設定に依存する。このコンフィギュレーショ ンでは、GPIO 割り込みステータス レジス タがクリアされる必要がある。そうしない と、割り込みが 1 回のみトリガーされる。割 り込みベクタが固定されない 立ち上がりエッジまた は立ち下がりまたは 両方のエッジ レベル 経路 3 これは経路 1 と同様であるが、経路 3 は 割り込みベクタが希望の DSI ベクタ ライン に強制される場合のみに実行される。割り 込みベクタの強制方法はアプリケーション ノート「AN90799 – PSoC 4 Interrupt」を 参照ください 無効 立ち上がり エッジ 経路 4 このコンフィギュレーションは立ち上がりエ ッジ割り込みを提供する。この場合では、 割り込みをクリアする必要がない 無効 レベル 経路 5 このコンフィギュレーションはレベル割り込 みを提供する。ピン信号が HIGH になる限 り、割り込みが繰り返してトリガーされるこ とに注意してください。この場合でも、割り 込みをクリアする必要がない 文書番号: 001-97886 Rev. *A 27 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 5.4 手動のピン割り当て 「デザインワイド リソース (DWR) 」ウィンドウの Pins タブを介してピン コンポーネントを物理ピンに割り当てることができます。 ユーザーが全くピンの選択をしない場合、PSoC Creator は自動的にピンの割り当てをしますが、その場合、PCB でピン配置 がより難しくなるという結果になります。 図 28 に 3 つの割り当てられたピンを示します。濃青色にハイライトされたピンは手動で、そして薄青色にハイライトされたピン は自動で割り当てられたものです。Lock オプションを選択することで、ピンが PSoC Creator により再割り当てられることを回 避できます。 必要な時、PSoC Creator を使ってピンをより簡単に割り当てできますが、ピンの割り当てを考慮してボードをデザインすべき です。 図 28. DWR ウィンドウでのピン割り当て 注: PSoC Creator はアナログ信号を配線するために未使用ピン スイッチを使用することができます。これは.cydwr ファイル の System タブの Unused Bonded I/O パラメーター を使って設定されます。詳細については PSoC Creator ヘルプを参照 ください。 5.5 PSoC Creator の API サイプレスはファームウェアを通じて動的に GPIO を制御するための API 関数のセットを提供します。ピン コンポーネントの API は、コンポーネント単位とピン単位の両方でアクセスできます。詳細については、ピン データシートで「API」節を参照ください。 cypins.h ファイルの cy_boot の一部として提供されるピン単位 API 関数は、PSoC Creator システム リファレンス ガイドの 「ピン」節 (Help > Documentation > System Reference) で記述されます。これらの関数を使って、各物理ピンのコンフィ ギュレーション レジスタを制御できます。 www.cypress.com 文書番号: 001-97886 Rev. *A 28 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 5.6 GPIO ピンのデバッグ ロジック PSoC 4 シリアル ワイヤ デバッグ (SWD) ピンはポート ピンで共有されます。デバッグ ポート ピンの詳細は関連するデバイ ス データシートを参照ください。図 29 に示すように、デバッグ機能は無効にすることができ、ピンは DWR ウィンドウの 「System」タブで「Debug Select」オプションを「GPIO」に設定することにより普通の GPIO として使用することができます。 図 29. デバッグ ポートが無効 デバッグ インターフェースを無効にすることは、デバイスのプログラム可能性に影響を及ぼさないことに注意してください。 5.7 複数の GPIO ピンを論理ポートとして追加 PSoC Creator では、ユーザーは最大 36 個のピンのグループを 1 個の論理ポートに配置できます。コードでは、このグルー プはポートの定義した名前として呼ばれています。全てのピンは 1 つの同じ物理ポートに属するか、もしくは幾つかの個別の 物理ポートに属することもあります。ピン コンポーネント カスタマイザでは、ポートに必要なピン数を設定します。図 30 の通り に、ピンはフィールドの下にあるリストに表示されます。各ピンは別々に設定することができます。[All Pins(全てのピン)]を選 択して、コンポーネントの全てのピンを一括設定します。 図 30. 4 ピンの内 1 個がデジタル入力として設定 www.cypress.com 文書番号: 001-97886 Rev. *A 29 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 「Number of pins」が「4」に設定する (3 つのデジタル入力および 1 つのデジタル出力) 場合、回路図シンボルは図 31 のよう に表示されます。 図 31. ポート コンフィギュレーションのピンコンポーネント 個々のピン端子の代わりに、ポートをバスとして表示するオプションがあります。図 32 に示すように、ポート コンフィギュレー ション ウィンドウの Mapping タブの Display as Bus を選択し、ポートをバスとして表示します。すべてのピンは、バスとして 表示するために、同じタイプでなければならないことに注意してください。 図 32. バスとして表示 Number of Pins が 4 つのデジタル出力に設定されると、回路図シンボルは図 33 のように表示されます。 図 33. 4 つのピンはバスとして表示される www.cypress.com 文書番号: 001-97886 Rev. *A 30 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 34 に示すように、バスとして表示されるピンは Mapping タブの Contiguous オプションを有効にすることにより隣接ピン に強制的にマップすることができます。 図 34. ピンが隣接の配置オプション 図 35 に示すように、隣接を選択した場合、PSoC Creator はピンの使用可能なオプションのリストをポートのコンフィギュレー ションとあわせて調整します。Contiguous オプションを無効にすると、任意のピンを選択することができます。図 35 に示す ように、Contiguous オプションが有効になると、隣接ピンのみを選択することができます。 図 35. Contiguous オプションが無効/有効の場合のピン配置 Contiguous Enabled Contiguous Disabled これらの機能はピンコンフィギュレーションウィンドウとピンコンポーネントデータシートに詳述されています。 www.cypress.com 文書番号: 001-97886 Rev. *A 31 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 5.8 オフチップコンポーネントについて 図 36 に示すように、オフチップコンポーネントカタログは、外部と内部コンポーネントを同一の回路図上に組み合わせる方法 を提供します。これにより、ドキュメンテーションを改善し、内部回路図がどのように全体のデザインに合わせるかをより良く理 解することができます。オフチップ コンポーネントはコード内のコメントと同じ機能を提供します。それは PSoC デザインの機 能を変更せず、システム全体を明確化します。 図 36. オフチップ コンポーネントのあるデザイン External Connection Internal Connection Internal Connection External Connection 図 36 のデザインは、PWM_1 および Opamp_1 はデバイスの内部ブロックです。これらのブロックは Pin_1~Pin_4 を使用して外部 コンポーネントに接続します。緑色およびオレンジ色の線は内部接続です (緑色はデジタル信号、オレンジ色はアナログ信号)。その一 方で、青色の線およびコンポーネントはデバイスの外部接続です。回路図で外部コンポーネントへの接続をするために、図 37 に示す ように、ピン コンポーネント カスタマイズの「External Terminal」パラメーターを有効にします。これにより、図 38 に示すように、回路図 上に追加端子が現れます。 図 37. 外部端子を有効にする www.cypress.com 文書番号: 001-97886 Rev. *A 32 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 38. 内部端子と外部端子があるピン コンポーネント External Terminal Internal Terminal 図 39 に示すように、回路図で外部端子に接続するコンポーネントは「Components Catalog」の「Off-Chip」タブにあります。 図 39. オフチップ コンポーネント カタログ このカタログのコンポーネントは、基板で PSoC デバイスのピンに接続される可能性が高いものです。これらのコンポーネント には抵抗、コンデンサ、トランジスタ、インダクタ、スイッチなどを含みます。内部コンポーネントと同様に、コンポーネントを ドラッグして回路図上に配置します。 www.cypress.com 文書番号: 001-97886 Rev. *A 33 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6 GPIO のヒントおよびコツ この節は GPIO ピンの使用方法の実例を提供します。これらの例は、本アプリケーション ノートと共に提供される PSoC Creator プロジェクトに含まれます。 表 5. PSoC Creator プロジェクト # セクション プロジェクト PPSoC 4000、 4000S、4100S、 CY8C4Axx PSoC 41x7_BLE、 4100、4100M PSoC 4200、 4200M、4200L、 42x7-BLE 1 LED をトグル Project01_ToggleLED 2 入力の読み出しと出力への書き込み Project02_ReadingPin 3 デジタル ロジック ゲートから出力を駆動する Project03_HWDrive 4 双方向ピンの使用 Project04_BidirectionalPin 5 GPIO 入力/出力同期の設定 Project05_GPIOSynchronization 6 データ レジスタで GPIO をより速くトグル Project06_FastGPIOUpdate 7 GPIO 出力イネーブル ロジックの設定 Project07_OutputEnable 8 ピン割り込み Project08_PinInterrupt 9 ファームウェアで GPIO 割り込みの設定 Project09_GPIOIntConfig 10 GPIO でアナログとデジタルの両方を使用 Project10_GPIOAnalogDigital 11 より大きな駆動/シンク電流のためにピンを連動 Project11_GangingPins 12 ディープスリープモードにおける制御レジスタの 取り扱い Project12_ControlRegInDeepSleep これらのプロジェクトをテストするには、付録 B: PSoC 4 開発基板に記載されるサイプレス開発キットを使用してください。 www.cypress.com 文書番号: 001-97886 Rev. *A 34 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6.1 LED をトグル GPIO の最も簡単な用途はピンの出力をファームウェアで HIGH か LOW にセットすることです。この例はピンコンポーネント API を使って LED をトグルする出力を設定する方法を実演します。 1. デジタル出力ピン コンポーネントをプロジェクト回路図に配置します。 2. 図 40 に示すように、コンポーネントを「Pin_LED」と名前を付け、「HW connection」を無効にします。 図 40. Pin_LED の設定 3. 「External terminal」を有効にして回路図で外部コンポーネントに接続します。 4. それを物理ピンに割り当てます (この例で DWR ウィンドウの Pins タブでの P1[6])。 5. 物理ピンを LED に接続します。LED および抵抗「R」はオフチップ コンポーネントであることに注意してください。トップ デ ザイン回路図は図 41 に示されます。 www.cypress.com 文書番号: 001-97886 Rev. *A 35 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 41.LED トグル例の回路図 main.c では、以下のようにコンポーネント API を使って出力を設定します: for(;;) { /* Set LED output to logic HIGH */ Pin_LED_Write(1u); /* Delay of 500 ms */ CyDelay(500u); /* Set LED output state to logic LOW */ Pin_LED_Write(0u); /* Delay of 500 ms */ CyDelay(500u); } 6. プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 結果として、LED が 1Hz の周波数で点滅します。 6.2 入力の読み出しと出力への書き込み この例はコンポーネント API による GPIO ピンの読み出し/書き込みの方法を説明します。出力ピンは入力ピンの状態の反 転を駆動します。 1. 図 42 に示すように、2 本のピン (ハードウェア接続が無効になる 1 本のデジタル入力ピンと 1 本のデジタル出力ピン) を プロジェクト回路図に配置します。 図 42. 入力と出力の回路図例 2. .cydwr ウィンドウでピンを Pin_Input と Pin_Output に割り当てます。 www.cypress.com 文書番号: 001-97886 Rev. *A 36 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 3. 次のように、Pin_Input に基づき、コンポーネント API を使って Pin_Output の状態を設定します: for(;;) { /* Set the output pin with an inverted value of input pin */ Pin_Output_Write(~Pin_Input_Read()); } 4. プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 信号発生器から方形波を Pin_Input に供給することにより、このプロジェクトをテストすることができます。Pin_Output での信 号は Pin_Input での信号の反転となる必要があります。 6.3 デジタル ロジック ゲートから出力を駆動する 前述の例では、ピンを読み出し、他のピンをその読み出した値の反転で設定するためにプロセッサ コアを使用する方法を 示しました。この例は同様ですが、汎用デジタル ブロック (UDB) として知られているコンフィギュレーション可能なデジタル リソースを使用します。この例では、入力ピン信号は NOT ゲートに、NOT ゲートの出力は他のピンに配線されます。以下の ステップに従ってプロジェクトを作成します: 1. 図 43 に示すように、2 本のピン (ハードウェア接続が有効になる 1 本のデジタル入力ピンと 1 本のデジタル出力ピン) を プロジェクト回路図に配置します。図 43 図 43. ハードウェア接続が有効になる入力および出力ピン 2. 図 44 に示すように、NOT ゲートを配置し、ピンに接続します。 図 44. NOT ゲートの接続 3. .cydwr ウィンドウでピンを Pin_Input と Pin_Output に割り当てます。 4. このプロジェクトはいずれのコードを必要としません。プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 前述のプロジェクトと同じように、信号発生器から方形波を Pin_Input に供給することにより、このプロジェクトをテストすること ができます。Pin_Output での信号は Pin_Input での信号の反転となる必要があります。 www.cypress.com 文書番号: 001-97886 Rev. *A 37 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6.4 双方向ピンの使用 この例は、デジタル入力とデジタル出力の両方がアクティブになる双方向モードでピンを使用することを示します。PSoC Creator は双方向コンフィギュレーションでのピン コンポーネント (デジタル双方向ピン) を提供します。 しかし、このピン コンポーネントは入出力の単一の端子を示します。この使用は I2C SDA および SCL ラインに限定されます。 多くのアプリケーションでは、2 つの端子 (入力用の 1 つと出力用の 1 つ) を持っていると便利です。これはピン コンポーネン ト カスタマイズの「Digital Input」および「Digital Output」オプションの両方を有効にすることで実現できます。そのようなピンを 設定する例は以下のようです。この例では、スイッチは入力側で接続され、ピンを論理 LOW にプルダウンします。このピンは 論理「1」で連続的に駆動される抵抗プルアップに設定します。双方向ピンの状態をチェックするには、その信号を他のピンに 配線します。以下のステップに従って、プロジェクトを作成します: 1. 回路図にデジタル入力ピンを配置します。 2. 図 45 に示すように、「Digital Output」を有効にし、「Drive mode」を「Resistive pull up」に設定します。 図 45. Pin_Bidirectional の設定 コンポーネントが回路図で図 46 のようになることを確認してください。 図 46. 回路図上の Pin_Bidirectional www.cypress.com 文書番号: 001-97886 Rev. *A 38 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 3. 図 47 に示すように、論理 HIGH に接続して、抵抗プルアップに設定されるピンを連続的に駆動します。 図 47. 論理 HIGH を Pin_Bidirectional に接続 4. 現在、入力側に接続される他のピン (Pin_Status) を使用して、ピンの状態を見ることができます。図 48 に示すように、デジ タル出力ピンを配置し、Pin_Bidirectional の入力バッファ側に接続します。 図 48. Pin_Status を Pin_Bidirectional に接続 外部接続が有効になると、回路図は図 49 の通りになります。 図 49. 完全な回路図 5. .cydwr ウィンドウでピンの割り当てをします。 6. このプロジェクトはいずれのコードを必要としません。プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 Pin_Status に接続される LED は Pin_Bidirectional の入力バッファの状態を示します。スイッチを押さない場合、論理「1」は 抵抗プルアップを介して Pin_Bidirectional を駆動します。これは LED をオフにします (LED がアクティブ LOW モードで接続 されるため)。スイッチを押す場合、ストロング論理「0」は Pin_Bidirectional に現れます。これは LED を ON にします。従って、 このプロジェクトは同じピン (Pin_Bidirectional) で 2 つのドライバーを表示します (1 つは内部 (論理 1) であり、もう 1 つは外 部 (入力として動作するスイッチ) である)。 www.cypress.com 文書番号: 001-97886 Rev. *A 39 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6.5 GPIO 入力/出力同期の設定 デジタル入力および出力信号に対して、GPIO は内部クロック (HFCLK) との同期を提供し、PSoC 4 デバイス (PSoC 4000 を除く) でクロックのようなデジタル信号との同期を提供します。また、クロック イネーブルと同期ロジック リセットのコンフィ ギュレーションを提供します。図 50 と図 51 に示すように、ポート アダプタ ロジックは入出力の同期のために使用されます。 図 50. PSoC 4 での入力同期 Selected Reset To DSI From Input Pin 2 PACFGx IN SYNC[1:0] 00: Transparent 01: Single Sync 10: Double Sync 11: Reserved Selected Sync Clock 図 50 に示すように、入力同期回路には透過、シングル同期およびダブル同期のオプションがあります。 図 51. PSoC 4 の出力同期 Selected Reset From DSI To Pin 2 Selected Sync Clock PACFGx OUT SYNC[1:0] 00: Transparent 01: Single Sync 10: Clock 11: Clock Inverted 図 51 に示すように、出力同期回路には透過、シングル同期、クロックおよび反転クロックのオプションがあります。クロックと 逆転クロックは同期クロックを出力ピンに配線します。図 52 に示すように、これらはピン コンポーネント カスタマイザで設定さ れます。 www.cypress.com 文書番号: 001-97886 Rev. *A 40 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 同期クロックは HFCLK、外部信号 (DSI から)、またはいずれかのピン信号に設定することができます。同期ブロック リセット 信号は外部信号 (DSI から) またはいずれかのピン信号に設定することができます。図 53 に示すように、これらはピン コンポーネント カスタマイザの「Clocks」タブで設定されます。 ピン コンポーネント カスタマイズの「Clocking」タブのパラメーターについては、 Pins Component datasheet を参照ください。 図 52. 同期モードの設定 図 53. クロック設定 ピン信号は、UDB ポート アダプターと GPIO ブロックとの組み合わせで同期されます。また、クロックは内部クロック同期のた めにポートのすべてのピンに共有されます。詳細は PSoC 4 Architecture TRM を参照ください。 注: ポート 4 以上のピンは UDB ポート アダプタを持っていないため、それらのピン信号を同期化することができません。そ のため、これらのポート ピンはビルドの時にエラーを回避するために透過モード (Transparent mode) で使用する必要があり ます。 www.cypress.com 文書番号: 001-97886 Rev. *A 41 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 次の 2 つの例では、入力/出力同期の設定方法を説明します。 6.5.1 GPIO 入力同期 1. 1 本のデジタル入力ピン、2 本のデジタル出力ピンおよび 1 本のクロックコンポーネントをプロジェクト回路図に配置しま す。表 6 に示すように、それらを設定します。 表 6. コンポーネント コンフィギュレーション コンポーネント デジタル入力ピン 名称 コンフィギュレーション Pin_Input_DoubleSync 駆動モード: 抵抗プルアップ 同期モード: ダブル同期 クロック内 (入力同期用): 外部 デジタル出力ピン Pin_Output_LFCLK_1 出力モード: 透過 デジタル出力ピン Pin_Output_Transparent_1 出力モード: 透過 クロック LFCLK クロック タイプ: 現存のクロック ソース: LFCLK 2. 図 54 に示すように、ピンを接続して、オフチップ コンポーネントを加えます。 図 54. GPIO 入力同期回路図の例 注: PSoC 4 のクロックは、SYSCLK と LFCLK を除き、直接的にピン端子に接続できません。詳細については、PSoC 4 Architecture TRM の「Clocking System」を参照ください。 3. ピンを割り当てて、Pin_Input_DoubleSync ピンをグランドと接続されているスイッチに接続します。 4. プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 図 55 に示すように、Pin_Input_DoubleSync に接続したボタンが押される時、信号波形は発生します。入力が LFCLK と二 重同期されるため、Pin_Output_Transparent_1 ピンは LFCLK の 2 番目の立ち上がりエッジで LOW になります。 www.cypress.com 文書番号: 001-97886 Rev. *A 42 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 55. 入力/出力信号波形 6.5.2 GPIO 出力同期 1. 図 56 に示すように、1 本のデジタル入力ピン、3 本のデジタル出力ピンと 1 つのクロック コンポーネントをプロジェクト 回路図に配置して、それらを表 7 のように設定します。 図 56. GPIO 出力同期回路図の例 www.cypress.com 文書番号: 001-97886 Rev. *A 43 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 表 7. ピン コンフィギュレーション コンポーネント デジタル入力ピン 名称 コンフィギュレーション 駆動モード: 抵抗プルアップ Pin_Input_Transparent 同期モード: 透過 デジタル出力ピン Pin_Output_LFCLK_2 出力モード: 透過 デジタル出力ピン Pin_Output_SingleSync 出力モード: シングル同期 出力クロック (出力同期用): 外部 デジタル出力ピン Pin_Output_Transparent_2 出力モード: 透過 クロック LFCLK クロック タイプ: 現存のクロック ソース: LFCLK 2. 図 56 に示すように、ピンを接続します。 3. ピンを割り当てて、Pin_Input_Transparent ピンをグランドと接続されているスイッチに接続します。ポート 4 以上のピンは同期機 能をサポートしないため、Pin_Output_SingleSync に選択できないことにご注意ください。 4. プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 図 57 は、ボタン押しに対応する波形を示します。 出力が LFCLK と同期化されるため、Pin_Output_SingleSync ピンは LFCLK の次の立ち上がりエッジで LOW になります。 同期がないため、Pin_Output_Transparent_2 ピンは Input_Transparent ピンと同時に LOW になります。 図 57. 入力/出力信号波形 www.cypress.com 文書番号: 001-97886 Rev. *A 44 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6.6 データ レジスタで GPIO をより速くトグル コンポーネント API は GPIO ピンを制御するために何よりも簡単ですが、最も速い方法ではありません。 ピン P5[2]にマップされた Pin_1 に論理「1」を書き込む例を参照ください。以下は API 関数呼び出しです: Pin_1_Write(1); 同等のアセンブリ コードは、プロジェクト ワークスペースの「Results」タブのリスト ファイル (main.lst) で見ることができます。 mov r0, #1 ;load the value in r0 bl Pin_1_Write ;call Pin_1_Write Pin_1_Write 関数のコンポーネント API のアセンブリ コードもリスト ファイルで見ることができます。 ldr r3, .L2 ;load the address of Pin_1_DR into r3 ldr r1, [r3] ;load the value of Pin_1_DR into r1 mov r2, #251 ;load 251 into r2 (value depends on location of pin ;in 8 bit wide port, in this case, Pin_1 is on port P5[2]) and r2, r1 ;AND the values of r2 and r1 and load result back in r2 lsl r0, r0, #2 ;left shift r0 by two bits and load the result back in ;r0(this instruction is not present for the pin on LSB) mov r1, #4 ;load value of 4 into r1 (depends on the location of ;pin in 8 bit wide port) and r0, r1 ;and the value of r0(contains "value")and r1 and load ;the result in r0 orr r0, r2 ;r0 ;or the value of r0 with r2 and load the result back in str r0, [r3] ;store the result back in Pin_1_DR bx lr ;return to calling function このコードは Pin_1 に論理「1」を書き込むために 20 CPU サイクルかかります。 また、ピンを速く更新するために、それぞれのピン コンポーネントのために作成された<pin_name>.h ファイルでレジスタ定義 およびマスクを使用することができます。 以下の通り、P5[2]にマップされた Pin_1 に論理「1」をセットします。Pin_1_DR は Pin_1 のデータ レジスタです。 Pin_1_DR |= Pin_1_MASK リスト ファイル (main.lst) では、上記の命令は以下の通りにアセンブリ コードになります: www.cypress.com 文書番号: 001-97886 Rev. *A 45 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 ldr r3, .L3 ;load the address of Pin_1_DR into r3 ldr r1, [r3] ;load value of Pin_1_DR into r1 mov r2, #4 ;move value of 4 (Pin_1_MASK) into r2 orr r2, r1 ;Set the bit in Pin_1_DR strb r2, [r3] ;Store it back into Pin_1_DR コンポーネント API を使用して 20 サイクルかかる場合に比較して、このコードは 8 サイクルかかります。 コンポーネント API はファームウェアを介して、直接レジスタ書き込みを必要としない以下のアクションを実行します。 関数の呼び出し ピンを論理「1」または論理「0」にセットするために関数引数をチェック 関数から返す 直接レジスタ書き込みを使用してピンをセット、リセットおよび読み出すために、PSoC Creator に以下のマクロが提供され ます: マクロ 説明 CY_SYS_PINS_SET_PIN(portDR, pin) ピンの出力値を論理 HIGH に設定する portDR はポート データ レジスタのアドレス pin はピン番号 (0~7) CY_SYS_PINS_CLEAR_PIN(portDR, pin) ピンの出力値を論理 LOW にクリアする portDR はポート データ レジスタのアドレス pin はピン番号 (0~7) CY_SYS_PINS_READ_PIN(portPS, pin) ピン値を読み出す portPS はポート ステータス レジスタのアドレス pin はピン番号 (0~7) これらのマクロの詳細はシステム リファレンス ガイド (PSoC Creator のヘルプ メニューから利用できる) を参照ください。 以下の命令を実現して、API 関数呼び出しと直接レジスタ書き込みの性能を比較するために使用できる PSoC Creator プロ ジェクトを作成します: 1. ハードウェア接続が無効になる 2 本のデジタル出力ピンをプロジェクト回路図に配置し、図 58 に示すように「Pin_Test」 および「Pin_Index」と名前を付けます。 図 58. データ レジスタ回路図例で GPIO をトグル www.cypress.com 文書番号: 001-97886 Rev. *A 46 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 2. .cydwr ウィンドウでピンを割り当てます。 3. main.c ファイルに以下のコードを追加します。このコードは Pin_Index を HIGH に設定し、コンポーネント API を使って Pin_Test をトグルします。その後、Pin_Index を LOW に設定し、データ レジスタ (DR) を使用して Pin_Test をトグルします。 for(;;) { /* Set IndexPin */ Pin_Index_Write(1); /********************* API Call ********************/ /* Set TestPin */ Pin_Test_Write(1u); /* Clear TestPin */ Pin_Test_Write(0u); /* do it again */ Pin_Test_Write(1u); Pin_Test_Write(0u); /***************************************************/ /* Clear IndexPin */ Pin_Index_Write(0); /************* Direct Register Writes **************/ /* Set TestPin */ CY_SYS_PINS_SET_PIN(Pin_Test__DR, Pin_Test_SHIFT); /* Clear TestPin */ CY_SYS_PINS_CLEAR_PIN(Pin_Test__DR, Pin_Test_SHIFT); /* do it again */ CY_SYS_PINS_SET_PIN(Pin_Test__DR, Pin_Test_SHIFT); CY_SYS_PINS_CLEAR_PIN(Pin_Test__DR, Pin_Test_SHIFT); /***************************************************/ } 注: Pin_Test__DR はデータ レジスタのアドレスである一方、Pin_Test__DR もデータ レジスタの値です。データ レジ スタ アドレス用のマクロの詳細はプロジェクト ワークスペースのソース ファイル フォルダにあるピン コンポーネントの.h ファイ ル (この場合では Pin_Test.h) を参照ください。 ピンの割り当ては開発中に変更される場合、コードを変更する必要がないようにデータ レジスタへ書き込まれるコードは、API 呼び出しと同じように移植可能なものです。 www.cypress.com 文書番号: 001-97886 Rev. *A 47 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 4. 図 59 に示すように、オシロスコープを使用して 2 本のピンの波形を観察します。 図 59. 出力信号波形 A C B D A. Pin_Test_Write(1u) B. Pin_Test_Write(0u) C. CY_SYS_PINS_SET_PIN(Pin_Test__DR, Pin_Test_SHIFT) D. CY_SYS_PINS_CLEAR_PIN(Pin_Test__DR, Pin_Test_SHIFT) 図 59 に示すように、データ レジスタへ直接に書き込むことにより、ピンは API 関数を呼び出す方法より速くトグルできます。 時間効率良く行うためのコーディング技術についてはアプリケーション ノート AN89610 – PSoC 4 and PSoC 5LP ARM Cortex Code Optimization を参照ください。 6.7 GPIO 出力イネーブル ロジックの設定 この例は GPIO ピンの出力イネーブル ロジックを設定し、使用する方法を示します。このプロジェクトは PSoC 4200、PSoC 42xx_BL、PSoC 4200M、および PSoC 4200L 製品でのみ利用可能です。 1. 2 本のデジタル出力ピンをプロジェクト回路図に配置します。 2. 図 60 に示すように、各ピンのコンフィギュレーション ダイアログを開いて、Output Enable オプションを選択します。 図 60. 出力イネーブルの選択 www.cypress.com 文書番号: 001-97886 Rev. *A 48 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 3. 制御レジスタを回路図に配置します。 4. 図 61 に示すように、2 つの出力を持つように制御レジスタを設定します。 図 61. 制御レジスタが 2 個の出力を持つように設定 5. 1 つの論理 LOW「0」コンポーネントを追加します。 6. 図 62 に示すように、ロジック LOW をピンに接続して、LED 用のオフチップ コンポーネントを加えます。 図 62. 制御レジスタの駆動ピンの出力イネーブル 7. ピンを割り当て、LED に接続します。 8. main.c ファイルに以下のコードを追加します。 uint8 count; for(;;) { for(count = 0u; count < 4u; count++) { /* Set Control_Reg Value */ Control_Reg_Write(count); /* Delay for 500ms */ CyDelay(500u); } } 9. プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 結果として、2 本のピンの出力は、LED を「3」までカウントさせる Control_Reg の状態によって制御されます。 www.cypress.com 文書番号: 001-97886 Rev. *A 49 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6.8 ピン割り込み この例では、コンポーネント API を使って同じポートの 2 本のピンから生成された 1 つの割り込みを使用する方法を示します。 これらの 2 本のピンは 1 つだけの IRQ 端末を使用することができます。そのため、割り込みソースは ISR で識別する必要が あります。 1. プロジェクト回路図の 2 本のピンを配置します: 「Pin_Button」というデジタル入力ピンの 1 本および「Pin_LED」というデ ジタル出力ピンの 1 本 2. Pin_Button のピン数を「2」に、「Drive mode」を「Resistive Pull Up」に、「Interrupt」を「Falling-Edge」に設定します。 こ れにより、IRQ 端子を表示します。 3. 図 63 に示すように、割り込みコンポーネントを irq 端子に接続します。 図 63. ピン割り込みの回路図例 4. .cywdr ウィンドウでピンを割り当てます。 5. コンポーネント API を使用して、Pin_Button に応じて LED ピンの状態を設定します。以下の main.c コードをコピーして ください: #define LED_ON (0u) #define LED_OFF (1u) /* The flag to enter ISR_Button */ uint8 isrFlag = 0u; /* The LED state */ uint8 ledState = LED_OFF; /* ISR for ISR_Button */ CY_ISR(INT_ISR_Button) { /* Set the flag */ isrFlag = 1u; /* Check which pin caused interrupt by reading interrupt status register */ if(Pin_Button_INTSTAT & (0x01u << Pin_Button_SHIFT)) { www.cypress.com 文書番号: 001-97886 Rev. *A 50 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 /* Triggered by Pin_Button_0 */ ledState = LED_OFF; } else { /* Triggered by Pin_Button_1 */ ledState = LED_ON; } /* Clear interrupt */ Pin_Button_ClearInterrupt(); } int main() { /* Start Pin ISR */ isr_Button_StartEx(INT_ISR_Button); /* Enable global interrupt */ CyGlobalIntEnable; for(;;) { /* Check the flag */ if(0u != isrFlag) { /* Clear the flag */ isrFlag = 0u; /* Drive the LED with ledState. Led State is updated in ISR */ Pin_LED_Write(ledState); } /* Delay 1ms */ CyDelay(1u); } } main.c コードでは、CY_ISR(INT_ISR_Button)はピン割り込みのための割り込みサービス ルーチンです。 6. プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 その結果は、ボタンを離す時を除いて、Pin_Button_0 に接続されているボタンを押すと LED がオフになり、Pin_Button_1 に 接続されているボタンを押すと LED がオンになります。(ボタンのスイッチ バウンスにより、ボタンを 1 回押すと、いくつかの割 り込みが発生する場合があります。詳細は、AN60024 – Switch Debouncer and Glitch Filter with PSoC 3, PSoC 4, and PSoC 5LP を参照ください) main.c コードでは、 Pin_Button_INTSTAT および Pin_Button_SHIFT はピン コンポーネントにより提供される関数と定数マ クロです。これらは、どのピンが割り込みを発生させるか検出するために使用されます。 Pin_Button_ClearInterrupt()関数は、割り込みステータス レジスタをクリアします。 割り込みと割り込みハンドラの書き込みの詳細情報は AN90799 – PSoC 4 Interrupts を参照ください。 www.cypress.com 文書番号: 001-97886 Rev. *A 51 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6.9 ファームウェアで GPIO 割り込みの設定 GPIO 割り込みは、割り込みコンフィギュレーション レジスタ内の 2 ビットへ書き込むことによって動的に設定されます。 PSoC 4000 用: GPIO_PRTx_INTR_CFG[2y+1:2y] その他の PSoC 4 製品用: PRTx_INTCFG[2y+1:2y] ここでは、「x」はポート番号で、「y」はピン番号です (表 8 を参照)。ピン割り込みを有効/無効にするためにコンフィギュレー ションを随時変更することができます。 表 8. GPIO 割り込みのタイプおよびビット設定 エッジ タイプ PRTx_INTCFG [2y+1:2y] 説明 0 無効 割り込みが無効 1 立ち上がりエッジ 立ち上がりエッジでトリガー 2 立ち下りエッジ 立ち下がりエッジでトリガー 3 両方のエッジ どちらのエッジでもトリガー この例では、Pin_Button は、立ち上がりエッジで発生する割り込みとしてコンフィギュレーションされます。割り込みが発生す ると、それは立ち下がりエッジで発生する割り込みとしてコンフィギュレーションされます。割り込みがトリガーされると、LED は トグルされます。 1. デジタル入力ピンとデジタル出力ピンをプロジェクト回路図に配置します。図 64 に示すように、オフチップ コンポーネント を LED とボタン用に追加します。 図 64. サンプル回路図 2. cydwr ウィンドウでピンを Pin_Button と Pin_LED に割り当てます。 3. Pin_Button を抵抗プルアップ ピンとして設定し、1 つのボタンに接続します。 4. Pin_LED をストロング ドライブ ピンとして設定し、外部 LED に接続します。 5. main.c ファイルに以下のコードを追加します。このプロジェクトでは、デバイスのレジスタ名の代わりに、PSoC Creator が提供する Pin_Button__INTCFG (cyfitter.h ファイルに保存される) を割り込みのコンフィギュレーションに使用します。選択したデバイスでレ ジスタの正確な名称を考慮する必要がありません。これにより、コードを変更せずプロジェクトを異なった PSoC 4 デバイスに移植 することができます。 #define INTERRUPT_MASK 0x03 #define RISING_EDGE 0x01 #define FALLING_EDGE 0x02 int main() { /* Variable to save temporary data */ uint32 regVal = 0x00u; www.cypress.com 文書番号: 001-97886 Rev. *A 52 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 /* Flag to switch interrupt type */ uint8 edgeFlag = 0x00u; for(;;) { /* Get value of port interrupt configuration register */ regVal = CY_GET_REG32(Pin_Button__INTCFG); /* Clear the configuration bits for the Pin_Button. Pin_Button_SHIFT is multiplied by 2 as two bits of the interrupt configuration register sets the configuration for one pin */ regVal &= ~(INTERRUPT_MASK << (Pin_Button_SHIFT * 2)); if(edgeFlag) { /* Set P0[7] to GPIO interrupt rising-edge trigger. Pin_Button_SHIFT is multiplied by 2 as two bits of the interrupt configuration register sets the configuration for one pin */ CY_SET_REG32(Pin_Button__INTCFG, regVal | (RISING_EDGE << (Pin_Button_SHIFT * 2))); } else { /* Set P0[7] to GPIO interrupt falling-edge trigger. Pin_Button_SHIFT is multiplied by 2 as two bits of the interrupt configuration register sets the configuration for one pin */ CY_SET_REG32(Pin_Button__INTCFG, regVal | (FALLING_EDGE << (Pin_Button_SHIFT * 2))); } /* Toggle edgeFlag */ edgeFlag ^= 0x01u; /* Wait for Interrupt */ while(!(CY_GET_REG32(Pin_Button__INTSTAT) & (0x01u << Pin_Button_SHIFT))) {;} /* Clear interrupt */ CY_SET_REG32(Pin_Button__INTSTAT, (0x01u << Pin_Button_SHIFT)); /* Toggle LED */ Pin_LED_Write(~Pin_LED_Read()); } } 6. プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 ボタンを押すまたは離すと、LED はトグルします。ボタンを押すと、割り込みは立ち下がりエッジでトリガーされ、 ボタンを離す と割り込みは立ち上がりエッジでトリガーされます。 PSoC 4 Architecture TRM は、ブロック図と機能説明を含む、GPIO 割り込みの詳細を記載します。他に AN90799 – PSoC 4 Interrupts アプリケーション ノートを参照することもできます。 www.cypress.com 文書番号: 001-97886 Rev. *A 53 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6.10 GPIO でアナログとデジタルの両方を使用 この例では、ピンをアナログとデジタルの機能に設定し使用する方法を示します。この例では、出力ピンは IDAC とファーム ウェアにより交互に制御されます。ファームウェアにより制御される時、LED が点滅します。IDAC により制御される時、LED が徐々に点灯します。 このような多重化は、単一のピンのアナログ機能とデジタル機能を利用したい場合は有用です。また、これにより、デザインに 使用する GPIO ピンの数を削減することができます。 ファームウェアではなく、ハードウェア接続を使用してデジタル出力を制御することもできます。プロジェクトの必要な修正点に ついては、このセクションの終わりの説明を参照してください。 ピンの信号のソースをコンフィギュレーションするためには、HSIOM_PORT_SELx レジスタを更新します。前の例のように、 PSoC 4 デバイス ファミリのすべてに容易に移植するために、このプロジェクトはピン コンポーネントで定義されるレジスター 名を使用します。 これらのステップに従って回路図とファームウェアを作成します。 1. アナログ ピンと Current DAC を回路図に配置します。 2. ピン コンポーネントを物理ピンに割り当てます (この例では P0[2]を使用)。 3. 図 65 に示すように、アナログとデジタルの出力の両方を選択してピンをコンフィギュレーションします。 4. 図 66 に示すように IDAC の極性を Negative (Sink) として設定します。図 67 に示すように IDAC をアナログ ターミナルに接続します。 5. プロジェクトを構築して必要な API を作成します。 図 65. アナログとデジタルの両方としてコンフィギュレーションした LED ピン www.cypress.com 文書番号: 001-97886 Rev. *A 54 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 66. IDAC 設定 図 67. PSoC Creator のアナログおよびデジタル スイッチング スキームの回路図 6. main.c ファイルに次のコードを追記し、プロジェクトを再度構築します。生成された HEX ファイルを使ってデバイスをプロ グラムします。このコードでは、ピン コンポーネントで定義されるマクロと Cyfitter.h が使用されることに注意してください。 #define HSIOM_SW_GPIO 0x00 #define HSIOM_AMUX_BUS_A 0x06 int main() { uint32 i = 0u; uint32 regVal = 0x00u; /* Disable Input Buffer */ Pin_LED_INP_DIS |= (0x01u << Pin_LED_SHIFT); /* Start IDAC */ IDAC_Start(); for(;;) { /* Get the current value of HSIOM_PORT_SEL0 register */ regVal = CY_GET_REG32(Pin_LED__0__HSIOM); regVal &= ~Pin_LED__0__HSIOM_MASK; /* Set LED Pin as GPIO controlled by firmware */ regVal = CY_SET_REG32(Pin_LED__0__HSIOM, regVal |(HSIOM_SW_GPIO << Pin_LED__0__HSIOM_SHIFT)); www.cypress.com 文書番号: 001-97886 Rev. *A 55 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 /* Set LED Pin to Strong Drive Mode */ Pin_LED_SetDriveMode(Pin_LED_DM_STRONG); for(i= 0u; i < 5u; i++) { /* Toggle LED with 100-ms delay */ Pin_LED_Write(0u); CyDelay(100u); Pin_LED_Write(1u); CyDelay(100u); } /* Get the current value of HSIOM_PORT_SEL0 register */ regVal = CY_GET_REG32(Pin_LED__0__HSIOM); regVal &= ~Pin_LED__0__HSIOM_MASK; /* Connect LED Pin to AMUXBUS-A */ CY_SET_REG32(Pin_LED__0__HSIOM, regVal | (HSIOM_AMUX_BUS_A << Pin_LED__0__HSIOM_SHIFT)); /* Set LED Pin to High Impedance-Analog Drive Mode */ Pin_LED_SetDriveMode(Pin_LED_DM_ALG_HIZ); for(i = 0u; i < 0x7fu; i++) { /* Adjust LED brightness */ IDAC_SetValue(i); /* Delay 20 ms */ CyDelay(20u); } } } この結果はファームウェアと IDAC が交代に制御する出力です。 このプロジェクトでは、ファームウェアの制御からデジタル出力へのハードウェア接続に変えるのは簡単です。ステップ 3 で、 ピン コンフィギュレーション ウィンドウでの HW 接続をイネーブルにするのみで良いです。その後、デジタル リソースをピンに 配線できます。このデジタル リソースをピン出力として選択するには、HSIOM_PORT_SEL レジスタを使って、そのピンを DSI 制御の GPIO またはピン固有のデジタル リソース接続として設定します。詳細は PSoC 4 アーキテクチャ TRM を参照く ださい。 www.cypress.com 文書番号: 001-97886 Rev. *A 56 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6.11 より大きな駆動/シンク電流のためにピンを連動 回路の全ソース/シンク能力を向上するために、GPIO ピンを連動させます (互いに短絡させます)。この例は、4 本の GPIO ピンを使用した PWM 信号の駆動を示します。このプロジェクトは PSoC 4200、PSoC 42xx_BL、PSoC 4200M および PSoC 4200L 製品でのみ利用可能であることに注意してください。 1. PWM (TCPWM モード) およびクロック コンポーネントを回路図に配置し、設定します。 2. シングルのデジタル出力ピン コンポーネントを配置します。 3. 図 68 に示すように、コンポーネントを接続します。 図 68. PWM は単一のピンに駆動 4. 図 69 のように、ピン コンフィギュレーション ダイアログを開き、 ピンの数を適切に設定します。この例では、4 つの GPIO ピンを使います。図 70 および図 71 に示すように、 Output Mode を Single-Sync および Out Clock を External に 設定します。 注: 各ピンでの異なる出力信号遅延を回避するために出力を同期化します。 図 69. コンポーネントで複数のピンをコンフィギュレーション www.cypress.com 文書番号: 001-97886 Rev. *A 57 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 70. 出力モード設定 図 71. 出力クロック設定 5. (任意) 図 72 のように、より簡単な PCB ルーティングのために、ピン マッピングを Contiguous に設定します。 www.cypress.com 文書番号: 001-97886 Rev. *A 58 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 図 72. 隣接マッピングを有効化 6. ピン コンポーネントを物理ピンに割り当てます。 7. Sync コンポーネントを配置し、Sync コンポーネントを介して信号ソース (この例では PWM) を各ピン端子に接続します。 他のクロック コンポーネントを配置し、そのソースを高周波数クロック (HFCLK) に設定します。ピン コンポーネントの out_clk 端子および Sync コンポーネントのクロック端子を HFCLK に接続します。 ピン信号の遅延の差を低減するために、高周波数の同期クロックを選択することが重要です。Sync コンポーネントは 1 つの クロック ドメインから他方にわたる信号を同期するために必要です。この場合、PWM 出力はクロック (1kHz) ドメインから HFCLK に移ります。 図 73. PWM は 4 つのピンを駆動 8. プロジェクトをビルドし、PSoC 4 デバイスをプログラムします。 PWM の出力は全ての 4 本の GPIO に駆動されます。必要な場合、これらのピンは PCB の外部で短絡および外部回路に接 続することができます。 www.cypress.com 文書番号: 001-97886 Rev. *A 59 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 6.12 ディープスリープモードにおける制御レジスタの取り扱い この例では、低消費電力モードで出力のグリッチを避けるために GPIO ピンを凍結する方法について示します。例として、制 御レジスタがピンを駆動する場合を考えてください。デバイスがディープスリープ モードに入ると、すべての I/O はユーザーの 介入なしで凍結されます。デバイスがウェイクアップすると、これらの I/O は自動的に元の設定に復元されます。しかし、制御 レジスタはディープスリープ モードでデータを失います。I/O が凍結状態を解除する前に、それを復元する必要があります。そ うでなければ、出力にグリッチが発生します。PSoC 4 は CySysPmFreezeIo()と CySysPmUnfreezeIo() API 関数の 形で GPIO を凍結および解凍するのために代替制御を提供しています。以下のステップに従って、PSoC Creator プロジェク トを作成します。このプロジェクトは PSoC 4200、PSoC 42xx_BL、PSoC 4200M および PSoC 4200L でのみ利用可能であ ることに注意してください。 1. 1 つのデジタル入力ピン、2 つのデジタル出力ピン、クロック、制御レジスタおよび割り込みコンポーネントを回路図に配 置します。 2. 表 9 のように各コンポーネントを設定します。図 74 に示すように、コンポーネントを接続します。 表 9. コンポーネントの構成 コンポーネント デジタル入力ピン 名称 コンフィギュレーション 駆動モード: 抵抗プルアップ Pin_Button 割り込み: 立ち上がりエッジ デジタル出力ピン Pin_Clock デフォルト設定 デジタル出力ピン Pin_CtrlReg デフォルト設定 クロック SYSCLK ソース: SYSCLK 割り込み isr_Buttton デフォルト設定 コントロール レジスタ Ctrl_Reg 出力: 1 初期値: 1 図 74. ディープスリープ終了時のグリッチを回避 3. main.c ファイルに以下のコードを追加します。 /* Set FREEZE_IO to 0x01 to avoid glitch by enabling the GPIO freeze */ /* else set it to 0 */ #define FREEZE_IO 0x01 /* The flag to enter ISR */ www.cypress.com 文書番号: 001-97886 Rev. *A 60 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 uint8 isrFlag = 0u; CY_ISR(ISR_Handle) { /* Set the flag */ isrFlag = 1u; /* Clear pin interrupt */ Pin_Button_ClearInterrupt(); } int main() { /* This variable is used as backup for Control register value */ uint8 ctrlRegVal = 0u; /* Clear the flag */ isrFlag = 0u; /* Start the ISR */ isr_Button_StartEx(ISR_Handle); CyGlobalIntEnable; /* Set Control register output as high */ Ctrl_Reg_Write(1u); for(;;) { /* If freeze flag is set */ if(0u != isrFlag) { /* Clear isr flag set in GPIO Interrupt Handler */ isrFlag = 0u; /* Rewrite the value */ Ctrl_Reg_Write(ctrlRegVal); #if(FREEZE_IO) /* Unfreeze I/O */ CySysPmUnfreezeIo(); #endif } /* Delay 200us */ CyDelayUs(200u); /* Store the value of Control register */ ctrlRegVal = Ctrl_Reg_Read(); #if(FREEZE_IO) /* Freeze I/O */ CySysPmFreezeIo(); #endif /* Enter Deep-Sleep mode */ CySysPmDeepSleep(); } } www.cypress.com 文書番号: 001-97886 Rev. *A 61 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 フリーズ オプションを無効にするために、 FREEZE_IO を「0」に設定します。デバイスをビルドし、プログラムします。図 75 に 示すように、ボタンを押して離す時、グリッチは Pin_CtrlReg で見ることができます。フリーズ オプションを有効にするために、 FREEZE_IO を「1」に設定します。デバイスをビルドし、プログラムします。図 76 に示すように、この場合、I/O はフリーズされ、 グリッチは観察されません 図 75. 出力信号波形 (I/O フリーズなし) Wakeup Enter Deep-Sleep SYSCLK Pin_CtrlReg Pin_Button 図 76. 出力信号波形 (I/O フリーズあり) www.cypress.com 文書番号: 001-97886 Rev. *A 62 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 7 関連アプリケーション ノート AN79953 – Getting Started with PSoC 4 AN211293 – Getting Started with PSoC Analog Coprocessor AN86233 – PSoC 4 Low-Power Modes and Power Reduction Techniques AN60024 – Switch Debouncer and Glitch Filter with PSoC 3, PSoC 4, and PSoC 5LP AN72382 – Using PSoC 3 and PSoC 5LP GPIO Pins AN90799 – PSoC 4 Interrupts AN2094 – PSoC 1 Getting Started with GPIO AN89610 - PSoC® 4 and PSoC 5LP ARM Cortex Code Optimization 8 まとめ このアプリケーション ノートは PSoC Creator のピン コンポーネントを使用する PSoC 4 および PSoC アナログ コプロセッサ の GPIO モードの基本的な使用例について説明します。 9 著者について 氏名: Charles Cheng 役職: アプリケーション エンジニア 経歴: Charles は、PSoC アプリケーションに特化したサイプレス セミコンダクタのプログラマブル システム部のア プリケーション エンジニアです。 氏名: Rajiv Badiger 役職: アプリケーション エンジニア スタッフ 経歴: Rajiv は、PSoC アプリケーションに特化したサイプレス セミコンダクタのプログラマブル システム部のアプ リケーション エンジニアです。 www.cypress.com 文書番号: 001-97886 Rev. *A 63 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 A 付録 A: PSoC 4 と PSoC アナログ コプロセッサの GPIO と PSoC 1、PSoC 3、 PSoC 5LP の GPIO の比較 PSoC 4 および PSoC アナログ コプロセッサの GPIO は PSoC 1、PSoC 3、および PSoC 5LP と異なります。詳細は表 10 を参照ください。 表 10. PSoC 4 と PSoC アナログ コプロセッサの GPIO 対 PSoC 1、PSoC 3、PSoC 5LP の GPIO GPIO 機能 PSoC 1 PSoC 3 PSoC 4/PSoC アナログ コプロセッサ PSoC 5LP CapSense √ √ √ √ LCD セグメントの駆動 √ √ √* √ 8 つの駆動モード √ √ √ √ POR 状態の設定 × √ × √ ポート DR と PS の分離 × √ √ √ 入力/出力同期 × Bus_clk HFCLK、外部* Bus_clk *PSoC 4000 で使用不可 B 付録 B: PSoC 4 開発基板 以下のサイプレスの開発基板を使用して、本アプリケーション ノートで提供される PSoC Creator プロジェクトをテストすること ができます。 デバイス ファミリ 開発基板 PSoC 4000 CY8CKIT-040 PSoC 4000 Pioneer Development Kit PSoC 4000S/4100S CY8CKIT-041 PSOC® 4 S-Series Pioneer Kit PSoC 4200/PSoC 4100 CY8CKIT-042 PSoC® 4 Pioneer Kit PSoC 4 CY8CKIT-049 4xxx Prototyping Kits PSoC 42x7_BL CY8CKIT-042-BLE Bluetooth® Low Energy (BLE) Pioneer Kit PSoC 4200M CY8CKIT-044 PSoC® 4 M-Series Pioneer Kit PSoC 4200L CY8CKIT-046 PSoC® 4 L-Series Pioneer Kit PSoC アナログ コプロセッサ CY8CKIT-048 PSoC® Analog Coprocessor Pioneer Kit www.cypress.com 文書番号: 001-97886 Rev. *A 64 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 改訂履歴 文書名: AN86439 - PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 文書番号: 001-97886 版 ECN 変更者 発行日 ** 4802475 HZEN 07/06/2015 これは英語版 001-86439 Rev. *A を翻訳した日本語版 001-97886 Rev. **です。 *A 5266672 HZEN 05/10/2016 これは英語版 001-86439 Rev. *D を翻訳した日本語版 001-97886 Rev. *A です。 www.cypress.com 変更内容 文書番号: 001-97886 Rev. *A 65 PSoC® 4 および PSoC アナログ コプロセッサ – GPIO ピンの使用 ワールドワイドな販売と設計サポート サイプレスは、事業所、ソリューション センター、メーカー代理店および販売代理店の世界的なネットワークを持っています。お客様の 最寄りのオフィスについては、サイプレスのロケーション ページをご覧ください。 製品 PSoC®ソリューション ARM® Cortex®マイクロコントローラー cypress.com/arm cypress.com/psoc 車載用 cypress.com/automotive PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP クロック & バッファ cypress.com/clocks サイプレス開発者コミュニティ インターフェース cypress.com/interface 照明 & 電力制御 cypress.com/powerpsoc メモリ cypress.com/memory テクニカル サポート PSoC cypress.com/psoc cypress.com/support タッチ センス cypress.com/touch USB コントローラー cypress.com/usb ワイヤレス/RF cypress.com/wireless コミュニティ | フォーラム | ブログ | ビデオ | トレーニング PSoC はサイプレス セミコンダクタ社の登録商標であり、PSoC Creator は同社の商標です。本書で言及するその他すべての商標または登録商標は、それぞれ の所有者に帰属します。 Cypress Semiconductor 198 Champion Court San Jose, CA 95134-1709 電話 : 408-943-2600 ファックス : 408-943-4730 ウェブサイト: www.cypress.com © Cypress Semiconductor Corporation, 2014 - 2016. 本書面は、Cypress Semiconductor Corporation 及び Spansion LLC を含むその子会社(以下、「Cypress」と いう。)に帰属する財産である。本書面(本書面に含まれ又は言及されているあらゆるソフトウェア又はファームウェア(以下、「本ソフトウェア」という。) を含む)は、アメリカ合衆国及び世界のその他の国における知的財産法令及び条約に基づき、Cypress が所有する。Cypress はこれらの法令及び条約に基づく全 ての権利を留保し、また、本段落で特に記載されているものを除き、Cypress の特許権、著作権、商標権又はその他の知的財産権のライセンスを一切許諾してい ない。本ソフトウェアにライセンス契約書が伴っておらず、かつ、あなたが Cypress との間で別途本ソフトウェアの使用方法を定める書面による合意をしてい ない場合、Cypress は、あなたに対して、(1)本ソフトウェアの著作権に基づき、(a)ソースコード形式で提供されている本ソフトウェアについて、Cypress ハードウェア製品と共に用いるためにのみ、組織内部でのみ、本ソフトウェアの修正及び複製を行うこと、並びに(b)Cypress のハードウェア製品ユニットに 用いるためにのみ、(直接又は再販売者及び販売代理店を介して間接のいずれかで)エンドユーザーに対して、バイナリーコード形式で本ソフトウェアを外部に 配布すること、並びに(2)本ソフトウェア(Cypress により提供され、修正がなされていないもの)に抵触する Cypress の特許権のクレームに基づき、 Cypress ハードウェア製品と共に用いるためにのみ、本ソフトウェアの作成、利用、配布及び輸入を行うことについての非独占的で譲渡不能な一身専属的ライセ ンス(サブライセンスの権利を除く)を付与する。本ソフトウェアのその他の使用、複製、修正、変換又はコンパイルを禁止する。 適用される法律により許される範囲内で、Cypress は、本書面又はいかなる本ソフトウェアに関しても、明示又は黙示をとわず、いかなる保証(商品性及び特定 の目的への適合性の黙示の保証を含むがこれらに限られない)も行わない。適用される法律により許される範囲内で、Cypress は、別途通知することなく、本書 面を変更する権利を留保する。Cypress は、本書面に記載のあるいかなる製品又は回路の適用又は使用から生じる一切の責任を負わない。本書面で提供されたあ らゆる情報(あらゆるサンプルデザイン情報又はプログラムコードを含む)は、参照目的のためのみに提供されたものである。この情報で構成するあらゆるアプ リケーション及びその結果としてのあらゆる製品の機能性及び安全性を適切に設計し、プログラムし、かつテストすることは、本書面のユーザーの責任において 行われるものとする。Cypress 製品は、兵器、兵器システム、原子力施設、生命維持装置若しくは生命維持システム、蘇生用の設備及び外科的移植を含むその他 の医療機器若しくは医療システム、汚染管理若しくは有害物質管理の運用のために設計され若しくは意図されたシステムの重要な構成部分として用いるため、又 はシステムの不具合が人身傷害、死亡若しくは物的損害を生じさせることになるその他の使用(以下、「本目的外使用」という。)のためには、設計、意図又は 承認されていない。重要な構成部分とは、装置又はシステムのその構成部分の不具合が、その装置若しくはシステムの不具合を生じさせるか又はその安全性若し くは実効性に影響すると合理的に予想できる、機器又はシステムのあらゆる構成部分をいう。Cypress 製品のあらゆる本目的外使用から生じ、若しくは本目的外 使用に関連するいかなる請求、損害又はその他の責任についても、Cypress はその全部又は一部をとわず一切の責任を負わず、かつ、あなたは Cypress をそれ ら一切から免除するものとし、本書により免除する。あなたは、Cypress 製品の本目的外使用から生じ又は本目的外使用に関連するあらゆる請求、費用、損害及 びその他の責任(人身傷害又は死亡に基づく請求を含む)から Cypress を免責補償する。 Cypress、Cypress のロゴ、Spansion、Spansion のロゴ及びこれらの組み合わせ、PSoC、CapsSense、EZ-USB、F-RAM、及び Traveo は、米国及びその他の 国における Cypress の商標又は登録商標である。Cypress の商標のより完全なリストは、cypress.com を参照のこと。その他の名称及びブランドは、それぞれの 権利者の財産として権利主張がなされている可能性がある。 www.cypress.com 文書番号: 001-97886 Rev. *A 66