Community Translation - Local Interconnect Network (LIN) Slave Component User Guide for PSoC - KBA225227

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi,               

I would like to translate KBA225227 into Japanese.

Please confirm to my work.

Thanks,

Kenshow

0 Likes
3 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Kenshow-san

Confirm to work this KBA.

Thanks,

Jenna

Jenna Jo
0 Likes
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi Jenna-san,

                                

Japanese translation was over.
Please check below.

Original KBA:

Local Interconnect Network (LIN) Slave Component User Guide for PSoC - KBA225227

Thanks.

Kenshow

==============================

タイトル: PSoC用ローカル相互接続ネットワーク(LIN)スレーブコンポーネントユーザーガイド - KBA225227

バージョン:**

質問:

ローカル相互接続ネットワーク(LIN)コンポーネントを使用する際の一般的な考慮事項は何ですか?また、さまざまなLINの問題をトラブルシューティングするにはどうすればよいですか?

回答:

このドキュメントは、PSoC®LINコンポーネントを使用するための一般的なガイドラインを提供します。 ベストプラクティス、一般的に報告されている問題、およびデバッグ手順について説明します。 このドキュメントは、PSoCLINのトラブルシューティングガイドとして使用できます。

1.  一般情報

LINスレーブコンポーネントは、PSoC 3PSoC 5LP、およびPSoC4ファミリでサポートされています。PSoC 4 LINスレーブを開始するには、PSoC® 4 LINスレーブコンポーネント入門 - KBA210346を参照してください。PSoC3およびPSoC5LPLINスレーブを構成する手順は、PSoC4の場合と同様です。

PSoC 4ファミリの場合、実装されているLINスレーブコンポーネントはシリアル通信ブロック(SCB)に基づいていますが、PSoC3およびPSoC5LPでは、ユニバーサルデジタルブロック(UDB)に基づいています。

1.1  サポートされているキット

1 LINスレーブコンポーネントの評価をサポートするキット

名前

サポートされている製品ファミリ

キットMPN

PSoC開発キット

PSoC 3PSoC 4PSoC 5LP

CY8CKIT-001C

CANおよびLINシールド

PSoC 4

CY8CKIT-026

PSoC3開発キット

PSoC 3

CY8CKIT-030A

PSoC4000パイオニアキット

PSoC 4

CY8CKIT-040

PSoC4000Sパイオニアキット

PSoC 4

CY8CKIT-041-40XX

PSoC4100Sパイオニアキット

PSoC 4

CY8CKIT-041-41XX

PSoC4パイオニアキット

PSoC 4

CY8CKIT-042

PSoC 4BLEパイオニアキット

PSoC 4

CY8CKIT-042-BLE

PSoC 4 BLE4.2パイオニアキット

PSoC 4

CY8CKIT-042-BLE-A

PSoC 4Mシリーズプロトタイピングキット

PSoC 4

CY8CKIT-043

PSoC 4Mシリーズパイオニアキット

PSoC 4

CY8CKIT-044

PSoC 4Lシリーズパイオニアキット

PSoC 4

CY8CKIT-046

PSoC41xxプロトタイピングキット

PSoC 4

CY8CKIT-049-41XX

PSoC42xxプロトタイピングキット

PSoC 4

CY8CKIT-049-42XX

PSoC5LP開発キット

PSoC 5LP

CY8CKIT-050B

PSoC5LPプロトタイピングキット

PSoC 5LP

CY8CKIT-059

PSoC4000Sプロトタイピングキット

PSoC 4

CY8CKIT-145-40XX

PSoC4200DSプロトタイピングキット

PSoC 4

CY8CKIT-146

PSoC4100PSプロトタイピングキット

PSoC 4

CY8CKIT-147

PSoC 4100SPlusプロトタイピングキット

PSoC 4

CY8CKIT-149


1.2        サンプルプロジェクト

PSoC Creator™には、サポートされているすべてのデバイス用のLINスレーブサンプルプロジェクトが含まれています。メニューパス、[File] → [Code Example]に従います。[Find Code Example]ウィンドウで、[Device Family]のドロップダウンリストからPSoCファミリを選択します。[Filter]フィールドにLINと入力ます。LINに関連するコードサンプルを示します。

1 PSoCCreatorでのLINスレーブの例の選択

pastedImage_6.png  

                  

次のサンプルプロジェクトもWebサイトで見つけることができます。

1.3        ドキュメント

PSoCLINスレーブを開始する前に、次のドキュメントを確認してください。

読むことができるいくつかの追加のドキュメントは次のとおりです。

それぞれのレジスタテクニカルリファレンスマニュアルはここにあります

2.          一般的なガイドライン

2.1        回路レビュー

信頼性の高いLIN通信の場合は、ボード上のトランシーバーへのLIN TxRx、およびLIN enable/NLSPピンの接続を確認してください。また、それぞれのトランシーバーのデータシートに記載されているように、ボード上のトランシーバーの回路図を確認してください。参照回路図については、TJA1020LINトランシーバチップを使用するCY8CKIT-026CANおよびLINシールドキットのユーザーガイドを参照してください。

トランシーバーのVBATとアース接続が適切かどうかを確認します。

2.2        ハードウェアの接続

LINスレーブコンポーネントはTxピンとRxピンを提供します。NSLPピンは、LINスレーブプロジェクトのTopDesignで構成されているソフトウェアピンです。2 NSLP参照してください

2 NSLPピン

pastedImage_7.png  

TxRx、およびNSLPがトランシーバーのそれぞれのピンに接続されていることを確認してください。CY8CKIT-026を使用している場合は、キットの2つのトランシーバーのいずれかを使用できます。2に、各トランシーバーのRxTx、およびNSLPラインを示します。

2 CY8CKIT-029LINトランシーバーピンヘッダー

LIN1トランシーバー

LIN2トランシーバー

J15_1LIN1_RX

J6_1LIN2_RX

J15_2LIN1_TX

J6_2LIN2_TX

J15_3LIN1_NSLP

J6_3LIN_NSLP

詳細については、CY8CKIT-026CANおよびLINシールドキット を参照してください。

2.3        LINスレーブプロジェクトの設定

PSoC 4LINスレーブを設定する手順は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 lengthsRawトランスポート層の場合)を選択します。

3 .トランスポート層のタブ構成

pastedImage_8.png  

3.    Config. Services移動します

a    [Automatic configuration request handling]オプションを選択して、ソースコードが選択したサービスを処理できるようにします。

b    要件に基づいてコンフィギュレーションサービスを選択します。

c    Supplier ID, Function ID, Variantを含むSlave informationを選択します。

4 [Config. Services]タブ

pastedImage_9.png  

ファームウェアでは、それぞれのLIN信号またはフレームの受信ステータスを監視して、診断フレームが受信されたかどうかを確認します。次のコードスニペットは、フレームの受信を監視し、rawAPIを使用してデータを受信する例です。

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またはPSoC5LPLINスレーブコンポーネントを設定できます。

2.4        診断サービスのテスト

3PSoC 4LINコンポーネントでサポートされているLIN診断サービスを示します。

3 .サポートされている診断サービス

            

サービス番号

サービス名

0xB0

NADの割り当て

0xB2

識別子で読む

0xB3

NADの条件変更

0xB6

設定の保存

0xB7

フレーム識別子を割り当て

[Config. Services]タブでサービスが選択されている場合(5を参照)、そのサービスを処理するためのソースコードがLIN.cで有効になっています。

5.サポートされているLIN診断サービス

pastedImage_11.png  

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ポート0IRQ0

CyIntSetVector(0, &LINRx); // GPIOポート0IRQ0と、割り込みが検出されたときに処理する必要のある機能のアドレス

      

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ポートの割り込み番号を示します。プロジェクトでは、Rxport0に割り当てられ、port0IRQ番号は「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割り込み - IRQ0Port0割り込みソースにマッピングされているため、port0IRQ番号は「0」です。

4 GPIOIRQマッピング

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ステータスレジスタ

pastedImage_15.png  

エラーステータスレジスタを監視する例を次に示します。

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」で呼び出されます。 個別のISRSystickにマッピングする代わりに、LINタイマーISR自体を使用するか、カスタム関数をSystickタイマのコールバック番号123、または4に渡すことができます。 SystickタイマとそのAPIの詳細については、システムリファレンスガイドの「PSoC4システムリファレンスガイド - cy_bootコンポーネントv5.70」セクションを参照してください(システムリファレンスガイドにアクセスするには、PSoC Creatorのヘルプにアクセスしてください)。

' UserFunc()'などのカスタム関数を渡すには、次のAPIを使用します。

CySysTickSetCallback(1u, &UserFunc);

または、LINタイマ機能を使用するための次のガイドラインに従ってください。

LIN.cLINソースファイル)の関数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ビットを有効にすることにより、SCBUARTLINモードで使用できます。また、LINプロトコルには、ブレーク検出とボーレート検出機能が必要です。このセクションでは、これらの機能を有効にして使用する方法について説明します。

7 SCB_UART_RX_CTRLレジスタ

pastedImage_16.png  

SCB_UART_RX_CTRLレジスタについては、7を参照してください。

SCB_LIN_ MODEが設定されている場合、受信機は着信データに対してブレーク検出とボーレート検出を実行します。

まず、ブレーク検出は、ライン値が0のビット周期の数をカウントします。BREAK_WIDTHは、必要なビット周期の最小数を指定します。

ブレーク検出が成功すると、SCB_INTR_RXレジスタにSCB_BREAK_DETECTが設定されます。

8 SCB_INTR_RX R egister

pastedImage_17.png  

ボーレート検出は、同期バイトの受信に使用される周辺クロック周期の数をカウントします(0x55;最下位ビットが最初)。カウントは、SCB_UART_RX_STATUSレジスタのSCB_BR_COUNTERフィールドから入手できます。

9 SCB_UART_RX_STATUS

pastedImage_17.png  

ボーレート検出が成功すると、SCB_INTR_RXレジスタのSCB_BAUD_DETECTビットが設定されます。SCB_BAUD_DETECTが設定された後、BR_COUNTERを読み取ります。

カウンタ値を読み取り、それがLINボーレートの14%の許容範囲内にあるかどうかを確認してから、さらに受信します。

2.10         LDFNCFのインポートとエクスポート

クライアントから提供されたLINディスクリプタファイル(LDF)とノードコンフィギュレーションファイル(NCF=LINスレーブコンポーネントにインポートできます。 これらのファイルをインポートすると、LINコンポーネントのすべてのタブが設定されます。 設定に基づいてアプリケーションファームウェアを作成する必要があります。

LINスレーブ構成ウィンドウで、「Generalタブに移動し、Import Fileオプションを使用して、LDFまたはNCFファイルをインポートします。LIN設定をNCFファイルとしてエクスポートすることもできます。

10Linコンポーネントでファイルをインポートおよびエクスポートするオプション

pastedImage_19.png  

LINスレーブコンポーネントデータシートGeneral Toolbarセクションを参照してください。

3.          デバッグの問題

3.1        コミュニケーションの問題

LINがフレームを送信または受信できない場合:

      • TxRxピンが正しく接続されている場合(送受信機の送信へのPSoCの送信ピンとトランシーバーの受信へのPSoCRX端子)を確認してください。

CY8CKIT-026を使用している場合は、接続が「ハードウェア接続」セクションに記載されている仕様に従っていることを確認してください。

      • LINマスターで設定されたLINボーレートがLINスレーブで設定されたボーレートと一致するかどうかを確認します。。
      • クロック許容値が1.5%を超える場合は、自動ボー同期が有効になっているかどうかを確認します。
      • IMOを使用している場合は、自動ボー同期を有効にすることをお勧めします。
      • アナライザーで設定されたチェックサムがクラシックか拡張かを確認します。無条件フレームはLIN2.0以降の拡張チェックサムを使用し、診断フレームは従来のチェックサムを使用します。
      • LIN1.3  は、両方のフレームタイプに従来のチェックサムを使用します。
      • LINコンポーネントは、明示的に睡眠を送るか、またはトランシーバーに信号を覚ますためにNSLPピンを提供していません。ソフトウェアピンは個別に構成する必要があり、通常の操作ではHighにする必要があります。

NSLPピンが正しく構成されていることを確認してください。11参照してください。

11 NSLPピン構成

pastedImage_20.png  

      • PSoCCreator  を使用してデバッグモードに移動し、LINマスターがフレームを送信したときにLIN割り込みが正常にトリガーされるかどうかを確認します。LIN ISRは、LIN_INT.cファイルで定義されてます。LINISRにブレークポイントを配置します。フレームが正常に受信されると、コードはこのブレークポイントに到達します。12参照してください。

12 LIN の割り込み

pastedImage_21.png  

デバッグがISRのブレークポイントに達した場合は、l_ifc_rx_LINS()関数をチェックし、この関数内のコードの各行が正しく実行されているかどうかを確認します。

3.2        受信した一貫性のないデータ

LINスレーブで受信したデータがLINマスターから送信されたデータと一致していません。受信したフレームの特定のバイトは更新されません。

このような場合、公開フレームの更新中またはサブスクライブフレームの受信中に、コードが通知機能を使用していることを確認してください。次に例を示します。

if(1u == l_flg_tst_SignalIn())

{

            /* 信号旗をクリアします */

l_flg_clr_SignalIn();

}

ここで、SignalInは、13示すようにLINフレームで構成されたLIN信号です。

13LINフレームで設定された信号

pastedImage_22.png  

3.3         LINモードのUART

UARTコンポーネントをLINモードで使用している場合、バスに信号がない場合でも割り込みがトリガーされます。

UART_ClearRxInterruptSourceUARTISRで呼び出されていることを確認してください。LINスレーブの実装中に、LINコンポーネントのLIN.cソースファイルを参照できます。

4.          よくある質問

1.     PSoC 4PSoC 3、またはPSoC 5LPLINマスターをサポートしていますか?

PSoC 4PSoC 3、およびPSoC 5LPには、LINマスターコンポーネントがありません。ただし、UARTコンポーネントを使用して独自のスタックを設定できます。PSoC 4については、PSoC 4200アーキテクチャTRMUARTローカル相互接続ネットワーク(LIN)モードのセクションを参照してください。

2.     CY8CKIT-026の用途は何ですか?

CY8CKIT-026は、LIN仕様に従ってレベルシフタとして機能するLINトランシーバーがあります。

3.     TopDesignビューのPSoC 4 LINコンポーネントは、TxおよびRxピンを示していません。割り当てられたピンポートはどこにありますか?

PSoC 4 LINコンポーネントは、SCBベースのコンポーネントです。Project.cydwr Pinタブで関連するピンが表示されます。ピン名は「componentname」:SCBrxおよび「componentname」:SCBtxになります。コンポーネント名がLINSの場合、ピンはLINSSCBrxおよびLINSSCBtxとして表示されます。        

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モードのSCBIDシンボルを受け取ります。これにより、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 = 0xFF128)を割り当てると、コンポーネントがエラーをスローするのはなぜですか?                  

LIN仕様によると、ノードアドレス(NAD)の範囲は1127です。したがって、NAD128にすることはできません。

8.     LINクロックの許容誤差が5%であっても、フレーミングエラーが発生するのはなぜですか。

自動ボー同期が無効になっていないか確認してください。自動ボーレート同期を使用しない場合、LINクロックの許容誤差は1.5%である必要があります。

9.     LINコンポーネントをブートロードにどのように使用できますか?

ブートロードにLINコンポーネントを使用するには、カスタム通信プロトコルでブートローダーを使用してから、このナレッジベースの記事に記載されている手順2に従う必要がある場合があります。

10. ブートロード中に、LIN割り込みはフラッシュ書き込みに影響しますか?

フラッシュへの書き込みがあると、すべての割り込みが無効になります。したがって、フラッシュ書き込み中、LIN割り込みはトリガーされません。

11. LINコンポーネントを使用してバスをリッスンできますか?

スタックを変更するか、UARTを介してスタックを設定する必要があります。LINモードでUARTを使用する方法の詳細については、PSoC4レジスタTRMSCB_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コンポーネントでは、デフォルトのPID0x00から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.cif条件内を参照してください。

        /***********************************************************************

* 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 )

==============================

2-Nov-2020

Kenshow

LIN1 Transceiver

LIN2 Transceiver

J15_1 (LIN1_RX)

J6_1 (LIN2_RX)

J15_2 (LIN1_TX)

J6_2 (LIN2_TX)

J15_3 (LIN1_NSLP)

J6_3 (LIN_NSLP)

0 Likes
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Kenshow-san

Thanks for your submission.

It will be released in 2 weeks, and will be get rewarded.

Thanks,

Jenna

Jenna Jo
0 Likes