Original KBA: FX3: USB transfers do not occur even after data is committed to USB socket – KBA231898
Translated by: Kenshow
タイトル: FX3:データがUSBソケットにコミットされた後でもUSB転送は発生しません– KBA231898
バージョン: **
FX3 SDK 1.3.4では、CyU3PConnectState() APIを使用してUSB接続を設定する前にUSBソケットに関連付けられたDMAチャネルを作成すると、USBソケットへのデータのコミットに成功してもUSB転送が発生しない場合があります(CyU3PDmaChannelCommitBuffer()またはCyU3PDmaMultiChannelCommitBuffer() APIはCY_U3P_SUCCESSを返します)。シナリオ例を図1と図2に示します。
図1. USBソケットにコミットされたDMAバッファを示すUARTデバッグプリント
図2. USBコントロールセンタからのUSBIN転送が失敗する
ノート:
この問題は、FX3 SDKリリースノートに記載されている既知の問題が原因で発生する可能性があり、USB デバイスモードでの接続開始時に USB ソケットに関連付けられた DMA チャンネルの設定が無効になる可能性があることに言及しています。
この問題を回避するには、CyU3PDmaChannelReset()またはCyU3PDma-MultiChannelReset()APIを使用してDMAチャネルをリセットし、各エニュメレートサイクルの後に再度有効にする必要があります。これは、CY_U3P_USB_EVENT_SETCONFイベントが発生したときに実行でき、USBデバイスが正常にエニュメレートされたことを示します。CY_U3P_USB_EVENT_SETCONFイベントの前に、USBソケットに関連付けられたDMAチャネルを使用しないでください。
Original KBA: DC Power Adapter (Flyback Converter) - KBA232116
Translated by : Kenshow
タイトル: AC-DC電源アダプター(フライバックコンバーター)の電磁両立性(EMC)コンポーネント-KBA232116
作成者:SananyaM_56 バージョン:**
質問:
AC-DC電源アダプタの設計に使用されるEMCコンポーネントは何ですか?
回答:
安全という用語は、あらゆる電気消費者製品において重要です。それらのいくつかには、熱問題に対する安全性、機械的安全性、および電磁両立性(EMC)が含まれます。すべての電子機器は、無線周波数(RF)エネルギーを放射および吸収する可能性があります。EMCの背後にある原則は、機器が指定されたレベル未満の放射を制限し、特定の外部レベルの入射RF放射に耐えることができるようにすることです。
これらの電磁相互作用を制限または耐えるために使用されるAC-DC電源アダプタの一般的なコンポーネントは次のとおりです。
図1 .PAG1PおよびPAG1SType-C電源アダプタEMCコンポーネント
詳細については、PAG1Pデータシート、プライマリ側起動コントローラおよびPAG1S-CYPAS111データシート、USB-PD電源アダプタセカンダリ側コントローラを参照してください。
Original KBA: Possible Faults and Protection Flow in PAG1 - KBA231878
Translate by: Kenshow
タイトル: PAG1で発生する可能性のある障害と保護フロー - KBA231878
バージョン:**
PAG1の障害は、ソース側の障害、負荷側の障害、および内部障害に分けられます。
ソース側の障害 |
負荷側の障害 |
内部障害 |
過電流 |
過電流 |
過熱 |
低電圧 |
短絡 |
|
過電圧 |
低電圧 |
|
過電圧 |
これらの保護スキームのテストケースと関連手順の詳細については、18W PAG1S + PAG1P設計ファイルを参照してください。PAG1Pプライマリ側スタートアップコントローラのデータシートおよびPAG1S-CYPAS111USB-PD電源アダプタセカンダリ側コントローラのデータシートも参照してください。
すべての保護スキームに、次の一般的な保護フローが適用されます。
障害イベント>即時の保護アクション>障害後の動作
EZ-PDコンフィグレーションユーティリティツールで次の変更を行う必要があります。関連する波形については、18W PAG1P + PAG1S設計ファイルのテストレポートを参照してください。
図1.EZ-PDコンフィグレーションユーティリティのOCP機能
イベントのPAG1負荷側保護については、以下を参照してください。詳細については、PAG1S-CYPAS111USB-PD電源アダプタのセカンダリサイドコントローラのデータシートを参照してください。
保護機能 |
障害イベント |
即時の保護措置 |
障害後の動作 |
過電流保護 |
電流は、設定されたOCPしきい値を超えて増加します。 例、3x1.2 = 3.6 A |
NGDOは約10µsでオフになります |
設定した「Retry Count」を再試行します。 障害が続く場合は、NGDOをオフにします。 例、Retry Count= 2 |
過電圧保護 |
電圧が設定されたOVPしきい値を超えています。 たとえば、5x1.2 = 6 V |
NGDOは約10µsでオフになります |
設定した「Retry Count」を再試行します。 障害が続く場合は、NGDOをオフにします。 たとえば、Retry Count= 2 |
低電圧保護 |
出力電圧が設定されたUVPしきい値を下回っています。 例:5x 0.7 = 3.5 V |
NGDOは約10µsでオフになります |
設定した「Retry Count」を再試行します。 障害が続く場合は、NGDOをオフにします。 例、Retry Count= 2 |
短絡保護 |
出力電流がしきい値の6Aを超えています。 |
NGDOは約10µsでオフになります |
設定した「Retry Count」を再試行します。 障害が続く場合は、NGDOをオフにします。 たとえば、再試行回数= 2 |
過熱保護 |
検出点の温度がカットオフ値を超えています。 |
NGDOは約10µsでオフになります |
温度が再起動値を下回るまで待ちます。 NGDOをオンにします。 |
これらの障害状態のいずれかが発生した場合は、USB Type-Cケーブルを取り外して再度接続し、契約を再確立します。常に再試行するには、Retry Countを255にします。
次の表に、PAG1のソース側の障害状態とその検出ピンを示します。
障害状態 |
検出ピン |
入力不足電圧 |
VDDD700 |
入力過電圧 |
VDDD700 |
過電流 |
CS |
二次過電圧 |
OVP_AUX |
図2.サイプレスの一次側コントローラPAG1Pを備えたフライバックコンバータ回路
イベントのPAG1ソース側保護フローについては、次の表を参照してください。詳細については、PAG1Pプライマリ側スタートアップコントローラのデータシートを参照してください。
保護機能 |
障害イベント |
即時の保護措置 |
障害後の動作 |
低電圧保護
|
VDDが90Vを下回ります。 (debounce = 30ミリ秒) |
ゲートパルスはオフになります。 |
VDD700> 100 Vの場合、自動再起動します。 PAG1Pは、ソフトスタートの前にTAR秒待機します。このシーケンスは3回繰り返されます。 |
過電圧保護 |
VDDは448Vを超えて上昇します。 |
ゲートパルスはオフになります。 |
VDD <445Vの場合は自動再起動します。 PAG1Pは、ソフトスタートの前にTAR秒待機します。このシーケンスは3回繰り返されます。 |
過電流保護 |
CSピン電圧がV_CSTH1 = 0.5Vを超えたとき。 |
一次FETをオフにして一次電流を制限します。 |
出力電圧が低下します。制限されたデューティ(閉ループの場合)および自動再起動(開ループの場合)により、制限された電力を供給します |
二次過電圧保護 |
OVP_AUXピン電圧が1.2Vを超えています(ブランキング時間= 2 us) |
ゲートパルスはオフになります。 |
OVP_AUX <1.2Vの場合は自動再起動 |
Original KBA: Change Bulk endpoint to Isochronous in FX3 firmware – KBA231897
Translated by: Kenshow
タイトル: FX3ファームウェアでバルクエンドポイントをアイソクロナスに変更 – KBA231897
バージョン:**
次のようなアプリケーションでFX3ファームウェアのバルクエンドポイントをアイソクロナスエンドポイントに変更するには、次の手順を実行します。
これらのケースは、USB帯域幅を保証せず、大きなバーストデータを転送するために使用されるバルク転送とは異なります。
手順1:ファームウェアで使用されるUSB記述子を含むソースファイルのUSBインターフェースディスクリプタに代替設定を追加します。代替設定0はエンドポイントがゼロである必要があり、代替設定1はアイソクロナスエンドポイントで追加される必要があります。コード1は、USBのディスクリプタを含むソースファイルのインターフェースディスクリプタに代替設定を追加する方法を示しています。この記事に添付されているGpifToUsbファームウェアにあるcyfxbulkdscr.cファイルは、USBディスクリプタを含むソースファイルです。この例では、代替設定0にはエンドポイントがありませんが、代替設定1には2つのエンドポイントがあります。
コード1. USBインターフェースディスクリプタの変更
/* Configuration descriptor */
0x09, /* Descriptor size */
CY_U3P_USB_CONFIG_DESCR, /* Configuration descriptor type */
0x42,0x00, /* Length of this descriptor and all sub descriptors */
0x01, /* Number of interfaces */
0x01, /* Configuration number */
0x00, /* Configuration string index */
0x80, /* Config characteristics - Bus powered */
0x32, /* Max power consumption of device (in 8mA unit) : 400mA */
/* Interface descriptor: Interface 0, Alt setting 0 - No endpoints */
0x09, /* Descriptor size */
CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
0x00, /* Interface number */
0x00, /* Alternate setting number */ // - Alternate setting number should be set to 0
0x00, /* Number of end points */ // - 0 endpoints under alternate setting 0
0xFF, /* Interface class */
0x00, /* Interface sub class */
0x00, /* Interface protocol code */
0x00, /* Interface descriptor string index */
/* Interface descriptor : Interface 0, Alt setting 1 – Two Endpoints */
0x09, /* Descriptor size */
CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
0x00, /* Interface number */
0x01, /* Alternate setting number */ // - Alternate setting number should be set to 0
0x02, /* Number of end points */ // - Two endpoints under alternate setting 0
0xFF, /* Interface class */
0x00, /* Interface sub class */
0x00, /* Interface protocol code */
0x00, /* Interface descriptor string index */
注:アイソクロナスエンドポイントを備えたインターフェースは、USBバスの帯域幅を予約します。帯域幅の制限のためにホストがエニュメレート中にアイソクロナスエンドポイントを有効にできない場合、エニュメレートは失敗する可能性があります。これは、アイソクロナスエンドポイントのないデフォルトの代替(代替設定0)を使用することで回避できます。デバイスが使用されていないとき、ドライバーは帯域幅を節約するためにデフォルト設定(代替設定0)に切り替えることができます。
手順2: USBディスクリプタを含むソースファイルのエンドポイントディスクリプタを変更します。この記事に添付GpifToUsbファームウェアにあるcyfxbulkdscr.cファイルはUSBディスクリプタを含むソースファイルです。
エンドポイントタイプをアイソクロナスエンドポイントに変更し、USBエンドポイントディスクリプタで最大パケットサイズとサービス間隔を設定します。
最大パケットサイズとサービス間隔の値は、それぞれのUSB 3.0 / USB2.0仕様の範囲内である必要があります。たとえば、USB仕様では、フルスピードアイソクロナスエンドポイントごとに最大データペイロードサイズが1023バイトに制限されています。Hi-speedおよびSuperSpeedエンドポイントは、最大1024バイトのデータペイロードを許可されます。
これらのパラメータは、USB3.0仕様によって制限される必要があります。
コード2は、SuperSpeedアイソクロナスエンドポイントディスクリプタを示しています。
コード2:SuperSpeedアイソクロナスエンドポイントディスクリプタ
/* Endpoint descriptor for producer EP */
0x07, /* Descriptor size */
CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
CY_FX_EP_CONSUMER, /* Endpoint address and description */
CY_U3P_USB_EP_ISO, /* ISO endpoint type */ // Endpoint Type Changed to Isochronous
(CY_U3P_GET_LSB(CY_FX_ISO_MAXPKT)), /* LS Byte of maximum packet size. */ (CY_U3P_GET_MSB(CY_FX_ISO_MAXPKT)), /* MS Byte of maximum packet size. */
0x01, /* Servicing interval for data transfers: 1 uFrame */ // Changed the service Interval value.
/* Super speed endpoint companion descriptor for producer EP */
0x06, /* Descriptor size */
CY_U3P_SS_EP_COMPN_DESCR, /* SS EP companion descriptor type */
(CY_FX_ISO_BURST - 1), /* Number of packets per burst. */ //Configured packets per burst (MULT)
(CY_FX_ISO_PKTS - 1), /* Number of bursts per interval*/ // Configured Bursts per Intervals
(CY_U3P_GET_LSB(CY_FX_ISO_MAXPKT * CY_FX_ISO_PKTS * CY_FX_ISO_BURST)),/* LS Byte: data per interval*/ //Configured Data per Interval
(CY_U3P_GET_MSB(CY_FX_ISO_MAXPKT * CY_FX_ISO_PKTS * CY_FX_ISO_BURST)),/* MS Byte: data per interval*/ //Configured Data per Interval
注:コード2で使用されるマクロの定義については、この記事に添付されているファームウェアのヘッダーファイル(cyfxgpiftousb.h)を参照してください。
手順3: USBディスクリプタを含むソースファイルのコンフィギュレーションディスクリプタのこのディスクリプタとすべてのサブディスクリプタのフィールドの長さを更新します。これは、ディスクリプタに1つの代替設定が追加されているためです。このフィールドに、以下を含むコンフィギュレーションディスクリプタの全長を入力します。
このディスクリプタとすべてのサブディスクリプタの長さ=コンフィギュレーションディスクリプタの長さ+インターフェースディスクリプタの長さ:インターフェース0、Alt設定0 +インターフェースディスクリプタ:インターフェース0、Alt設定1+エンドポイントディスクリプタの長さ/秒+Super speedエンドポイントコンパニオンディスクリプタの長さ/s
注:SuperSpeedエンドポイントコンパニオンディスクリプタの長さは、USB SuperSpeedディスクリプタにのみ適用されます。
手順4:以下を設定して、アプリケーションを実装するメインソースファイルでエンドポイントを設定します。
ノート:
コード3:エンドポイントの設定
epCfg.enable = CyTrue;
epCfg.epType = CY_U3P_USB_EP_ISO;
epCfg.burstLen = (usbSpeed == CY_U3P_SUPER_SPEED) ? (CY_FX_ISO_BURST) : 1;
epCfg.streams = 0;
epCfg.pcktSize = (usbSpeed == CY_U3P_FULL_SPEED) ? (CY_U3P_MIN (1023, CY_FX_ISO_MAXPKT)) : CY_FX_ISO_MAXPKT;
epCfg.isoPkts = (usbSpeed == CY_U3P_FULL_SPEED) ? 1 : CY_FX_ISO_PKTS;
/* Producer endpoint configuration */
apiRetStatus = CyU3PSetEpConfig(CY_FX_EP_CONSUMER, &epCfg);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "CyU3PSetEpConfig failed, Error code = %d\n", apiRetStatus);
CyFxAppErrorHandler (apiRetStatus);
}
注:エンドポイント設定のisoPktsフィールドが1より大きい値で設定されている 場合、USBエンドポイント3とエンドポイント7のみをアイソクロナスエンドポイントとして使用できます。
手順5:メインソースファイルのUSBイベントコールバック関数(CyFxApplnUSBEventCB)でevdata(代替設定)を0x0001としてCY_U3P_USB_EVENT_SETINTF イベントがトリガーされたら、アプリケーションを起動します。この記事に添付されているGpifToUsbファームウェアのcyfxgpiftousb.cファイルを参照してください。これは、GPIFIIからUSBへの転送を実装する添付ファームウェアファイルのメインソースファイルです。
コード4:アプリケーションの起動
case CY_U3P_USB_EVENT_SETINTF:
/* Stop the application before restarting. */
if (glIsApplnActive)
{
CyFxApplnStop ();
}
/* Start the loop back function if alternate setting 1 has been selected. */
if (evdata == 0x0001)
CyFxApplnStart ();
break;
このKBAに添付されているGpiftoUsbの例を参照してください。この例は、ISOCマクロが有効な場合にバルクエンドポイントをアイソクロナスエンドポイントに変更するように修正されています。
注:この記事に添付されているファームウェアでは、CY_U3P_USB_EVENT_SETINTFイベントが発生すると、アプリケーションはCyFxApplnStart()関数を呼び出します。これは、ホストアプリケーションが代替設定1のインターフェースを選択する必要があることを意味します。FX3SDKのUSB Control Centerソフトウェアを使用する場合は、デバイスツリービューで代替設定1を手動で選択する必要があります。USBコントロールセンターを使用したFX3へのデータ転送のプログラミングと実行については、AN75705:EZ-USBFX3入門を参照してください。
図1. 代替設定1の選択
USB Control Centerソフトウェアには、<FX3 SDK Installation Path>\Cypress\EZ-USB FX3SDK\1.3\application\c_sharp\controlcenter\bin\Releaseからアクセスできます。
AN75779で提供されるようなUVCファームウェアの変更は、前のセクションで説明した変更と同様です。変更されたAN75779ファームウェアはこの記事に添付されています。アイソクロナスエンドポイントを追加するには、USE_ISOCHRONOUS_ENDPOINTマクロを有効にする必要があります。
注意:
添付のAN75779ファームウェアでは、アイソクロナスエンドポイントはUSB3.0ディスクリプタにのみ追加されます。FX3でサポートされる最大USB帯域幅は最大8MBps(125 µsあたり1 KBパケット)になるため、UVCアプリケーションにUSB2.0でアイソクロナスエンドポイントを使用することはお勧めしません。これは、FX3データシートのエラッタ4に記載されているUSB 2.0 ISOCデータ転送での無効なPIDシーケンスの既知の問題を防ぐために、FX3デバイスを使用するUSB高速UVCアプリケーションではCY_FX_ISO_PKTS(MULT)設定を「1」として使用する必要があるためです。
Original KBA:Selecting Provider FET for VBUS in CCG3PA Designs - KBA231884
Translated by: Kenshow
タイトル: CCG3PA設計におけるVBUS用プロバイダFETの選択 - KBA231884
バージョン:**
PチャネルMOSFETは、CCG3PA設計(CYPD3171、CYPD3174、CYPD3175、CYPD3195、およびCYPD3196部品)のVBUSプロバイダ制御FETとして使用されます。適切なP-MOSFETを選択するときは、次の点を考慮してください。
1.ドレイン-ソース間降伏電圧(V DS)
V DSブレークダウン電圧が、アプリケーション設計の最大VBUS_IN電圧より少なくとも10%高いことを確認してください。最大20VのVBUS電圧をサポートする電力供給(PD)設計の場合、VDSブレークダウン電圧が25V以上のFETを推奨します。
2.オン状態のドレイン電流(I D)
定格オン状態ドレイン電流(I D)がアプリケーションの最大VBUS電流よりも高いことを確認してください。最大 VBUS 電流 5A をサポートする PD デザインの場合、IDは 5A より大きくする必要があります。
3.ドレイン-ソースのオン状態抵抗(R DS(ON))
MOSFETのドレイン-ソース間抵抗は可能な限り低くする必要があります。R DS(ON)は 5 V VGSで10mΩ以下が望ましいです。PPSをサポートしたデザインの場合、FET間の電圧降下が少なく、3.2 V VGS程度でR DS(ON)を低くすることが重要です。
4.ゲートプラトー電圧(V GP)
ほとんどのパワーMOSFETのデータシートでは、VGS(TH) は250μAのID で指定されています。ゲートプラトー電圧(V GP)を使用して、MOSFETが完全に増強される(つまり、オンになる)ゲート-ソース間電圧を決定できます。最大定格ID のVGP は、FETのデータシートに明示的に記載されているか、またはVGs 対総ゲート電荷のプロットを使用して見つけることができます。FETのVGPは2.8V未満でなければなりません。これにより、3.2VのVGS の下でFETを完全にオンにすることができます
FET回路を設計する際のその他の考慮事項については、次のVBUSプロバイダFET回路の例を参照してください。
図1.VBUSプロバイダのFET回路
いくつかの推奨FET:
Original KBA:
タイトル: TUSB501リドライバがUSB2.0ケーブルでホストに接続されている場合、FX3はUSB2.0モードにフォールバックしません - KBA231618
バージョン:**
FX3ファームウェアがUSB接続ネゴシエーションに使用する手順については、FX3テクニカルリファレンスマニュアル(TRM)のセクション6.8- USB3.0およびUSB2.0機能調整を参照してください。
テキサス・インスツルメンツTUSB501のデータシートから、TUSB501 デバイスは定期的に Tx ペアのレシーバ検出を行います。SuperSpeed USB レシーバを検出した場合、Rx 終端を有効にし、TUSB501 はりドライブの準備ができています。
したがって、FX3デバイスがリドライバに接続されると、リドライバはFX3をレシーバとして検出し、その終了を有効にします。同様に、FX3もUSB 3.0 PHYをオンにして、USB3.0レシーバの検出を開始します。リドライバは常にアクティブであるため、FX3はリドライバを検出します。リドライバがUSB2.0ケーブルを使用してホストに接続されている場合、FX3デバイスはUSB 3.0エニュメレートパケットを無期限に待機し、USB2.0モードにフォールバックしません。このため、デバイスはUSB3.0モードでもUSB2.0モードでもエニュメレートされません。これは、セクション6.8 - FX3TRMのUSB3.0およびUSB2.0機能調整によると、レシーバの検出が成功したため、予想される動作です。
次の手順を実行して、USB 3.0エニュメレートを試行し、失敗した場合はUSB2.0のエニュメレートにフォールバックします。
1.タイマ構造体(CyU3PTimer)をグローバル宣言します。詳細については、FX3APIガイドを参照してください。
タイマティックのデフォルト値は1ミリ秒です。タイマ作成中のタイムアウトは、USB3.0のエニュメレートがエラーなしで行われるようにするのに十分なはずです。
3.タイマが切れる前にCY_U3P_USB_EVENT_SETCONFイベントが受信されたかどうかを確認します。タイマの期限が切れる前にCY_U3P_USB_EVENT_SETCONFが正常に受信されたことは、USB3のエニュメレートが成功したことを示しています。この場合、CY_U3P_USB_EVENT_SETCONFイベントを受信したら、CyU3PTimerStop()を使用してタイマを停止します。
4.タイマが切れる前にCY_U3P_USB_EVENT_SETCONFイベントが受信されない場合、CyU3PTimerCreate()の呼び出し中に提供されたコールバック関数が実行されます。これは、USB3のエニュメレートが成功しなかったことを意味します。したがって、コールバック関数内で、次の手順を実行して、USB2.0モードのデバイスをエニュメレートします。
AN75779 – How to Implement an Image Sensor Interface Using EZ-USB FX3 in a USB Video Class (UVC) Fra... に付属するファームウェアは、タイマ動作を実装する際の参考になります。
English: ROLE OF THE CCG_FLIPPED_FET_CTRL MACRO IN THE CCG3PA POWER SDK - KBA231907
Translated by: Kenshow
タイトル: CCG3PA PowerSDKでのCCG_FLIPPED_FET_CTRLマクロの役割 - KBA231907
バージョン:**
CCG_FLIPPED_FET_CTRLマクロは、プロバイダFETとコンシューマFETを交換します。つまり、PCTRLによってコンシューマFETを制御し、CCTRLによってプロバイダFETを制御します。パワーバンクの設計要件に従ってVBUS_IN_DISCHARGEがType-CVBUSに接続されているため、FETが交換されます。
VBUS_IN_DISCHARGEにはチップに電力を供給することができる内部LDOがあり、PFETにはこちら側への内部プルアップがあります。ただし、VBUS_C_MONピンにはLDO機能がありません。
したがって、バッテリー切れのサポートが必要な設計では、LDOはType-C側にある必要があります。そのため、このような設計では、VBUS_IN_DISCHARGEピンがType-C VBUSに接続され、VBUS_C_MONピンがVBUSソースに接続されます。VBUS_INはVBUS_C_MONと反転するため、FETも交換する必要があります。つまり、PCTRLをコンシューマFETに使用し、CCTRLをプロバイダFETに使用する必要があります。これは、PFETがVBUS_IN_DISCHARGEピンにプルアップされているためです。したがって、「FLIPPED_FET」と呼ばれます。
このマクロを有効にすると、VBUS_IN_DISCHARGEがType-CVBUSに接続されていることを意味します。したがって、VBUS_IN抵抗分割器は、Type-CVBUSの監視に使用されます。
以下に示す図は、パワーバンクアプリケーションにおけるプロバイダFETとコンシューマFETの接続を示しています。
CCG_FLIPPED_FET_CTRLマクロの実装については、Power SDK(https://www.cypress.com/documentation/software-and-drivers/ez-pd-ccgx-power-software-development-kit)を参照してください。
English:
Translated by: Kenshow
タイトル: FX3:libcyusb LinuxのIsBootLoaderRunning()関数 - KBA231809
バージョン:**
質問: FX3のブートローダがLinux SDKを使用して実行されているかどうか、またはFX3 Linux SDKのIsBootLoaderRunning()関数に相当するものを確認するにはどうすればよいですか?
回答:
FX3 Linux SDKには、FX3ブートローダが実行されているかどうかを確認するための特定の機能はありません。
しかし、制御転送(cyusb_control_transfer()関数)により、ベンダーコマンド0xA0を使用して機能を実現することができます。
ベンダーコマンド0xA0は、ファームウェアのダウンロードとアップロードのためにFX3ブートローダに実装されており、同じコマンドを使ってFX3がブートローダモードになっているかどうかを確認することができます。
リクエストコード0xA0の1バイトIN制御転送が開始されます。制御転送が成功してバイトを返せば、ブートローダは実行中です。
制御転送パラメータ:
bRequest = 0xA0;
bmRequestType = 0xC0;
wValue = 0x0000;
wIndex = 0x0000;
wLength = 1;
FX3 Linux SDKからの制御伝達関数プロトタイプ:
int cyusb_control_transfer (cyusb_handle *h, unsigned char bmRequestType,
unsigned char bRequest, unsigned short wValue,
unsigned short wIndex, unsigned char *data,
unsigned short wLength, unsigned int timeout);
サンプルコード:
int num = cyusb_open();
printf("number of devices = %d\n", num);
if (num <= 0)
return -1;
cyusb_handle *h = cyusb_gethandle(0);
unsigned short vid = cyusb_getvendor(h);
unsigned short pid = cyusb_getproduct(h);
printf("vid = %04x, pid = %04x\n" , vid, pid);
unsigned char bmReqType = 0xC0;
unsigned char bRequest = 0xA0;
unsigned short wValue = 0x0000;
unsigned short wIndex = 0x0000;
unsigned short wLength = 1;
unsigned char buf_data[1] = {0};
unsigned int timeout = 5000;
int retval = cyusb_control_transfer (h, bmReqType, bRequest, wValue, wIndex, buf_data, wLength, timeout);
if(retval>0)
printf("fx3 bootloader running\n");
else
printf("fx3 bootloader not running\n");
English: How FX3/CX3 Bootloader detects the state of PMODE ... - Cypress Developer Community
Translated by: Kenshow
タイトル: FX3/CX3ブートローダがPMODEピンの状態を検出する方法 - KBA231617
バージョン:**
PMODEピンの状態を検出するために、FX3ブートローダは、以下の順序でPMODEラインの内部プルアップおよびプルダウン抵抗を有効にします。
このプロセスは、デバイスの接続/リセットされるたびに繰り返されます。
ブートローダーは、PMODEピンがフローティングであるかどうかをチェックします。これには、プルアップ抵抗とプルダウン抵抗が有効になっているときにサンプリングされた PMODE ラインの状態が使用されます。
注:特定のI / Oのパワードメイン電圧に対応するHIGH / LOWとして解釈される電圧の範囲を理解するには、FX3データシートの表8 - DC仕様を参照してください。
PMODEピンがフローティングの場合:
内部プルアップ時には、その端子の電圧は HIGH になります。内部プルダウンを行うと、そのピンの電圧は LOW になります。内部プルアップ抵抗とプルダウン抵抗を変更したときの電圧レベルの変化は、ブートローダがピンがフローティングしているかどうか を検出するために使用します。
PMODE ピンが外部から HIGH にプルアップされているか、外部から HIGH の電圧が供給されている場合:
ブートローダが内部プルアップを有効にすると、そのピンの電圧は HIGH になります。次に、内部プルダウンを有効にすると、そのピンに分圧(外部抵抗と内部10kpull-down)が形成されます。ここで、外部抵抗を選択する際には、その端子の電圧がLOWレベルにならないように注意してください。もしLOWレベルになると、ブートローダはそのピンをフローティングと解釈します。
PMODEピンが外部からプルダウンされている場合:
ブートローダによって内部プルアップ抵抗がそのピンに配置されると、(50kの内部プルアップ抵抗と外部プルダウン抵抗で)分圧されます。ここでも、外部抵抗を選択する際に、そのピンの電圧がHIGHレベルにならないようにしてください。次に、ブートローダがそのピンに内部プルダウン抵抗を配置すると、そのピンの電圧自体がLOWになります。したがって、ブートローダが内部プルアップ抵抗を配置したときのピンの電圧がHIGHレベルの場合は、ブートローダーはピンがフローティングであることを検出します。
PMODEラインの外部プルアップおよびプルダウン抵抗の推奨値は10kです。
FX3 / CX3デバイスがホストまたはリセットに接続されている場合の、PMODE電圧レベルのディップとスパイクの影響。
開発者コミュニティの次のディスカッションスレッドを参照してください。
https://community.cypress.com/thread/50671
前述のように、ブートローダは、PMODEピンの状態を検出するための内部プルアップおよびプルダウン抵抗を有効にします。ブートローダによって有効にされるこれらのプルアップおよびプルダウン抵抗は、PMODEラインで見られるディップとスパイクの原因になります。これらのピンの機能には影響しません。
Version: **
The original version of the firmware programmed on the CYPD3177 EZ-PD™ BCR devices older than date code (YYWW format – last two digits of the year, and two digits of the work week) “2047” is version 3.0C. The updated firmware version that the CYPD3177 devices have with the date code “2047” or later, is version 4.05. The updates incorporated in firmware version 4.05 are listed in Table 1.
Table 1. List of updates incorporated in EZ-PDTM BCR device (CYPD3177) firmware version 4.05
| Symptom/Enhancement | Details |
1 | Device heating up in overvoltage condition | When the BCR device is used with non-compliant Type-C power sources which do not shut VBUS off in an overvoltage condition, the BCR device will continuously draw current from VBUS via the VBUS_IN pin (pin 18 of CYPD3177). This causes an increase in power dissipation when the BCR device uses the original BCR firmware, further resulting in device overheating. It is important to note that this issue is not observed when compliant PD and Type-C power sources are used with the BCR device. This issue is now fixed in the updated firmware. |
2 | SAFE_PWR path does not detect VBUS over-voltage conditions | The original BCR firmware did not have OVP enabled in the SAFE_PWR path, so the BCR device would not turn off the SAFE_PWR FETs to protect the system sub-circuit that is powered through the SAFE_PWR path in an over-voltage condition. This could result in lack of overvoltage protection on the SAFE_PWR path in rare instances where the USB-C power adapter also lacks overvoltage protection. In the updated BCR firmware, OVP condition detection is enabled in the SAFE_PWR path. |
3 | VBUS_MIN setting is ignored when the BCR device is connected to non-PD, 5V-only power adapters (for example: Type-C Only power adapters) | In the original firmware version, when a non-PD power adapter is connected to the BCR device, the firmware always sets the VBUS_MIN value to 5V regardless of the VBUS_MIN GPIO resistor divider setting. This could potentially allow a power-limited power source to attempt to power the system. In the updated firmware, the sink path is disabled for non-PD, 5V-only power adapters when VBUS_MIN is set to a voltage greater than 5V. |
4 | FW updates based on USB-PD Spec | Minor firmware updates were done to meet the latest USB-PD compliance tests. This does not affect the device functionality. The firmware was also upgraded to support USBPD 3.0 Version 2, D_ID acknowledge with Type-C connector type. The default connector type is set to ‘receptacle’ and is changeable over the HPI interface. |
5 | Reduced active power consumption | The updated firmware allows the CYPD3177 devices to go to sleep when there is no PD or I2C communication. This reduces the active power consumed by the device. |
6 | Device heating up in the event of a particular sequence following a FAULT scenario. | The original BCR firmware caused an increase in current consumption when the capabilities mismatch got resolved by reconfiguring the PDOs over HPI. This issue is resolved in the updated BCR firmware. |
7 | SAFE_PWR FET output could go higher than 5V momentarily when the host processor introduces a capabilities mismatch. | When the current power contract is greater than 5V, and the host processor introduced a capabilities mismatch by overriding the hardware settings for VBUS_MIN and VBUS_MAX, the SAFE_PWR FET would momentarily output a voltage that is equal to the current power contract before providing the expected 5V output on the SAFE_PWR FET. A simple workaround for this is to ensure that the host processor never introduces the capabilities mismatch after making a successful power contract. This issue is fixed in the updated firmware. |
8 | When Safe Power is negotiated with the power adapter, the BCR device requests the maximum available current instead of 900mA as documented in the BCR datasheet. | During a capabilities mismatch scenario, a 5V contract was established to provide the safe power voltage of 5V to the sink. During this condition in the original BCR firmware, the BCR device requested the maximum available current instead of 900mA. A workaround is not needed because the current requested was greater than 900mA as documented in the BCR datasheet, and most of the power adapters will support 900mA current. This issue is fixed the updated firmware. |
9 | Made f/w changes to make the UFP VDO data capable to support products that present a USB interface in addition to a UFP power sink interface. | The data capability will be determined by either the presence or the value of the pull-up resistor connected to the FLIP pin. Added a FLIP pin strap feature to change the USB communication bit and UFP VDO. See Table 2 for details on the pull-up resistor value and the data capability bit being presented. Legacy applications that did not utilize the FLIP pin and were intended to be power sinks only should not see any changes in normal operation since data-capable UFP sinks are also capable of sinking power. The default UFP VDO, when the port is set to be data-capable, will corelate to the port being capable of USB 2.0 data in peripheral mode with a Type-C receptacle with no alternate mode support. The contents of the UFP VDO can be modified over the HPI interface by using a non-volatile write command. See the latest BCR HPI Specification for more details. |
Table 2. FLIP Pin Pull-Up Resistor value and the Data Capability Bit Being Presented
| Pull-Up Resistor Value | Data Capability Bit Presented as a part of UFP VDO |
1 | No pull-up resistor (FLIP pin is floating) | 1, which corelates to the port that is USB data-capable |
2 | < 4.7kΩ | |
3 | 50kΩ | 0, which corelates to the port that is not data-capable |