【概要説明】
Type-C Functional Test (LeCroy Solution)が開始されない事象と、その原因についての記事です。
LeCroy M310P(USB Compliance Suite Version 6.29 Biuld 1053)を使用しType-C Functional Testをスタートさせると、最初に実行されるPreliminary Stepsの段階でUSB2.0 traffic was not detectedのポップアップメッセージが表示されてしまい(以下画像)、Type-C Functional Testが開始されない場合がありました。
【発生状況】
Type-C Functional Testが開始されない原因は、Preliminary Steps内のCable Orientation DetectionでType-Cコネクタの接続面を検出するためにUSB2通信を試みたが、DUT側がUSB2の通信を行わなかったため、M310PがType-C Functional Testを止めてしまいました。
以下のようなテストログが記録されますが、「USB2 Started = 0」の値が「0」になっていることが通信が行われなかったことを示しています。LeCroy M310PとDUT間でUSB2の通信が正常に行われていれば「USB2 Started = 1」の値になります。
続いて、実際のトレースログ(上画像内で示されている07_TC_CableOrientation_Device.usb)を見てみると、M310P側はGet Descriptor Requestを送り続けていますが、それに対しDUTはACKを返していないことが確認できました。
つまり、ACKを返していないと言うことは、M310Pが送っているパケットをDUTが受信できていないことを表しています。
その後も2分以上行われていましたがDUT側よりACKが返って来なかったことが原因で、最終的にUSB2.0 traffic was not detectedと判定されType-C Functional Testが開始されませんでした。
以下、M310P側がGet Descriptor Requestを2分以上送り続けDUTとの通信を試みていた時のトレースログになります。
【USB Compliance SuiteのVer.による差異と仕様について】
USB Compliance Suiteの過去Ver.の5.80と、現行の6.29を比較してみたところ、以下の点で差異が見られました。
・Ver.5.80では、5.0V / 1AでSource_Capabilitiesメッセージが送信されていました。
・Ver.6.29では、5.0V / 0.1AでSource_Capabilitiesメッセージが送信されていました。
現行のVer.6.29の動きについては、下表のUSB 2.0仕様で定義されていました。
・USB Enumerationが開始される前の段階で100mAを超える電流を消費してはいけない。(以下表の赤枠部分が該当する部分になります)
上記の仕様によって、M310P側がGet Descriptor Requestによる通信を試みている期間はUnconfigured「USB Enumerationが行われる前の段階」に相当する為、消費電流は100mA以下に抑えなければなりません。
【考察】
DUTはバスパワーで動作する機器で、0.1A(100mA)より多くの電力が必要なのですが、LeCroy M310P側から5.0V / 0.1Aが供給されていた為、DUTはUSB 2.0の通信ができない状況になっていたと予想されます。
以上、Type-C Functional Test が開始されない事例について記事にしてみました。
今回の事例については、あくまで一例に過ぎず、試験対象となるDUTは多種にわたるため、全てが同じ挙動になるとは限らないと思います。