PSoC用ローカル相互接続ネットワーク(LIN)スレーブコンポーネントユーザーガイド - KBA225227 - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Community Translated by NoTa_4591161 Version: **
Translation - English: Local Interconnect Network (LIN) Slave Component User Guide for PSoC - KBA225227
質問:
ローカル相互接続ネットワーク(LIN)コンポーネントを使用する際の一般的な考慮事項は何ですか?また、さまざまなLINの問題をトラブルシューティングするにはどうすればよいですか?
回答:
このドキュメントは、PSoC®LINコンポーネントを使用するための一般的なガイドラインを提供します。 ベストプラクティス、一般的に報告されている問題、およびデバッグ手順について説明します。 このドキュメントは、PSoCLINのトラブルシューティングガイドとして使用できます。
1. 一般情報
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.1 サポートされているキット
表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 |
1.2 サンプルプロジェクト
PSoC Creator™には、サポートされているすべてのデバイス用のLINスレーブサンプルプロジェクトが含まれています。メニューパス、[File] → [Code Example]に従います。[Find Code Example]ウィンドウで、[Device Family]のドロップダウンリストからPSoCファミリを選択します。[Filter]フィールドにLINと入力します。LINに関連するコードサンプルを示します。
図1 .PSoCCreatorでのLINスレーブの例の選択
次のサンプルプロジェクトもWebサイトで見つけることができます。
1.3 ドキュメント
PSoCでLINスレーブを開始する前に、次のドキュメントを確認してください。
- LINスレーブコンポーネントデータシート
- LIN 2.2Aの仕様 およびそれ以前のバージョンのLIN仕様書
- CY8CKIT-026 CANおよびLINシールドキットガイド
読むことができるいくつかの追加のドキュメントは次のとおりです。
- PSoC® 3アーキテクチャTRM
- PSoC® 5LPアーキテクチャTRM
- PSoC 4100M / 4200MのPSoCファミリ:PSoC® 4アーキテクチャテクニカルリファレンスマニュアル(TRM)
- PSoC 4200Lファミリ:のPSoC 4アーキテクチャテクニカルリファレンスマニュアル(TRM)
- PSoC 4100SおよびPSoC 4100S Plus:PSoC 4アーキテクチャテクニカルリファレンスマニュアル(TRM)
- PSoC 4100および4200ファミリ:PSoC 4アーキテクチャテクニカルリファレンスマニュアル(TRM)
- PSoC 4000Sファミリ:のPSoC 4アーキテクチャテクニカルリファレンスマニュアル(TRM)
- PSoC 4000ファミリ:のPSoC® 4アーキテクチャテクニカルリファレンスマニュアル(TRM)
それぞれのレジスタテクニカルリファレンスマニュアルはここにあります。
2. 一般的なガイドライン
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仕様に準拠していません。
- フレームヘッダーでパリティエラーが検出されました。
- 受信したフレームでチェックサムの不一致が検出されました。
- フレームエラーが発生しました。
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. デバッグの問題
3.1 コミュニケーションの問題
LINがフレームを送信または受信できない場合:
- TxとRxピンが正しく接続されている場合(送受信機の送信へのPSoCの送信ピンとトランシーバーの受信へのPSoCのRX端子)を確認してください。
CY8CKIT-026を使用している場合は、接続が「ハードウェア接続」セクションに記載されている仕様に従っていることを確認してください。
- LINマスターで設定されたLINボーレートがLINスレーブで設定されたボーレートと一致するかどうかを確認します。。
- クロック許容値が1.5%を超える場合は、自動ボー同期が有効になっているかどうかを確認します。
- IMOを使用している場合は、自動ボー同期を有効にすることをお勧めします。
- アナライザーで設定されたチェックサムがクラシックか拡張かを確認します。無条件フレームはLIN2.0以降の拡張チェックサムを使用し、診断フレームは従来のチェックサムを使用します。
- LIN1.3 は、両方のフレームタイプに従来のチェックサムを使用します。
- LINコンポーネントは、明示的に睡眠を送るか、またはトランシーバーに信号を覚ますためにNSLPピンを提供していません。ソフトウェアピンは個別に構成する必要があり、通常の操作ではHighにする必要があります。
NSLPピンが正しく構成されていることを確認してください。図11を参照してください。
図11 .NSLPピン構成
- PSoCCreator を使用してデバッグモードに移動し、LINマスターがフレームを送信したときにLIN割り込みが正常にトリガーされるかどうかを確認します。LIN ISRは、LIN_INT.cファイルで定義されています。LINISRにブレークポイントを配置します。フレームが正常に受信されると、コードはこのブレークポイントに到達します。図12を参照してください。
図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ソースファイルを参照できます。
4. よくある質問
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 )