- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
現在SX2を使用してセルフパワーのデバイス製品を作っているのですが,
デバイスの電源を入れたままPCをシャットダウンして,その後PCを再起動
するとデバイスが認識されません(デバイスマネージャにも表示されない).
USBの信号(D+,D-)をオシロスコープで観測すると,Chirp終了後にPCが
SOFを出さないことが分かりました.ここまではPCに問題があります.
しかし,SX2もSOFが出ない状態が続く場合,すなわちIdleが3ms以上継続した場合,
USBの仕様上High Speedの終端をOffしてD+をプルアップしなければならないはずが,
ずっとSOFを待つ状態にいるようで,デバイスの電源を立ち上げ直すまで
PCとの接続ができません.
これに関してはおそらくSX2の実装に漏れ(バグ)があると思われます.
ちなみにSX2にデスクリプタを再度書き込むとSX2がD+をプルアップして,
PCと正常に接続されるようになります.
SX2にデスクリプタを再度書き込む以外に,SX2の実装漏れの回避方法など
あるでしょうか?
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
返信遅くなり申し訳ございません。
SX2の場合、ハードウェアの変更による解決をする必要がありますが、弊社では今の所Bus-powerデバイスの場合での解決策しかありませんでした。
Bus-powerの場合は、VBUSの供給をRC回路で200ms程度遅延させてスタートアップを遅くすることですが、今回はSelf-powerなのでこれは機能しません。
そのため、お客様のハードウェアでどのような解決策があるか、回路図を見て検討させていただきたいと思います。
回路図をご提供いただくことは可能でしょうか。
大変お手数おかけしますが、よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
Cypress Developer Communityをご利用いただきありがとうございます。
状況から見るに、SX2はSuspend stateに入るべきところで入れていないように思われます。
さらに状況を明確にしていくために、以下の情報をいただくことは可能でしょうか。
1. 問題発生時のUSBトレースの結果
2. VBUSの観測データ(オシロスコープのキャプチャなど)
3. PCは完全にシャットダウンをし、その後起動し直した、と理解しましたが合っていますでしょうか?またはシャットダウンではなく再起動を実行していますか?
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
ご返信頂きましてありがとうございました.
以下ご回答いたします.
1. 問題発生時のUSBトレースの結果
USBトレースは下図になります.
PCを立ち上げた状態からPCの電源を切り(シャットダウン),再度PCを立ち上げた時のUSBトレースです.
PCからSOFが発行されていたのがシャットダウンでSOFが途切れ,再度PCが立ち上がってChirpが
行われた後なにもトレースは記録されていません.
2. VBUSの観測データ(オシロスコープのキャプチャなど)
セルフパワーのデバイスなのでVBUSは使用しておらず,オシロで測定はおこなっていません.
D+,D-を観測したものは下図となります.
①の部分を拡大すると,デバイスChirpが始まっています.
②の部分を拡大すると,HUB Chirp終了後Host(PC)がSOFを出さずIdle状態になります.
根本的にはPCがSOFが出していないことが問題なのですが,
Idle状態が続けばSX2はD+をプルアップしてFullスピード状態に戻り,
Device detectを待つ状態になると思われますが,そうなっていません.
3. PCは完全にシャットダウンをし、その後起動し直した、と理解しましたが合っていますでしょうか?またはシャットダウンではなく再起動を実行していますか?
はい,そうです.完全にシャットダウンしてから起動し直しています.
ですが,今回の現象は電源を落とさずに再起動しても発生しています.
お手数をおかけいたしますが,ご確認の程どうぞ宜しくお願いいたします.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
詳細にご説明いただきありがとうございます。
調査を行ったところ、FX2 familyで共通の問題のようです。
適切な解決策をご提案するため、以下2点教えていただけますでしょうか?
1. ホストOSのバージョン(Windows XP SP1など)はなんですか?
2. お客様の作成されたボード上にSX2が実装されていますか?または弊社のDVKを使われていますか?(前者だと認識しています。)
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
ご返信頂きましてありがとうございます.
以下ご回答いたします.
1.ホストのOSは,Windows10 Enterprise 2016 LTSB (x64)です.
2.弊社製基板上にSX2を実装しております.
どうぞ宜しくお願いいたします.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
ホストと基板のご連絡ありがとうございます。
FX2でしたら以下のように解決可能です。
ワークアラウンド:ファームウェアでステートマシンを遷移させることで問題を解決します。
ステートマシンがend_resetステートであることをFX2は検出できますので、この状態からSuspendモードへと遷移させます。
以下のコードをHigh-Speed ISRに追加することで上記動作が可能です。
if (EZUSB_HIGHSPEED())
{
#define HS_INACTIVE_COUNT 272
WORD CT4Count = HS_INACTIVE_COUNT;
// Look for CT4.3 (JK activity) inactive for 500us
// This loop was hand-counted to be 22/12 = 1.8us long,
// so 272 iterations are 500us
while(--CT4Count)
{
if (CT4 & 😎
CT4Count = HS_INACTIVE_COUNT;
}
// If we timed out in state C (wait for SOF), bump the state machine to
//state D.
if (CT2 == 0xc)
{
CT1 = 2;
WRITEDELAY();
CT2 = 0xd;
WRITEDELAY();
CT1 = 0;
}
// Resume normal high-speed ISR
pConfigDscr = pHighSpeedConfigDscr;
}
CT1, CT2, CT4の定義は以下の通りです。
CT1 - Chirp Test -- Override:
CT1.1 = override_fsm -> puts the chirp state machine in the hands of the 8051
CT2 -- Chirp Test-- FSM:
CT2.[4:0] = chirp_state[4:0]: chirp state machine state
CT2.[7:5] = reserved
CT4 -- Chirp Test-- Inputs:
CT4.3 = phs_pik_data_valid -> gives the state data_valid from the phase-picker
SX2について、解決方法を内部で協議しております、申し訳ございませんが少々お待ちください。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
返信遅くなり申し訳ございません。
SX2の場合、ハードウェアの変更による解決をする必要がありますが、弊社では今の所Bus-powerデバイスの場合での解決策しかありませんでした。
Bus-powerの場合は、VBUSの供給をRC回路で200ms程度遅延させてスタートアップを遅くすることですが、今回はSelf-powerなのでこれは機能しません。
そのため、お客様のハードウェアでどのような解決策があるか、回路図を見て検討させていただきたいと思います。
回路図をご提供いただくことは可能でしょうか。
大変お手数おかけしますが、よろしくお願い致します。
Hirotaka Takayama