Japanese version: macOSバージョン11.0.1(Big Sur)を使用したModusToolbox用のEclips... - Cypress Developer Community
Version: **
Question:
Why does the Eclipse IDE for ModusToolbox show an error while using macOS version 11.0.1 (Big Sur)?
Answer:
When opening the Eclipse IDE for ModusToolbox using macOS version 11.0.1 (Big Sur), you may encounter a java.lang.NullPointerException error message, which indicates that the IDE cannot run due to a Java conflict between Eclipse and macOS.
Workaround:
If you are using macOS 11.0.1 (Big Sur), do not use the Eclipse IDE. You can use various tools such as the Project Creator, Library Manager, and Configurators in stand-alone mode. You can also export your application to various IDEs/code editors, such as Visual Studio Code (VS Code). Refer to the ModusToolbox User Guide for details.
Community Translated by NoTa_4591161 Version: **
Translation - English: PSoC Creator Design for PSoC 6 with Locked Pin Connected to Opamp Minus Input Fails to Build – KBA221141
質問:
オペアンプのマイナス入力に接続されているピンがロックされていると、オペアンプコンポーネントの配置中にPSoC 6を使用したPSoC® Creator™デザインが失敗するのはなぜですか?
回答:
PSoC Creator4.1および4.2Betaでは、PSoC 6デバイスのプレーサーに欠陥があり、関連するピンがロックされているときに、オペアンプのマイナス入力がブロックされていると誤って表示されます。デザインにマイナスピンを必要とする2つのオペアンプが含まれている場合、配置者はマイナスピンを必要とするオペアンプをマイナスピンがブロックされている場所に割り当てようとしないため、配置が失敗する可能性があります。これは、PSoC Creator4.2の最終リリースで解決される予定です。
回避策:
回避策は、ピンのロックを解除したままにし、代わりにオペアンプの配置をロックすることです。各オペアンプにはマイナス入力用の優先ピンが1つしかないため、オペアンプの配置をロックすると、プレーサーが目的のピン位置にガイドされます。これを実現する最も簡単な方法は次のとおりです。
Community Translated by NoTa_4591161 Version: **
Translation - English: Local Interconnect Network (LIN) Slave Component User Guide for PSoC - KBA225227
質問:
ローカル相互接続ネットワーク(LIN)コンポーネントを使用する際の一般的な考慮事項は何ですか?また、さまざまなLINの問題をトラブルシューティングするにはどうすればよいですか?
回答:
このドキュメントは、PSoC®LINコンポーネントを使用するための一般的なガイドラインを提供します。 ベストプラクティス、一般的に報告されている問題、およびデバッグ手順について説明します。 このドキュメントは、PSoCLINのトラブルシューティングガイドとして使用できます。
LINスレーブコンポーネントは、PSoC 3、PSoC 5LP、およびPSoC4ファミリでサポートされています。PSoC 4 でLINスレーブを開始するには、PSoC® 4 LINスレーブコンポーネント入門 - KBA210346を参照してください。PSoC3およびPSoC5LPでLINスレーブを構成する手順は、PSoC4の場合と同様です。
PSoC 4ファミリの場合、実装されているLINスレーブコンポーネントはシリアル通信ブロック(SCB)に基づいていますが、PSoC3およびPSoC5LPでは、ユニバーサルデジタルブロック(UDB)に基づいています。
表1 。LINスレーブコンポーネントの評価をサポートするキット
名前 | サポートされている製品ファミリ | キットMPN |
PSoC 3、PSoC 4、PSoC 5LP | ||
PSoC 4 | ||
PSoC 3 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 5LP | ||
PSoC 5LP | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 | ||
PSoC 4 |
PSoC Creator™には、サポートされているすべてのデバイス用のLINスレーブサンプルプロジェクトが含まれています。メニューパス、[File] → [Code Example]に従います。[Find Code Example]ウィンドウで、[Device Family]のドロップダウンリストからPSoCファミリを選択します。[Filter]フィールドにLINと入力します。LINに関連するコードサンプルを示します。
図1 .PSoCCreatorでのLINスレーブの例の選択
次のサンプルプロジェクトもWebサイトで見つけることができます。
PSoCでLINスレーブを開始する前に、次のドキュメントを確認してください。
読むことができるいくつかの追加のドキュメントは次のとおりです。
それぞれのレジスタテクニカルリファレンスマニュアルはここにあります。
2.1 回路レビュー
信頼性の高いLIN通信の場合は、ボード上のトランシーバーへのLIN Tx、Rx、およびLIN enable/NLSPピンの接続を確認してください。また、それぞれのトランシーバーのデータシートに記載されているように、ボード上のトランシーバーの回路図を確認してください。参照回路図については、TJA1020LINトランシーバチップを使用するCY8CKIT-026CANおよびLINシールドキットのユーザーガイドを参照してください。
トランシーバーのVBATとアース接続が適切かどうかを確認します。
2.2 ハードウェアの接続
LINスレーブコンポーネントはTxピンとRxピンを提供します。NSLPピンは、LINスレーブプロジェクトのTopDesignで構成されているソフトウェアピンです。図2 NSLPピを参照してください。
図2 .NSLPピン
Tx、Rx、およびNSLPがトランシーバーのそれぞれのピンに接続されていることを確認してください。CY8CKIT-026を使用している場合は、キットの2つのトランシーバーのいずれかを使用できます。表2に、各トランシーバーのRx、Tx、およびNSLPラインを示します。
表2 .CY8CKIT-029のLINトランシーバーピンヘッダー
LIN1トランシーバー | LIN2トランシーバー |
J15_1(LIN1_RX) | J6_1(LIN2_RX) |
J15_2(LIN1_TX) | J6_2(LIN2_TX) |
J15_3(LIN1_NSLP) | J6_3(LIN_NSLP)
|
詳細については、CY8CKIT-026CANおよびLINシールドキット を参照してください。
2.3 LINスレーブプロジェクトの設定
PSoC 4のLINスレーブを設定する手順はCE96999 -PSoC® 4での基本的なLINスレーブの実装を参照してください。この手順については、無条件フレームの設定を含んでいます。次の手順に従って、診断フレームを設定します。
1. LINスレーブコンポーネントを右クリックして、「Configure」を選択します。
2. 「Configure LIN」ウィンドウで、「Transport Layer」タブに移動し、次のことを行います。
a. [Transport layer data buffer lengths]オプションを選択します。
b. API format selection として[Raw transport layer API]を選択します。
c. Initial NADを設定し、要件に従ってTransport layer data buffer lengths(Rawトランスポート層の場合)を選択します。
図3 .トランスポート層のタブ構成
3. Config. Servicesに移動します:
a. [Automatic configuration request handling]オプションを選択して、ソースコードが選択したサービスを処理できるようにします。
b。 要件に基づいてコンフィギュレーションサービスを選択します。
c。 Supplier ID, Function ID, Variantを含むSlave informationを選択します。
図4 .[Config. Services]タブ
ファームウェアでは、それぞれのLIN信号またはフレームの受信ステータスを監視して、診断フレームが受信されたかどうかを確認します。次のコードスニペットは、フレームの受信を監視し、rawのAPIを使用してデータを受信する例です。
if((ld_raw_rx_status(LINS_IFC_HANDLE) == LD_DATA_AVAILABLE))
{
ld_get_raw(LINS_IFC_HANDLE, rxBuffer);
}
次のコードスニペットを使用して、応答フレームを更新します:
ld_put_raw(LINS_IFC_HANDLE, rxBuffer);
自動サービスリクエスト処理が有効になっている場合、それぞれのサービスを処理するためのコードがLIN.cで有効になります。グレー表示されているサービス、またはコンフィギュレーション選択されていないサービスのコードは生成されないことに注意してください。[Config. Services]タブで選択されていないサービスのコードは生成されないことに注意してください(図4を参照)。また、カスタム診断サービスの場合、コードはLIN.cで有効になりません。このような場合、ユーザーファームウェアでサービスを処理する必要があります。診断サービスのテストを参照してください。
同じ手順に従って、PSoC3またはPSoC5LPでLINスレーブコンポーネントを設定できます。
2.4 診断サービスのテスト
表3に、PSoC 4LINコンポーネントでサポートされているLIN診断サービスを示します。
表3 .サポートされている診断サービス
サービス番号 | サービス名 |
0xB0 | NADの割り当て |
0xB2 | 識別子で読む |
0xB3 | NADの条件変更 |
0xB6 | 設定の保存 |
0xB7 | フレーム識別子を割り当て |
[Config. Services]タブでサービスが選択されている場合(図5を参照)、そのサービスを処理するためのソースコードがLIN.cで有効になっています。
図5.サポートされているLIN診断サービス
図5でグレー表示されているサービスは、LINスレーブコンポーネントには実装されていません。ただし、LIN診断フレームのサービス項目を監視して、独自のサービス処理機能を作成することはできます。
たとえば、0xB1を処理する場合は、次のコードスニペットを使用してサービスを処理できます。
/* MRFにデータがある場合は、フレーム受信を続行します。 */
if((ld_raw_rx_status(LINS_IFC_HANDLE) == LD_DATA_AVAILABLE))
{ /* データをrxBuffer []に受信します */
ld_get_raw(LINS_IFC_HANDLE, rxBuffer);
}
if(rxBuffer[2] == 0xB1)
{
//サービスを処理します
}
同様に、ユーザー定義のサービスも処理できます。
2.5 ディープスリープからのPSoC 4デバイスをウェイクアップするLINスレーブを使用
LINネットワークの一般的な要件は、LINウェイクアップパルスを受信したときに、コントローラーを低電力モードからウェイクアップすることです。このような場合、LINRxピンを監視する必要があります。PSoC 4では、LINスレーブを使用してDeepSleepからデバイスをウェイクアップするには、LINRxピンを動的に変更する必要があります。
GPIO割り込みは、DeepSleepからPSoC4デバイスをウェイクアップするためのソースの1つです。割り込みソースとして設定されているピンは、デバイスをウェイクアップできます。
デフォルトでは、LINコンポーネントピンをDeepSleepのウェイクアップソースとして使用することはできません。LINピンをウェイクアップソースとして使用するには、システムリファレンスAPIとそれぞれのピンAPIを使用して、これらのピンを割り込みピンとして構成する必要があります。
以下は、LINコンポーネントのRxピンを割り込みピンとして設定するためのサンプルコードです。RxラインがlOWに引き下げられると、デバイスはスリープから復帰します。
LINS_SCB_tx_Sleep(); //これはドライブモードをバックアップします
LINS_SCB_rx_Sleep(); //これはドライブモードをバックアップします
LINS_SCB_rx_SetDriveMode(LINS_SCB_rx_DM_RES_UP);
CyIntEnable(0); // GPIOポート0のIRQ0
CyIntSetVector(0, &LINRx); // GPIOポート0のIRQ0と、割り込みが検出されたときに処理する必要のある機能のアドレス
LINS_SCB_rx_SetInterruptMode(LINS_SCB_rx_0_INTR, LINS_SCB_rx_INTR_BOTH);
// 低電力モードに移行します
CySysPmDeepSleep();
上記のコードスニペットでは、LINS_SCB_rx APIを使用して、割り込み用にRxピンを構成しています。また、CyIntEnable(0)は、ピンの割り込みを有効にします。
CyIntEnable(0)のパラメータ0は、GPIOポートの割り込み番号を示します。プロジェクトでは、Rxがport0に割り当てられ、port0のIRQ番号は「0」です。同じIRQ番号がCyIntEnable APIに渡されます。また、割り込みはトリガーされたときにクリアする必要があります。割り込みをクリアする関数を定義できます。この関数のアドレスは、GPIOポートの割り込みベクタに割り当てる必要があります。CyIntSetVectorは、カスタム関数のアドレスをIRQに割り当てるために使用されます。カスタム関数であるLINRx()のアドレスは、CyIntSetVectorおよびLINRx()に渡され、次のように定義されます。
void LINRx()
{
LINS_SCB_rx_ClearInterrupt();
LINS_SCB_tx_ClearInterrupt();
}
IRQ番号は、対応するアーキテクチャTRMに記載されています。表4に、PSoC 4200でのIRQマッピングを示します。たとえば、GPIO割り込み - IRQ0はPort0割り込みソースにマッピングされているため、port0のIRQ番号は「0」です。
表4 .GPIOのIRQマッピング
IRQベクタ | 割り込みソース |
IRQ0 | GPIO割り込み-ポート0 |
IRQ1 | GPIO割り込み-ポート1 |
IRQ2 | GPIO割り込み-ポート2 |
IRQ3 | GPIO割り込み-ポート3 |
IRQ4 | GPIO割り込み-ポート4 |
使用していることを確認しCyIntDisable(0)を割り込み禁止とするLINS_SCB_tx_Wakeup()ドライブモードを復元します。
Rxピンをウェイクアップソースとして使用するには、Rxを介して割り込みを受信したときに開始するタイマを設定します。タイマは、Rxで受信したパルスの時間を計算するために使用されます。次のAPI呼び出しを使用して、ウェイクアップコマンドがコンポーネントに送信されると、LINスレーブがウェイクアップします。
l_ifc_ioctl_LINS(L_IOCTL_WAKEUP, NULL);
上記のAPIは、有効なウェイクアップパルスがRxで受信された場合にのみ呼び出す必要があります。タイマは、Rxパルスの立ち下がりエッジで開始し、Rxパルスの立ち上がりエッジで停止することができます。計算された時間は、LINのウェイクパルス仕様と比較できます。
2.6 無条件フレームのエラー処理
LINプロトコルは、発行フレームの1つにエラービットを割り当てることを義務付けています。LINマスターは、エラービットが設定されているかどうかを監視するためにこの公開フレームを要求できます。LINノードは、フレームにエラーがあったかどうかを検出できます。エラー処理を定義し、実装で設定します。
エラー応答ビットは、次のいずれかの条件が観察されたときにセットされます。
LINステータスレジスタを監視して、応答フレームにエラーがあったかどうかを確認できます。
図6 .LINステータスレジスタ
エラーステータスレジスタを監視する例を次に示します。
error= l_ifc_read_status_LINS();
if (LINS_IFC_STS_ERROR_IN_RESPONSE == (error & LINS_IFC_STS_ERROR_IN_RESPONSE) )
{
UART_PutString( "Frame error ");
UART_PutHexByte(error);
UART_PutCRLF();
}
2.7 LINスレーブを使用してウェイクアップパルスを送信
ウェイクアップパルスを送信するには、次の手順に従います。
1. l_ifc_wake_up_LIN() APIを呼び出します。詳細については、LIN 2.2A仕様のセクション7.2.5.3l_ifc_wake_upを参照してください。
2. ウェイクアップ信号が送信された後、応答を150ミリ秒待ちます。
3. 応答がない場合は、l_ifc_wake_up_LIN() APIを呼び出してパルスを再送信します。
ウェイクアップ信号がすでに3回送信されている場合は、1.5秒待ちます。 1.5秒後、上記のシーケンスの再送信を開始します。 これらの手順は、アプリケーションファームウェアで注意する必要があります。 これらのタイミングを監視するには、タイマー(TCPWMコンポーネント)を使用します。
2.8 LINプロジェクトでのSysTickタイマを使います
LINコンポーネントは、プロトコルのタイミングを維持するためにSystickタイマを使用します。 したがって、Systick割り込みをカスタムISRにマッピングすると、LIN機能に影響を与える可能性があります。 たとえば、LINコンポーネントはバスの非アクティブを検出できない場合があります。
Systickには5つのコールバックがあり、LINタイマ関数l_ifc_aux_LIN_1は、SystickISRのコールバック番号「0」で呼び出されます。 個別のISRをSystickにマッピングする代わりに、LINタイマーISR自体を使用するか、カスタム関数をSystickタイマのコールバック番号1、2、3、または4に渡すことができます。 SystickタイマとそのAPIの詳細については、システムリファレンスガイドの「PSoC4システムリファレンスガイド - cy_bootコンポーネントv5.70」セクションを参照してください(システムリファレンスガイドにアクセスするには、PSoC Creatorのヘルプにアクセスしてください)。
' UserFunc()'などのカスタム関数を渡すには、次のAPIを使用します。
CySysTickSetCallback(1u, &UserFunc);
または、LINタイマ機能を使用するための次のガイドラインに従ってください。
LIN.c(LINソースファイル)の関数void l_ifc_aux_LIN_1(void)には、この関数が呼び出されるたびにインクリメントする変数LIN_1_periodCounterがあります。l_ifc_aux_LIN_1は、引数としてSystickコールバック関数に次のように渡されます。
CySysTickSetCallback(0u, &l_ifc_aux_LIN_1);
このコールバック関数は、初期化中に呼び出されます。関数l_ifc_aux_LIN_1は、カスタムコードを記述するためのプレースホルダーを提供します。この関数には次のコメントがあります。
/***************************************************************************
* Place your BASE ISR code here
***************************************************************************/
/* `#START LIN_1_BASE_ISR_CODE` */
/* `#END` */
/* `#START LIN_1_BASE_ISR_CODE` */ の下にカスタムコードを追加できます。LINソースファイルにそれぞれのヘッダーファイルを含める必要があります。また、TopDesignで変更が行われると、ソースファイルが再生成されます。したがって、ファイルを再度含めるようにしてください。
コールバックに大きなコードを含めることはお勧めしません。コールバックが巨大なコードを保持している場合、それはLIN機能に影響を与える可能性があります。
2.9 LINモードでSCB UARTを使用して
PSoC 4では、SCB_UART_RX_CTRLレジスタのSCB_LIN_ MODEビットを有効にすることにより、SCBUARTをLINモードで使用できます。また、LINプロトコルには、ブレーク検出とボーレート検出機能が必要です。このセクションでは、これらの機能を有効にして使用する方法について説明します。
図7 .SCB_UART_RX_CTRLレジスタ
SCB_UART_RX_CTRLレジスタについては、図7を参照してください。
SCB_LIN_ MODEが設定されている場合、受信機は着信データに対してブレーク検出とボーレート検出を実行します。
まず、ブレーク検出は、ライン値が0のビット周期の数をカウントします。BREAK_WIDTHは、必要なビット周期の最小数を指定します。
ブレーク検出が成功すると、SCB_INTR_RXレジスタにSCB_BREAK_DETECTが設定されます。
図8 .SCB_INTR_RX R egister
ボーレート検出は、同期バイトの受信に使用される周辺クロック周期の数をカウントします(0x55;最下位ビットが最初)。カウントは、SCB_UART_RX_STATUSレジスタのSCB_BR_COUNTERフィールドから入手できます。
図9 .SCB_UART_RX_STATUS
ボーレート検出が成功すると、SCB_INTR_RXレジスタのSCB_BAUD_DETECTビットが設定されます。SCB_BAUD_DETECTが設定された後、BR_COUNTERを読み取ります。
カウンタ値を読み取り、それがLINボーレートの14%の許容範囲内にあるかどうかを確認してから、さらに受信します。
2.10 LDFとNCFのインポートとエクスポート
クライアントから提供されたLINディスクリプタファイル(LDF)とノードコンフィギュレーションファイル(NCF)=をLINスレーブコンポーネントにインポートできます。 これらのファイルをインポートすると、LINコンポーネントのすべてのタブが設定されます。 設定に基づいてアプリケーションファームウェアを作成する必要があります。
LINスレーブ構成ウィンドウで、「General」タブに移動し、「Import File」オプションを使用して、LDFまたはNCFファイルをインポートします。LIN設定をNCFファイルとしてエクスポートすることもできます。
図10.Linコンポーネントでファイルをインポートおよびエクスポートするオプション
LINスレーブコンポーネントデータシートのGeneral Toolbarセクションを参照してください。
3.1 コミュニケーションの問題
LINがフレームを送信または受信できない場合:
CY8CKIT-026を使用している場合は、接続が「ハードウェア接続」セクションに記載されている仕様に従っていることを確認してください。
NSLPピンが正しく構成されていることを確認してください。図11を参照してください。
図11 .NSLPピン構成
図12 .LIN の割り込み
デバッグがISRのブレークポイントに達した場合は、l_ifc_rx_LINS()関数をチェックし、この関数内のコードの各行が正しく実行されているかどうかを確認します。
3.2 受信した一貫性のないデータ
LINスレーブで受信したデータがLINマスターから送信されたデータと一致していません。受信したフレームの特定のバイトは更新されません。
このような場合、公開フレームの更新中またはサブスクライブフレームの受信中に、コードが通知機能を使用していることを確認してください。次に例を示します。
if(1u == l_flg_tst_SignalIn())
{
/* 信号旗をクリアします */
l_flg_clr_SignalIn();
}
ここで、SignalInは、図13に示すようにLINフレームで構成されたLIN信号です。
図13.LINフレームで設定された信号
3.3 LINモードのUART
UARTコンポーネントをLINモードで使用している場合、バスに信号がない場合でも割り込みがトリガーされます。
UART_ClearRxInterruptSourceがUARTのISRで呼び出されていることを確認してください。LINスレーブの実装中に、LINコンポーネントのLIN.cソースファイルを参照できます。
1. PSoC 4、PSoC 3、またはPSoC 5LPはLINマスターをサポートしていますか?
PSoC 4、PSoC 3、およびPSoC 5LPには、LINマスターコンポーネントがありません。ただし、UARTコンポーネントを使用して独自のスタックを設定できます。PSoC 4については、PSoC 4200アーキテクチャTRMのUARTローカル相互接続ネットワーク(LIN)モードのセクションを参照してください。
2. CY8CKIT-026の用途は何ですか?
CY8CKIT-026には、LIN仕様に従ってレベルシフタとして機能するLINトランシーバーがあります。
3. TopDesignビューのPSoC 4 LINコンポーネントは、TxおよびRxピンを示していません。割り当てられたピンポートはどこにありますか?
PSoC 4 LINコンポーネントは、SCBベースのコンポーネントです。Project.cydwr →Pinタブで関連するピンが表示されます。ピン名は「componentname」:SCB:rxおよび「componentname」:SCB:txになります。コンポーネント名がLINSの場合、ピンはLINS:SCB:rxおよびLINS:SCB:txとして表示されます。
4. PSoC 4 LINコンポーネントのLINプロトコルのフレームフォーマットとタイミングを変更できますか?
LINフレーム形式を変更すると、LIN仕様に準拠しなくなります。これはカスタムプロトコルになります。タイミングの定義とフレームフォーマットの設定には、UARTを介した独自のカスタムライブラリを使用する必要があります。
例:フレーム形式から同期フィールドを削除するには、次の手順に従います。
a. 破損検出のためにUARTモードをLINに設定します。
LINS_SCB_UART_RX_CTRL_REG |= (uint32)(LINS_SCB_UART_RX_CTRL_LIN_MODE);
以下のコードに示すように、ブレーク検出イベントを待ちます。
while(0u =(LINS_SCB_INTR_RX_REG & LINS_SCB_INTR_RX_BREAK_DETECT));
ブレーク検出後、モードをUARTに戻す必要があります。
LINS_SCB_UART_RX_CTRL_REG ^= (uint32)(LINS_SCB_UART_RX_CTRL_LIN_MODE);
b. UARTモードのSCBはIDシンボルを受け取ります。これにより、RX_FIFO_NOT_EMPTY割り込みが設定されます。RX_FIFO_NOT_EMPTYを監視し、モードをLINに戻す必要があります。
RX_FIFO_NOT_EMPTYの極は次のとおりです。
while(0u == (LINS_SCB_INTR_RX_REG & LINS_SCB_INTR_RX_NOT_EMPTY));
LINS_SCB_UART_RX_CTRL_REG |= (uint32)(LINS_SCB_UART_RX_CTRL_LIN_MODE);
5. フレーム内のLINデータが正しく受信されず、特定のフィールドに以前のデータが表示されていました。これはどのように対処できますか?
公開フレームの更新中やサブスクライブフレームの受信中は、必ず通知機能を使用してください。通知機能の使用方法については、「受信したデータの不整合」セクションおよびLINコンポーネントのデータシートを参照してください。
6. LINスレーブコンポーネントに必要なクロック許容値はどれくらいですか?
LINスレーブ仕様で推奨されているクロック許容値は次のとおりです。
o 自動ボーレート選択(ABRS)オプションが無効になっている場合:±1.5%
o ABRSオプションが有効な場合:±14%
7. NAD = 0xFF(128)を割り当てると、コンポーネントがエラーをスローするのはなぜですか?
LIN仕様によると、ノードアドレス(NAD)の範囲は1〜127です。したがって、NADを128にすることはできません。
8. LINクロックの許容誤差が5%であっても、フレーミングエラーが発生するのはなぜですか。
自動ボー同期が無効になっていないか確認してください。自動ボーレート同期を使用しない場合、LINクロックの許容誤差は1.5%である必要があります。
9. LINコンポーネントをブートロードにどのように使用できますか?
ブートロードにLINコンポーネントを使用するには、カスタム通信プロトコルでブートローダーを使用してから、このナレッジベースの記事に記載されている手順2に従う必要がある場合があります。
10. ブートロード中に、LIN割り込みはフラッシュ書き込みに影響しますか?
フラッシュへの書き込みがあると、すべての割り込みが無効になります。したがって、フラッシュ書き込み中、LIN割り込みはトリガーされません。
11. LINコンポーネントを使用してバスをリッスンできますか?
スタックを変更するか、UARTを介してスタックを設定する必要があります。LINモードでUARTを使用する方法の詳細については、PSoC4レジスタTRMのSCB_LIN_MODEビットの説明を参照してください。
12. PID 0x3Cおよび0x3Dを使用するにはどうすればよいですか?
0x3cおよび0x3dを使用するには、LINコンポーネントコンフィギュレーションで[Use Transport Layer]オプションを有効にします([LIN Component]を右クリックして[Configure]を選択します。 [LIN] ウィンドウで[Transport Layer]タブに移動します)。Configuring LIN Slave Projectsを参照してください.
13. LINコンポーネントは、データシートに記載されているよりも多くのフラッシュを使用します。フラッシュ消費量データがデータシートと一致しないのはなぜですか?
フラッシュサイズは、LINコンポーネントの構成によって異なります。データシートに記載されているフラッシュサイズは、サンプルプロジェクト専用です。フレームとトランスポート層を追加すると、フラッシュの消費量が増加します。プロジェクトがフラッシュを最適に使用できるように、最適化が有効になっていることを確認してください。
14. 送信が完了したかどうかを監視するにはどうすればよいですか?LIN Txピンを監視してそのステータスを確認できますか?
モニターSCB_UART _DONEは少しSCB_INTR_Txレジスタ。このビットは、送信が完了するとセットされます。
次のコードスニッパーを使用して、送信の完了を監視できます。
if((CY_GET_REG32(LINS_SCB_SCB__INTR_TX)&LINS_SCB_INTR_TX_UART_DONE)==LINS_SCB_INTR_TX_UART_DONE)
{
}
SCBでは、低電力モードでの電流リークを回避するために、埋め込み出力ピン(Tx)の入力バッファが無効になっています。したがって、LIN_1_SCB_Tx_Read() APIを使用してステータスを読み取ると、常にゼロが返されます。したがって、ファームウェアのLINTxピンのステータスを監視することはできません。
15. LINコンポーネントでは、デフォルトのPIDを0x00から0x3Bまで設定できます。ID 0x3Cおよび0x3Dは、PIDオプションには表示されません。コンポーネントはファームウェアのPID0x3Cおよび0x3Dを処理しますか?
ID 0x3Cおよび0x3Dを使用するには、「Use Transport layer」を有効にする必要があります。コンポーネントは、LINソースコードでこれらのIDを処理します。
16. LIN APIに関する情報はどこにありますか?
LIN APIの詳細については、PSoC Creatorコンポーネントのデータシートを参照してください。
17. LINコンポーネントは複数のNADをサポートしていますか?
いいえ。LINコンポーネントは1つのNADのみをサポートします。
18. LINコンポーネントによる消費電流に関するデータはどこにありますか?
LINコンポーネントのデータシートに記載されている電気的仕様を参照してください。
19. LINコンポーネントにはソースコードまたはオブジェクトコードが付属していますか?また、LIN適合認証レポートを提供できますか?
LINコンポーネントは、LINスレーブプロトコルのソースファイルで構成されています。LINコンポーネントのソースファイルは、PSoC Creatorでコードを生成した後、ワークスペースエクスプローラーの[Generated Source]の下に表示されます。適合性試験のためにはPSoC® 4 LINスレーブコンポーネント入門 - KBA210346を参照してください。
20. エラー応答ビットをLINコンポーネントから削除できますか?
いいえ。LIN2.x仕様によれば、エラー応答ビットが設定された公開フレームがLINスレーブノードに少なくとも1つ存在する必要があります。LIN 1.3仕様では、エラー応答ビットは指定されていません。LINコンポーネントでLIN1.3が有効になっている場合、エラービットは消えます。
21 LIN仕様に記載されているビットサンプルタイミングは、PSoC 4 LINコンポーネントにどのように実装されていますか? ソースコードは何ですか?
サンプリングはハードウェアで行われます。UARTは、サンプルのタイミングを処理する物理層です。したがって、ビットサンプルタイミングのソースコードはありません。
22. PSoC 4 LINコンポーネントのバイト間テスト(IBT)を実行する必要がありますか?
回答:バイト間スペーステストは、バイト間スペースIBT <1ビットであるため、PSoC 4LINコンポーネントには適用されません。したがって、IBTテストを実行する必要はありません。ユーザーはこのテストの選択を解除する必要があります。
23. サンプリングポイントはどの位置に設定されていますか?
LINでは、サンプルポイントはUARTプロトコルに基づいています。UARTはスタートビットとストップビットをサンプリングします。サンプルポイントはビットの中央にあります。
24. LINスレーブコンポーネントは、LIN 2.1仕様の次のビットレート許容値を満たしていますか?
o FTOL_RES_MASTER <±0.5%
o FTOL_RES_SLAVE <±1.5%
o FTOL_UNSYNC <±14%
o FTOL_SYNC <±2%
o FTOL_SL_to_SL <±2%
LINコンポーネントはスレーブのみをサポートします。したがって、LINコンポーネントはLINスレーブビットのタイミングと許容誤差の仕様を満たしています。ビットレート許容誤差仕様の詳細は次のとおりです。
o FTOL_RES_SLAVE <±1.5%:クロックソースに依存します。許容誤差が1.5%未満の外部クロックを使用する場合、この同期がカバーされます。
o ・FTOL_SYNC <±2%:クロックソースに依存します。許容誤差が2%未満の外部クロックまたはIMOが使用されている場合、この同期がカバーされます。
o ・FTOL_SL_to_SL <±2%:クロックソースに依存します。許容誤差が2%未満の外部クロックまたはIMOが使用されている場合、この同期がカバーされます。
25. 生成されたコードに、ビットサンプリングとビットレート許容値に対応する部分がありますか?
ビットサンプルポイントはハードウェアでカバーされています。ビットレートの許容範囲については、以下に示すように、LIN.cのif条件内を参照してください。
/***********************************************************************
* Sync Field Complete *
***********************************************************************/
if(0u != (LINS_SCB_INTR_RX_REG & LINS_SCB_INTR_RX_BAUD_DETECT))
26. 非アクティブタイムアウトを監視するにはどうすればよいですか?
LINステータスレジスタのバスアクティビティビットを監視します。このビットは、バスの非アクティブがタイムアウトするとリセットされます。図6を参照してください。使用l_ifc_read_status_LIN()のコードスニペットに示すように、このビットを監視するためのAPIは:
busStatus = l_ifc_read_status_LIN();
if((busStatus & LINS_IFC_STS_BUS_ACTIVITY) == 0u )
27. LINマスターがスリープフレームを送信したかどうかを確認するにはどうすればよいですか?
LINステータスレジスタのスリープ状態への移行ビットを監視します。このビットは、マスターがスリープフレームを送信するときに設定されます。図6を参照してください。コードスニペットに示すように、l_ifc_read_status_LIN() APIを使用して、このビットを監視します。
busStatus = l_ifc_read_status_LIN();
if((busStatus & LIN_IFC_STS_GO_TO_SLEEP) != 0u )
Show LessEnglish: タイトル:インポートされたMODUSTOOLBOXプロジェクトを構築できません; VISION V5... - Cypress Developer Community
Author: kylek_76 Version: **
Background
In the ModusToolbox® build system, export to µVision is performed by executing the following command:
make uvision5 TOOLCHAIN=ARM
The build system generates two files:
Known issue in µVision v5.32:
In µVision v5.32, automatic discovery of the .gpdsc file does not work. When you load a project in the µVision IDE, the project appears, but not the referenced components such as HAL and PDL. This causes the project build to fail because the dependent files located in those components cannot be located.
Infineon is working with Arm to resolve this issue.
Workarounds
Option 1: Use µVision v5.31 or earlier version. The file import process works as expected.
Option 2: Use µVision v5.31 to create the project, and then open it with µVision v5.32. You must have both µVision v5.32 and µVision v5.31 installed.
Community Translated by NoTa_4591161 Version: **
Translation - English: PSoC® Creator™: ECO/EXCO Issue with Quartz Crystals and Ceramic Resonators Driving the PLL - KBA231127
PSoC 4100SPlusおよびPSoC4500デバイスファミリでは、ECOクロックがDWRまたはcy_boot APIを使用して構成されている場合、冗長なEXCO_PGM_CLK操作によってPLLが不安定になります。これによりロックが切れ、出力周波数の変動によりCPUのハードフォールトが発生する可能性があります。
PSoC 4100S Plus、PSoC 4500
PSoC Creator4.2および4.3
使用するソフトウェア、およびクロック構成に使用する方法に応じて、適用できるいくつかの回避策があります。
回避策#1 –利用可能になったらPSoC Creator4.4に移行する
利用可能になると、PSoC Creator 4.4リリースは、クロックを構成するためのDWRアプローチに使用されます。cy_boot 6.0をパッケージ化します。これは、cy_bootAPIを介して構成が行われる場合の問題に対処します。
回避策#2 –コード生成を無効にし、生成されたコードを微調整する
PSoC Creator 4.3または4.2を使用している場合は、このオプションをこのまたは同様のDWR構成に使用します
コード生成を無効にしないと、コードが再生成されることに注意してください。この回避策の使用には注意が必要です。
コンポーネントとDWRの構成が完了したら、コード生成を無効にします。[Project ]メニューに移動し(またはワークスペースエクスプローラーでプロジェクトを右クリックして)、Build Settings > Code Generation > Skip Code Generation > Trueを選択します。
次のコードは、Generated_Source\PSoC4\cyfitter_cfg.cで生成されます。
static void ClockSetup(void)
{
uint8 ecoStatus;
uint8 pllTimeout、i;
/* ClockSetup()中にグリッチが発生した場合に備えて、可能な最大周波数に基づいてフラッシュサイクルを設定します。 */
CY_SET_REG32((void CYXDATA *)(CYREG_CPUSS_FLASH_CTL), (0x0012u));
/* IMOを新しいクロック速度に更新します。 */
CySysClkWriteImoFreq(24u);
/* ECOトリムを構成します */
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_CONFIG), (0x00000000u));
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_TRIM0), (0x0000001Fu));
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_TRIM1), (0x0000001Fu));
/* ECOを開始し、HFCLKに必要なのでステータスを確認します */
ecoStatus = CySysClkEcoStart(2000u);
if(ecoStatus != CYRET_SUCCESS)
{
CyClockStartupError(CYCLOCKSTART_XTAL_ERROR);
}
CyDelayUs(1500u); /* 安定するのを待ちます */
CySysClkPllSetSource(0u, CY_SYS_PLL_SOURCE_ECO);
CY_SET_REG32(CYREG_EXCO_PLL_CONFIG、0x80020118u);
CyDelayCycles(120u);
CY_SET_REG32(CYREG_EXCO_PLL_CONFIG, 0xC0020118u);
for(pllTimeout = 0u;(pllTimeout <25u)&&(CY_GET_REG32(CYREG_EXCO_PLL_STATUS)== 0u); pllTimeout ++)
{
CyDelayCycles(240u);
}
if(CY_GET_REG32(CYREG_EXCO_PLL_STATUS)== 0u)
{
CyClockStartupError(CYCLOCKSTART_PLL_ERROR);
}
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_CLK_SELECT), (0x00000001u));
/* CYREG_EXCO_CLK_SELECTのクロックソースを変更するためのクロックシーケンスを生成します */
CY_SYS_EXCO_PGM_CLK_REG | = CY_SYS_EXCO_PGM_CLK_ENABLE_MASK;
for(i = 0u; i <CY_SYS_EXCO_PGM_CLK_SEQ_GENERATOR; i ++)
{
CY_SYS_EXCO_PGM_CLK_REG | = CY_SYS_EXCO_PGM_CLK_CLK_ECO_MASK;
CY_SYS_EXCO_PGM_CLK_REG &= 〜CY_SYS_EXCO_PGM_CLK_CLK_ECO_MASK;
}
CY_SYS_EXCO_PGM_CLK_REG &= ~CY_SYS_EXCO_PGM_CLK_ENABLE_MASK;
/* 位相調整されたクロックを設定します */
/* CYDEV_CLK_SELECT開始アドレス:CYDEV_CLK_SELECT */
CY_SET_REG32((void *)(CYREG_CLK_SELECT), 0x00000002u);
(void)CyIntSetVector(13u, &CySysTimerIsr);
CyIntEnable(13u);
CY_SET_REG32((void *)(CYREG_WCO_WDT_CONFIG), 0x00000000u);
CySysClkSetTimerSource(CY_SYS_CLK_TIMER_SRC_ILO);
}
次のように変更する必要があります(赤文字のコードを削除またはコメントアウトします)。
static void ClockSetup(void)
{
uint8 ecoStatus;
uint8 pllTimeout, i;
/* ClockSetup()中にグリッチが発生した場合に備えて、可能な最大周波数に基づいてフラッシュサイクルを設定します。*/
CY_SET_REG32((void CYXDATA *)(CYREG_CPUSS_FLASH_CTL),(0x0012u));
/* IMOを新しいクロック速度に更新します。*/
CySysClkWriteImoFreq(24u);
/* ECOトリムを構成します */
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_CONFIG), (0x00000000u));
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_TRIM0), (0x0000001Fu));
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_TRIM1), (0x0000001Fu));
/* ECOを開始し、HFCLKに必要なのでステータスを確認します */
ecoStatus = CySysClkEcoStart(2000u);
if(ecoStatus != CYRET_SUCCESS)
{
CyClockStartupError(CYCLOCKSTART_XTAL_ERROR);
}
CyDelayUs(1500u); /* 安定するのを待ちます */
CySysClkPllSetSource(0u, CY_SYS_PLL_SOURCE_ECO);
CY_SET_REG32(CYREG_EXCO_PLL_CONFIG、0x80020118u);
CyDelayCycles(120u);
CY_SET_REG32(CYREG_EXCO_PLL_CONFIG、0xC0020118u);
for(pllTimeout = 0u;(pllTimeout <25u)&&(CY_GET_REG32(CYREG_EXCO_PLL_STATUS)== 0u); pllTimeout ++)
{
CyDelayCycles(240u);
}
if(CY_GET_REG32(CYREG_EXCO_PLL_STATUS)== 0u)
{
CyClockStartupError(CYCLOCKSTART_PLL_ERROR);
}
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_CLK_SELECT), (0x00000001u));
///* CYREG_EXCO_CLK_SELECTのクロックソースを変更するためのクロックシーケンスを生成します*/
// CY_SYS_EXCO_PGM_CLK_REG | = CY_SYS_EXCO_PGM_CLK_ENABLE_MASK;
// for(i = 0u; i <CY_SYS_EXCO_PGM_CLK_SEQ_GENERATOR; i ++)
//{
// CY_SYS_EXCO_PGM_CLK_REG | = CY_SYS_EXCO_PGM_CLK_CLK_ECO_MASK;
// CY_SYS_EXCO_PGM_CLK_REG&= ~CY_SYS_EXCO_PGM_CLK_CLK_ECO_MASK;
//}
// CY_SYS_EXCO_PGM_CLK_REG&= ~CY_SYS_EXCO_PGM_CLK_ENABLE_MASK;
/* 位相調整されたクロックを設定します */
/* CYDEV_CLK_SELECT開始アドレス:CYDEV_CLK_SELECT */
CY_SET_REG32((void *)(CYREG_CLK_SELECT), 0x00000002u);
(void)CyIntSetVector(13u、&CySysTimerIsr);
CyIntEnable(13u);
CY_SET_REG32((void *)(CYREG_WCO_WDT_CONFIG), 0x00000000u);
CySysClkSetTimerSource(CY_SYS_CLK_TIMER_SRC_ILO);
}
回避策#3 – HFClkクロックを手動で切り替え、PSoC Creator4.2では更新されたcy_boot5.81を使用し、PSoC Creator4.3または4.4ではcy_boot6.0を使用します
次のDWRスナップショットで説明されているようにクロッキングを設定するとします。PLLはECOから供給され、高周波クロックはPLLから供給されます。
ステップ1:HFClkをIMOに切り替えます。
ステップ2:cy_boot v5.81およびv6.00からのCySysClkWriteHfclkDirect呼び出しを使用して、main.cで回避策を適用します。
int main()
{
/* cyfitter_cfgの実行後にPLLが安定するまで、ある程度の遅延を行います */
CyDelay(1);
/* HFCLK周波数のソースとしてPLL#0を設定(増加) */
CySysFlashSetWaitCycles(CLK_PLL_MHZ);
CySysClkWriteHfclkDirect(CY_SYS_CLK_HFCLK_PLL0);
/* CyDelay関数の調整 */
CyDelayFreq(CLK_PLL_MHZ * HZ_IN_MHZ);
/* ここで残りのアプリケーションコードを実行します*/
for(;;)
{
Led_Blink();
}
}
Show LessCommunity Translated by keni_4440091 Version: **
Translation - English: Using Eclipse IDE for ModusToolbox 2.1 after Installing ModusToolbox 2.2 - KBA231606
質問: ModusToolbox 2.2をインストールした後、ModusToolbox 2.1をインストールしたEclipse IDEを使用してプログラムまたはデバッグを実行している時に何故エラーが出ますか?
コマンド:[PATH]/ModusToolbox/tools_2.2/CY_TOOL_arm-none-eabi-gdb_EXE --versionを実行中のエラー
回答: 初期設定では、ModusToolboxはインストールツールの最新版を使用します。今回の場合、バージョン2.1および2.2がインストールされているので、ビルドシステムはツールのバージョン2.2を使用しています。この問題を解決するためには以下のどちらかを行ってください。
オプション1:ModusToolbox 2.2でインストールしたEclips IDEを使用して、対応するワークスペース/アプリケーションを開きます。
オプション2:パスを“tools_2.1”ディレクトリに更新します。正しいパスを指すためにCY_TOOLS_PATHSシステム変数を作成します。詳細は、ModusToolbox Installation Guide,"Create a system variable to specify the path to Tools."の章を参照してください。そうするとModusToolbox 2.1でインストールしたアプリケーションEclips IDEを開くことができます。
Show LessVersion: **
Translation - Japanese: ModusToolbox 2.2をインストール後、ModusToolbox 2.1でEclispe IDEを使用 – KBA231606 - Community Translated (JA)
Question: After installing ModusToolbox 2.2, why am I seeing an error while attempting to program or debug using the Eclipse IDE installed with ModusToolbox 2.1?
error while launching command: [PATH]/ModusToolbox/tools_2.2/CY_TOOL_arm-none-eabi-gdb_EXE --version
Answer: By default, ModusToolbox uses the latest version of the installed tools. In this case, since you have both versions 2.1 and 2.2 installed, the build system is using the 2.2 version of the tools. To resolve this issue, do either of the following:
Option 1: Open the applicable workspace/application using the Eclipse IDE installed with ModusToolbox 2.2.
Option 2: Update the path to the “tools_2.1” directory. Create a CY_TOOLS_PATHS system variable to point to the correct path. For details, refer to the ModusToolbox Installation Guide, section "Create a system variable to specify the path to Tools." Then you can open the application Eclipse IDE installed with ModusToolbox 2.1.
Show LessVersion: **
Translation - Japanese: PSoC®Creator™:PLLを駆動する水晶振動子とセラミック共振子に関するECO / EXCOの問題 - KBA231127 - Community Translated (JA)
On the PSoC 4100S Plus, and PSoC 4500 device families when the ECO clock is configured via DWR or using cy_boot API, the redundant EXCO_PGM_CLK manipulation destabilizes the PLL. This then runs out of lock, and the output frequency fluctuation may result in a CPU hard fault.
PSoC 4100S Plus, PSoC 4500
PSoC Creator 4.2 and 4.3
There are several workarounds you can apply depending on the software used, and method used for the clocks configuration.
Workaround #1 – Move to PSoC Creator 4.4 Once Available
Once available, the PSoC Creator 4.4 release will be used for the DWR approach for configuring clocks. It will package cy_boot 6.0, which addresses the issue when the configuration is done via the cy_boot API.
Workaround #2 – Disable Code Generation and Tweak the Generated Code
If using PSoC Creator 4.3 or 4.2, use this option for this or similar DWR configuration
Please note that if you do not disable code generation, the code will get re-generated, so use this workaround with caution.
Once you are done configuring the components and DWR, disable code generation. Go to the Project menu (or right click on the project in the workspace explorer) select Build Settings > Code Generation > Skip Code Generation > True.
The following code was generated in Generated_Source\PSoC4\cyfitter_cfg.c.
static void ClockSetup(void)
{
uint8 ecoStatus;
uint8 pllTimeout, i;
/* Set Flash Cycles based on max possible frequency in case a glitch occurs during ClockSetup(). */
CY_SET_REG32((void CYXDATA *)(CYREG_CPUSS_FLASH_CTL), (0x0012u));
/* Update IMO to new clock speed. */
CySysClkWriteImoFreq(24u);
/* Configure ECO trim */
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_CONFIG), (0x00000000u));
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_TRIM0), (0x0000001Fu));
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_TRIM1), (0x0000001Fu));
/* Start the ECO and check status since it is needed for HFCLK */
ecoStatus = CySysClkEcoStart(2000u);
if (ecoStatus != CYRET_SUCCESS)
{
CyClockStartupError(CYCLOCKSTART_XTAL_ERROR);
}
CyDelayUs(1500u); /* Wait to stabilize */
CySysClkPllSetSource(0u, CY_SYS_PLL_SOURCE_ECO);
CY_SET_REG32(CYREG_EXCO_PLL_CONFIG, 0x80020118u);
CyDelayCycles(120u);
CY_SET_REG32(CYREG_EXCO_PLL_CONFIG, 0xC0020118u);
for (pllTimeout = 0u; (pllTimeout < 25u) && (CY_GET_REG32(CYREG_EXCO_PLL_STATUS) == 0u); pllTimeout++)
{
CyDelayCycles(240u);
}
if (CY_GET_REG32(CYREG_EXCO_PLL_STATUS) == 0u)
{
CyClockStartupError(CYCLOCKSTART_PLL_ERROR);
}
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_CLK_SELECT), (0x00000001u));
/* Generate clock sequence to change clock source in CYREG_EXCO_CLK_SELECT */
CY_SYS_EXCO_PGM_CLK_REG |= CY_SYS_EXCO_PGM_CLK_ENABLE_MASK;
for(i = 0u; i < CY_SYS_EXCO_PGM_CLK_SEQ_GENERATOR; i++)
{
CY_SYS_EXCO_PGM_CLK_REG |= CY_SYS_EXCO_PGM_CLK_CLK_ECO_MASK;
CY_SYS_EXCO_PGM_CLK_REG &= ~CY_SYS_EXCO_PGM_CLK_CLK_ECO_MASK;
}
CY_SYS_EXCO_PGM_CLK_REG &= ~CY_SYS_EXCO_PGM_CLK_ENABLE_MASK;
/* Setup phase aligned clocks */
/* CYDEV_CLK_SELECT Starting address: CYDEV_CLK_SELECT */
CY_SET_REG32((void *)(CYREG_CLK_SELECT), 0x00000002u);
(void)CyIntSetVector(13u, &CySysTimerIsr);
CyIntEnable(13u);
CY_SET_REG32((void *)(CYREG_WCO_WDT_CONFIG), 0x00000000u);
CySysClkSetTimerSource(CY_SYS_CLK_TIMER_SRC_ILO);
}
It must be changed as follows (remove or comment out the code in red😞
static void ClockSetup(void)
{
uint8 ecoStatus;
uint8 pllTimeout, i;
/* Set Flash Cycles based on max possible frequency in case a glitch occurs during ClockSetup(). */
CY_SET_REG32((void CYXDATA *)(CYREG_CPUSS_FLASH_CTL), (0x0012u));
/* Update IMO to new clock speed. */
CySysClkWriteImoFreq(24u);
/* Configure ECO trim */
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_CONFIG), (0x00000000u));
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_TRIM0), (0x0000001Fu));
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_ECO_TRIM1), (0x0000001Fu));
/* Start the ECO and check status since it is needed for HFCLK */
ecoStatus = CySysClkEcoStart(2000u);
if (ecoStatus != CYRET_SUCCESS)
{
CyClockStartupError(CYCLOCKSTART_XTAL_ERROR);
}
CyDelayUs(1500u); /* Wait to stabilize */
CySysClkPllSetSource(0u, CY_SYS_PLL_SOURCE_ECO);
CY_SET_REG32(CYREG_EXCO_PLL_CONFIG, 0x80020118u);
CyDelayCycles(120u);
CY_SET_REG32(CYREG_EXCO_PLL_CONFIG, 0xC0020118u);
for (pllTimeout = 0u; (pllTimeout < 25u) && (CY_GET_REG32(CYREG_EXCO_PLL_STATUS) == 0u); pllTimeout++)
{
CyDelayCycles(240u);
}
if (CY_GET_REG32(CYREG_EXCO_PLL_STATUS) == 0u)
{
CyClockStartupError(CYCLOCKSTART_PLL_ERROR);
}
CY_SET_REG32((void CYXDATA *)(CYREG_EXCO_CLK_SELECT), (0x00000001u));
///* Generate clock sequence to change clock source in CYREG_EXCO_CLK_SELECT */
//CY_SYS_EXCO_PGM_CLK_REG |= CY_SYS_EXCO_PGM_CLK_ENABLE_MASK;
//for(i = 0u; i < CY_SYS_EXCO_PGM_CLK_SEQ_GENERATOR; i++)
//{
// CY_SYS_EXCO_PGM_CLK_REG |= CY_SYS_EXCO_PGM_CLK_CLK_ECO_MASK;
// CY_SYS_EXCO_PGM_CLK_REG &= ~CY_SYS_EXCO_PGM_CLK_CLK_ECO_MASK;
//}
//CY_SYS_EXCO_PGM_CLK_REG &= ~CY_SYS_EXCO_PGM_CLK_ENABLE_MASK;
/* Setup phase aligned clocks */
/* CYDEV_CLK_SELECT Starting address: CYDEV_CLK_SELECT */
CY_SET_REG32((void *)(CYREG_CLK_SELECT), 0x00000002u);
(void)CyIntSetVector(13u, &CySysTimerIsr);
CyIntEnable(13u);
CY_SET_REG32((void *)(CYREG_WCO_WDT_CONFIG), 0x00000000u);
CySysClkSetTimerSource(CY_SYS_CLK_TIMER_SRC_ILO);
}
Workaround #3 – Switch HFClk Clocks Manually, Use Updated cy_boot 5.81 in PSoC Creator 4.2 and cy_boot 6.0 in PSoC Creator 4.3 or 4.4
Suppose you want to configure the clocking as described in the following DWR snapshot: PLL sourced from ECO, the high-frequency clock is sourced from PLL:
Step 1: Switch the HFClk to IMO:
Step 2: Apply workaround in the main.c, with the CySysClkWriteHfclkDirect call from cy_boot v5.81 and v6.00:
int main()
{
/* Do some delay to let the PLL time to stabilize after the cyfitter_cfg execution */
CyDelay(1);
/* Set PLL #0 as source for HFCLK frequency (increasing) */
CySysFlashSetWaitCycles(CLK_PLL_MHZ);
CySysClkWriteHfclkDirect(CY_SYS_CLK_HFCLK_PLL0);
/* Adjustment for CyDelay function */
CyDelayFreq(CLK_PLL_MHZ * HZ_IN_MHZ);
/* Run the rest of the application code here */
for(;;)
{
Led_Blink();
}
}
Show LessCommunity Translated by NoTa_4591161 Version: **
Translation - English: [Windows 7] No USB-I2C/SPI Bridge Device Available when KitProg3 Is in CMSISDAP HID or CMSIS-DAP Bulk Mode - KBA231026
問題:
Windows 7がKitProg3ブリッジを認識しない場合があるため、USB-I2C / SPIブリッジデバイスはCMSIS-DAP HIDまたはCMSIS-DAPバルクモードのいずれかで使用できません。
背景:
Windows 7の一部のエディションでは、Windows 7 がそのドライバーのディスクリプタを認識できるようにする.infファイルが欠落している場合があります。これは、KitProg3 v2.10以降に影響します。この問題は、新しいバージョンのWindowsでは発生しません。
解決策:
デジタル署名されたドライバーをWindows Updateカタログから手動でインストールします。次の手順に従って、Windows 7用のWinUSBドライバーを回復します。
これらの手順が完了すると、KitProg3 USB-I2C / SPIブリッジがWinUSBデバイスとしてデバイスマネージャーで使用可能になり、ソフトウェアツールで使用できるようになります。
Community Translated by NoTa_4591161 Version: **
Translation - English: [Windows Only] Debug/Programming Tools Do Not Work After Upgrading to KitProg3 v2.10 - KBA231027
問題:
Windowsにおいて、更新後のKitProg3にv2.10でPSoC® Creator™、PSoC Programmer、CapSense® Tunerおよびブリッジコントロールパネルは、デバイスに接続することはできません。この動作の症例は、KitProg3デバイスが使用可能であるが、ツールで選択できないことです。
バックグラウンド:
KitProg3の以前のバージョンは、 HIDエンドポイントを使用してI2C/SPIブリッジを実装しています。バージョン2.10以降では、ブリッジングはバルクエンドポイントに実装され、パフォーマンスが向上させています。更新後、Windowsは、バルクエンドポイント用の適切なドライバー「winusb」の代わりに、I2C/SPIブリッジ用の古いドライバー「hidusb」を引き続き使用します。
解決:
USBドライバーを手動で削除するには、次の手順を実行します。
Show Less