Version: **
Translation - Japanese: PSoC® 3 / PSoC 5LP の電源投入シーケンス - KBA213235 - Community Translated (JA)
Question:
Is there a power sequence required for different supplies such as VDDIO, VDDA, and VDDD in PSoC 3 and PSoC 5LP?
Answer:
No, there is no power sequence required. However, VDDA should be the highest supply in the system, and VDDA should be applied before other supplies or at the same time when other supplies are on.
Note: Do not apply VDDD before VDDA supply.
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: Forcing the Channel Number to a DMA Component of PSoC® 3 and PSoC 5LP - KBA203653
質問:
PSoC Creator™ で DMA を使用しているプロジェクトをコンパイルすると (0~31の)チャネル番号がランダムに生成されて .cydwr ファイルの DMA タブに表示されます。PSoC Creator で DMA のチャネル番号を明示的に指定することは可能でしょうか?
回答:
はい、DMA コンポーネントに明示的にチャネル番号を指定することは可能です。
通常、コンポーネントのプレースメントを明示指定する場合には、PSoC Creator プロジェクト .cydwr ファイルの “Directives” タブの下にプレースメント指定を追加します (例: KBA85474 参照)。しかし DMA のチャネル番号の指定はこの方法では行えません。
チャネル番号を明示指定するのには以下の手順に従ってください:
Community Translated by MoTa_728816 Version: **
Translation - English: Using USBIOs as GPIOs in PSoC® 3 and PSoC 5LP - KBA92716
質問:
USBIO (D+: P15[6[ と D-: P15[7]) を GPIO として使用するのにはどうしたら良いですか?
回答:
USBIO がサポートするドライバモードは 'Open Drain, Drives Low' と 'Strong Drive' だけです。もしお使いになる GPIO がこのどちらかのモードであれば、USBIO (D+: P15[6[ と D-: P15[7]) を PSoC Creator™ の cydwr 内の Pins タブで、GPIO に設定することが可能です。もしお使いになる GPIO のモードがこれらのモードではない場合、P15[6], P15[7] ピンは GPIO にアサインすることが出来ません。
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: Opamp Input and Output Pins and Routing in a PSoC® 3/ PSoC 5LP Design - KBA203632
質問:
PSoC® 3/ PSoC 5LP のデザインにおいてオペアンプの専用ピンを使用する場合に何に気を付けたら良いでしょうか?
回答:
4 つの未使用のオペアンプはそれぞれの入力に配線することのできる2つの専用ピンを持っています。しかし、これはオペアンプの入力を配線できるのがこれらのピンだけという意味ではありません。オペアンプの入力はアナログ配線を使用して他のピンからも接続することが可能です。
一方、オペアンプの出力は専用の固定ピンへの接続となっています。オペアンプが4つあるデバイスでは、P0[0], P3[6], P0[1], P3[7] ピンがオペアンプの専用出力ピンになっています。オペアンプの出力は常にその専用ピンへ接続されることになります。オペアンプの出力が専用出力ピン以外のピンに接続される場合、専用出力ピンも選択された他のピンと同時にオペアンプ出力に接続されます。
オペアンプの専用出力ピンが使用されない場合でも、そのアナログ配線構造はオペアンプの出力を他のピンに配線するために使用されることにご注意ください。
これはスイッチ抵抗と全体抵抗を含むことになりオペアンプのドライブ能力を低減させます。アプリケーションにバンド幅/スルーレートの制限がある場合には、この点に注意を払う必要があります。
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: URL and Port Number for Cypress Update Manager - KBA91802
質問:
Cypress Update Manager からのアップデートを可能にするためにはどのサイト/ポート番号を許可する必要がありますか?
回答:
PC にインストールされた Cypress アプリケーションのアップデートを許可するためには
プロキシサーバーまたはファイアウォールが下記の Cypress Update Manager の URL とポート番号を許可するように設定してください。
URL: http://updates.cypress.com
Port number: 80
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: Correct Method to Set the IDAC Current - KBA213666
質問:
IDAC の分解能は 1 μA / bit です、下記のコードを使用しています。出力電流は期待されている 200 μA ではなく 120 μA になっています。何が原因でしょうか?
"void main()
{ IDAC_1_SetValue(200);
IDAC_1_Start(); ..... }. "
回答:
IDAC の設定は IDAC_1 ユーザーモジュールの開始後に行わなくてはなりません。そうしないと期待している 200 μA を得ることが出来ません。カスタマイザにおいて、デフォルトの分解能 1 μA/bit は 120 に設定されています、結果として 120 μA の出力電流となります。
初期設定での電流を 200 μA にしたい場合には、以下の図のようにカスタマイザの初期値に 200 を入力してください。もう一つの方法は Start() API の後に SetValue() API を置くことですが、この場合少し遅延が発生する可能性があります。
PSoC 4 IDAC コンフィグレーション
PSoC 3/5 IDAC コンフグレーション
Community Translated by MoTa_728816 Version: **
Translation - English: USBFS Suspend and Resume Functionality - KBA210675
質問: USBFS の サスペンド (Suspend) - レジューム (Resume) 機能はどのように実装したら良いでしょうか?
回答:
USB デバイスはバス上に 3 ms 以上動きが無い場合サスペンドに入ります。そしてさらに 7 ms 後には指定されたサスペンド電流以上の消費を抑えるためにシャットダウンします。これはバスの動きが停止してから 10 ms 以降、デバイスは規定されたサスペンド電流のみを消費するようにしなければならないということです。以下のコードは USBFS のサスペンド - レジューム機能の実装方法を示します。
if(!USBFS_CheckActivity())
{
noActivityCount++;
if(noActivityCount == USB_SUSPEND_TIME_TICKS)
{
PSOC_APP_LED_Write(1); // デバイスがサスペンドに入ったかを確認する。
USBFS_Suspend();
CyPmSaveClocks();
CyPmSleep(PM_SLEEP_TIME_NONE, PM_SLEEP_SRC_PICU); /* PSoC 3/5LP はスリープモードに入る */
CyPmRestoreClocks();
USBFS_Resume();
init =1; // エンドポイントの再度初期化 - 注意 1。
noActivityCount = 0;
PSOC_APP_LED_Write(0); // LED で状態を確認する。
}
}
else
{
noActivityCount = 0;
}
注意 1: ウェイクアップ後、エンドポイントを再度有効にする必要があります;もし Mode 3/2 に入ってた場合、DMAの再設定も必要となります。
注意 2: コードスニペットでは USBFS コンポーネントは “USBFS” という名称であることを仮定しています。
以下はアルゴリズム:
ファームウェアは USB の動作の状態をチェックします;もし 3 ms 間動作が無かったら、サスペンドが発生したことが分かります。ファームウェアが最低 3 ms の間待つように、USB_SUSPEND_TIME_TICKS の値を適切に保ちます。その後、ファームウェアは省電力スリープモードに入ります。レジュームが発生すると、ポートインタラプトコントロールユニット (PICU) の割込みによりウェイクアップして、USBFS コンポーネントの再設定とエンドポイントの再度初期化を行います (init 変数の状態を確認してファームウェアの中で行われます)。
Show LessCommunity Translated by MoTa_728816 Version: *A
Translation - English: Using the Watchdog Timer to Reset PSoC® 3/5LP - KBA89152
質問:
ウォッチドッグタイマ (WDT) を使用して PSoC 3 または 5LP をリセットするのにはどのようにしたら良いですか?
回答:
PSoC 3 または PSoC 5LP の WDT 機能はCyWdtStart と CyWdtClear の2つの APIを使用して実装できます。ハードウェアによって実装されている WDT はひとたび有効にされると、タイマに対するいかなる変更も受けつけません。また、タイマをひとたび有効にすると無効にすることが出来ません、これにより誤ったプログラムから WDT が変更されてしまうことを防いでいます。
WDT に使用されている API に関する詳細は System Reference Guide からご覧いただけます
(PSoC Creator > Help > System Reference Guides > PSoC 3 / PSoC 5LP System Reference Guide - cy_boot Component v5.50).
例えば、通常のアプリケーションでは最初に WDT を有効にします。
CyWdtStart(CYWDT_1024_TICKS,CYWDT_LPMODE_NOCHANGE);
これは WDT の周期を 2.048~3.072秒に設定します。以降、この時間内に WDT が確実にクリアされる必要があります。さもなければ、デバイスはリセットされます。
よって、2.048~3.072秒毎に CyWdtClear() API を呼んで WDT をクリアする必要があります。
Show LessAuthor: RakshithM_16 Version: **
When the I2C Component v3.50 is used in I2C Master mode with Fixed function implementation, the I2C_Stop() API does not disable the master. This is a known issue due to an error in the I2C_Stop() function definition in the Generated Source.
Note: Here, I2C_Stop() is a Component API. Therefore, if the I2C Component in your project is MyI2CComponent, the Component API will be MyI2CComponent_Stop(). For simplicity, the API will be referred to as <i2c_comp>_Stop() now on in this article, where <i2c_comp> is the name of the I2C Component.
<i2c_comp>_Stop() is defined in <i2c_comp>.c, and it contains the following line:
/* Disable block */
<i2c_comp>_CFG_REG &= (uint8) ~<i2c_comp>_CFG_EN_SLAVE;
The issue is that the <i2c_comp>_Stop() disables only the slave block even when the Component is configured as a master. As a workaround, replace this code with the following:
/* Disable block */
<i2c_comp>_CFG_REG &= (uint8) ~<i2c_comp>_ENABLE_MS;
Do one of the following to change the <i2c_comp>_Stop() function:
Note: Do not Clean or Clean and Build the project after this setting.
Show LessCommunity Translated by NoTa_4591161NoTa_4591161 Version: *B
Translation - English: Troubleshooting PSoC® 3, PSoC 4 L-Series, and PSoC 5LP USB Designs – KBA210620
このガイドは、PSoC 3、PSoC 4 Lシリーズ、およびPSoC 5LPファミリに基づくUSBデザインで発生する可能性のある一般的な問題におけるトラブルシューティング手順を提供します。PSoCファミリデバイスでUSBを初めて使用する場合は、AN57294 - USB 101: An Introduction to Universal Serial Bus 2.0 を参照してください。
症状:ボードをPCなどのUSBホストに接続した後、USBデバイスがデバイスマネージャーに表示されません。
テストには、PSoC Creatorで利用可能なサンプルコード USBFS_HIDを使用してください。HIDサンプルコードを使用してPSoCデバイスをプログラムし、マウスポインターが動いているかどうかを確認します。HIDは特別なドライバーを必要としないため、プロジェクトは自動的に機能します。そうでない場合、問題はUSBポートの接続にあります。
uint8 USB_Started_Flag ; for (;;) { if (VBUS_MONITOR_PIN_Read() == 0) { USBFS_Stop(); USB_Started_Flag = 0; } else if (USB_Started_Flag == 0 ) { USBFS_Start(device, USBFS_3V_OPERATION ); } /* User Application Code */ |
コード1:接続/切断イベントを検出するための疑似コード
2. ドライバーのバインドの問題
症状:デバイスドライバーがインストールされていないというエラーメッセージが表示されます
Ø .infファイル内のPIDの不一致:デバイスのPIDが、インストールされているドライバーのINFファイルで定義されているPIDと一致しない場合は、INFファイルを編集します。
一般的なUSBデバイスの場合、使用するINFファイルは、Cypress Suite USBがインストールされている場合はcyusb.infで、EZ-USB FX3 SDKがインストールされている場合はcyusb3.infです。 インストールしたドライバースイートに基づいてINFファイルを見つけてください。これらの.infファイルには、VID 0x04B4およびPIDのリストがリストされています。これらのPIDとCypress VID 0x4B4のいずれかを使用している場合、この.infファイルを示すことができます。.infファイルに存在しない別のPIDを使用している場合、この.infファイルを示すことはできません。この場合、.infファイルを変更する必要があります。
. infファイルを開き、OSに対応する「Device」セクションに、既存のVIDおよびPIDの詳細と同様の新しいPIDを含む行を追加してください。同様に、「Strings」セクションに別の行を追加してください。セクションの既存の行と同様ですが、新しいVIDとPIDを使用します。
カスタムPIDのcyusb.infファイルの編集例については、ドキュメントAN65209- Getting Started with FX2LPの「Appendix E: Adding Custom VID and PID to the .inf file」セクションを参照してください。
重要:次の点に注意してください。
.infファイルを変更すると、ドライバーの署名が失われます。最終製品では、ドライバーに署名する必要があります。一部のオペレーティングシステムでは、署名されていないドライバーをインストールできません。起動時にドライバー署名の強制が無効になっている場合、この問題は発生しません。
設計のトラブルシューティングを行うために、ドライバー署名の強制を無効にできます。Windows 7では、以下を実行してください。
3. PSoCがUSBUARTとして設定されている場合の問題
症状: PSoCデバイスでUSBをCDCデバイスとして設定しました。COMポートとしてエニュメレートされていません。
Ø Ø USBUARTコンポーネントが使用されている場合、Generated Sourceフォルダーに別の.inf (USBUART_cdc.inf) ファイルが生成されます。 この.infは、Windowsシリアルドライバーを示します。 USBUARTデバイスを適切にエニュメレーションするには、デバイスマネージャーからこのファイルを指定する必要があります。
o デバイスマネージャーを開き、デバイスを右クリックして、Update Driver Softwareを選択してください。
o Browse my computer for driver software > Let me pick from a list of device drivers on my computer > Have Disk を選択してください。
o プロジェクトフォルダーに移動し、…/Generated_Source/<device>/USBUART_cdc.inf を選択してください。
o .infファイルを指定するためNext をクリックしてください。
Ø Ø 同じデバイスに複数のインターフェイスがある場合は、インターフェイスアソシエーションディスクリプタが必要です。アプリケーションノート AN58726 - USB HID Intermediate with PSoC® 3 and PSoC 5LPの「Compound and Composite Devices」セクションを参照してください。KBA223141では、IADの追加についても説明しています。
4. エンドポイント構成でのファームウェアの問題
症状:デバイスは正しくエニュメレートしますが、IN/OUTデータ転送が期待どおりに行われません。
Ø Ø エニュメレーション前のデータの転送:データ転送は、エニュメレーションプロセスの完了後にのみ実装する必要があります。ファームウェアは、USBFS_GetConfiguration() API関数がゼロ以外の値を返すまで待機する必要があります。次の擬似コードはこれを示しています。
USBFS_Start(USBFS_DEVICE, USBFS_5V_OPERATION); while (0u == USBFS_GetConfiguration()); |
コード2 :デバイスがエニュメレートされるまで待機するための擬似コード
Ø Ø 自動メモリモードを使用したDMA:自動メモリ管理でDMAを使用している場合、最初にエンドポイント (EP) 番号、バッファポインタ、および長さでINデータバッファとOUTデータバッファを登録する必要があります。ホストによって構成が設定された後、次のAPI関数を呼び出す必要があります。
USBFS_LoadInEP(IN_EP, &BufferIn[0],64); USBFS_ReadOutEP(OUT_EP, &BufferOut[0],64);
|
コード3:INおよびOUT EP初期化の疑似コード
これらの関数はデータ転送を開始しません。ここで、実際のIN転送のために、データポインターを 'NULL'としてUSBFS_LoadInEP() API関数を呼び出します。OUT転送では、API関数を呼び出す必要はありません。OUTデータは自動的にバッファに保存されます。さらにデータを受信するには、USBFS_EnableOutEP() API関数を呼び出してOUT EPを再度有効にする必要があります。
USBFS_LoadInEP(IN_EP, NULL, 64); // IN EP reading data USBFS_EnableOutEP(OUT_EP); // Clearing OUT EP after reading OUT data
|
コード4 :自動メモリ管理モードでのDMAでの関数の使用
詳細については、AN56377 - PSoC 3 and PSoC 5LP - Introduction to Implementing USB Data Transfersのプロジェクト「Project 3: Increasing USB Throughput with DMA」を参照してください。
Ø Windows 7 OSのホストから複数のリクエスト処理: Windows 7 OSは、同じ構成番号を持つ2つのSET_CONFIGURATIONリクエストを送信する場合があります。この場合、ユーザーレベルのコードは、各リクエスト後にOUTエンドポイントを再度有効にする必要があります。
USBFS_IsConfigurationChanged() API関数を呼び出して、PCからの構成変更を検出します。ゼロ以外の値を返す場合、USBFS_GetConfiguration() API関数が呼び出され、構成番号が取得されます。この使用モデルをコード5に示します。
if(USBFS_IsConfigurationChanged()!= 0) { if(USBFS_GetConfiguration()!= 0) { USBFS_EnableOutEP(OUT_EP); } }
|
コード5:メインループの使用モデルの疑似コード
Ø 最大ペイロードサイズのデータパケットの処理:最大ペイロードサイズのデータパケットを送信すると、問題が発生する可能性があります。Windows OSでは、データ転送が完了したことを示す短いパケットが必要です。そうでない場合、転送全体が完了したとは見なされません。詳細については、KBA89052を参照してください。
Ø トグルエラー: USBハードウェアはデータトグルエラーをチェックせずにOUTパケットを受信します (受信パケットデータトグルビットは前のパケットと同じです)。ファームウェアはトグルビットエラーチェックを処理する必要があります。
5. USBアナライザー
USBアナライザーを使用したUSBパケットの分析は、問題が発生する正確な手順を特定するのに役立ちます。エニュメレーションまたは通常のデータ転送の問題の場合、USBパケットをチェックすると、問題の正確な場所がわかります。
USBプロトコルに違反があると、アナライザーはエラーを投げます。アナライザーは、USB転送タイプに基づいてデータパケットをグループ化します。図1に エニュメレーション中の典型的なUSBパケットを示します。
図1 :Beagle USB480によってキャプチャされたUSB HIDデバイスのエニュメレーション
アプリケーションノートAN57294: USB 101: An Introduction to Universal Serial Bus 2.0を参照してください。エニュメレーション手順とUSBアナライザの詳細については、セクション12:USB Enumeration and Configuration 、セクション13:Debugging the Communication をそれぞれ参照してください。
Show Less