こんにちは、皆さん。
TJA1120 INT_Nピンの状態について質問があります。
テスト中に、ピンの状態が予想どおりではないことがわかりました。私の操作は次のとおりです。
TJA1120の初期化後、 INT_Nピンの状態を読み取りましたが、これは低かったです。その後、レジスタTOP_EPHY_IRQ_ENABLESをオーバーライドしてWAKE_SLEEP_EVENT割り込みを有効にし、 TJA1120 をスリープ状態にしました。その後、 INT_Nピンはハイになりました。
ただし、最初はINT_Nピンがハイになっていて、イベント情報が発生するとローになることを期待しています。どうやら、テスト結果はまったく逆のようです。
私たちのカスタムボードは別の PHY - TJA1103を使用しているため、同じ方法でそのINT_Nピンをチェックしました。結果は正常な状態で、 INT_N はハイでしたが、割り込み後にピンはローになりました。
さらに、 TJA1103データシートには、 TJA1103 INT_Nピンの動作を説明する段落があります。
今、私はとても混乱しています。TJA1120とTJA1103は非常に似ており、両方のINT_Nピンには内部的に弱いプルアップがあります (このボードでは、両方とも外部プルアップもあります)。これは、 INT_Nの通常状態がハイであることを示します。
TJA1120には追加の設定が必要ですか、それとも通常の状況ではINT_N が低くなるように設計されているのでしょうか?データシートやアプリケーションノートにはINT_Nピンに関する情報があまり記載されていないため、助けを求めて自分の混乱を投稿します。
ありがとうございます。
BR、
ヤン
こんにちは@Yang_Cさん、
提供していただいたすべてのデータに感謝します。
まず、機密資料のスクリーンショットを共有することは避けてください。文書名、バージョン、および参照している特定の章、図、または表を記載するだけで十分です。
追加の提案として、ピンストラップによって TJA1103 で自律モードを有効にすることを検討してください。
よろしくお願いします。
よろしくお願いいたします。
パベル
こんにちは、PaveILさん
何が起こっているのか分かりました。
まず、初期化時にDEVICE_CONTROL.START_OPERATION を設定して TJA1103 を起動しなかったSO、セルフテストが実行されませんでした。このビットを設定すると、 ALWAYS_ACCESIBLE.FUSA_PASS_IRQがアサートされ、INT_N が低くなります。FUSA_PASS_IRQビットをクリアすることでINT_Nを解放CAN。
次に、 DEVICE_CONTROL.GOTO_STANDBYビットを設定して、スリープに入る前に TJA1103 をスタンバイ状態にする必要があります。そうしないと、INT_N は期待どおりに動作しません。
もう 1 つ質問があります。私も TJA1120 を起動していないのに、なぜ TJA1120 はセルフテストを実行できるのでしょうか?実際、Errata シートに基づいて TJA1120 用の追加構成がいくつかあり、以下は私が行った構成です。
上記の設定が TJA1120 セルフテストの動作に影響を及ぼす可能性はありますか?
こんにちは、PaveILさん
残念ながら回路図は共有できませんが、ピンストラップとレジスタの設定をお伝えすることはできますので、お役に立てれば幸いです。
ピンストラップ:
レジスタ設定:
現在、私は TJA1103 のスリープ/ウェイク機能のみを調査しているため、設定したレジスタはすべてこの機能に関連しています。
1. 電源投入後の初期化フェーズ
デバイスコントロール -> 0x2000
WISE_CONFIG -> 0xA400
ウェイク_スリープ_コンフィギュレーション -> 0x4700
PORT_IRQ_ENABLE-> 0x1
GLOBAL_CAT_IRQ_ENABLE -< 0x10
TOP_EPHY_IRQ_ENABLE -> 0x2
上記の設定を実行した後、INT_N ピンの状態を確認しました。self_test IRQ をクリアしなくてもすでにハイになっていたため、セルフテストに関連するすべてのレジスタを読み戻しましたが、エラーは発生しませんでした。TJA1120の場合、私のテストに基づいて INT_N を解放するにはセルフテスト IRQ をクリアする必要がありますが、 TJA1103の場合、それはまだ必要な手順ですか?
2. 睡眠覚醒段階
WAKE_SLEEP_CONTROL -> 0x1: TJA1103をスリープ状態にし、INT_Nをローにする
TOP_EPHY_IRQ_SOURCE -> 0x2: スリープイベント情報によってトリガーされた割り込みフラグをクリアし、INT_Nがハイになります
ALWAYS_ACCESSIBLE -> 0x8000: TJA1103を起動し、その後INT_Nが再びローになる
TOP_EPHY_IRQ_SOURCE -> 0x2: ウェイクイベントによってトリガーされた割り込みフラグをクリアします。INT_Nは低レベルのままです。
TOP_EPHY_IRQ_SOURCE を読み取り -> 0x0 を取得
GLOBAL_CAT_IRQ_STATUS を読み取り -> 0x0 を取得
PORT_IRQ_STATUS を読み取り -> 0x0 を取得
RST_N ピンで TJA1103 全体をリセットする必要があり、最終的に INT_N ピンはハイに戻りました。
結果を楽しみにしています、ありがとうございます。
BR、
ヤン
こんにちは@Yang_Cさん、
来週中にボード上でその動作を確認します。
ピンストラップ、回路図、その他のレジスタ設定 (該当する場合) を共有していただけますか?
よろしくお願いします。
よろしくお願いいたします。
パベル
こんにちは、PaveILさん
TJA1103 INT_N がLowのままになった とき ( TJA1103 を起動し 、レジスタ TOP_EPHY_IRQ_SOURCE をクリアした後)、別の割り込みが発生したのではないかと疑い、 TOP_EPHY_IRQ_SOURCE 、 GLOBAL_CAT_IRQ_STATUS 、 PORT_IRQ_STATUS のレジスタ値を読み取りました 。いずれの値も、他の割り込みは発生していないことを示していました。
また、電源投入後、 TJA1103 INT_Nの状態はすでに高く、このピンを解放するためにALWAYS_ACCESSIBLEをオーバーライドしませんでした。
INT_Tピンをハイに戻す唯一の方法は、 RST_Nピンを使用してTJA1103をリセットすることです。
こんにちは@Yang_Cさん、
詳細なテストをしていただきありがとうございます。TJA1120 シーケンスは正しいようで、観察された動作は予想される操作と一致しています。
TJA1103 に関しては、状況は確かにより複雑であるように見えます。ご説明によると、WAKE_SLEEP_EVENT フラグをクリアした後も INT_N ピンはローのままですが、これは予想外です。
他の割り込みフラグがアクティブになっていないことを確認してください。有効な割り込みがアサートされると、INT_N は低レベルになります。GLOBAL_CAT_IRQ_STATUS も読み取ってみてください。
よろしくお願いいたします。
パベル
補足情報:
TJA1103 INT_N が低いままになったとき ( TJA1103 を起動してレジスタTOP_EPHY_IRQ_SOURCEをクリアした後)。他にも割り込みが発生している可能性があると思われる、SO TOP_EPHY_IRQ_SOURCE、GLOBAL_CAT_IRQ_STATUS、PORT_IRQ_STATUSのレジスタ値を読み取ります。すべて、他の割り込みは発生していないことを示しています。
こんにちは、PaveILさん
お返事ありがとうございます。本当にとても役に立ちます。
あなたの説明に基づいて、私は次のチェックを行いました:
TJA1120の場合、
あなたが正しいです。INT_Nピンを解放するには、 GLOBAL_INFRA_IRQ_ENABLES.DEV_BOOT_DONEとGLOBAL_INFRA_IRQ_SOURCES.DEV_BOOT_DONEをクリアする必要があります。その後、TJA1120をスリープ状態にするとINT_NはHighのままになり、ウェイクアップするとINT_NはLowになりました。その後、レジスタTOP_EPHY_IRQ_SOURCESに書き込みを行って割り込みフラグをクリアすると、予想通りINT_Nは再びHighに戻りました。
スリープ/ウェイク プロセスを管理した方法は次のとおりです。まず、ウェイク/スリープ IRQ を有効にし、スリープの場合はWAKE_SLEEP_CONTROLレジスタに 0x1 を書き込み、ウェイクの場合はALWAYS_ACCESSIBLEレジスタに 0x8000 を書き込みます。
TJA1120の操作に間違いがある場合は、訂正してください。
TJA1103 (状況はより複雑)の場合、
ステップ 1、電源投入後、レジスタALWAYS_ACCESSIBLEのFUSA_PASS_IRQビットのみを読み取りましたが、これはすでに 0 で、 INT_Nピンはすでにハイでした。
ステップ 2、 TJA1103データシートの図 5と図 6に記載されているすべてのレジスタ ステータスをチェックして、 FUSA_PASS_IRQ をアサートできなかったセルフテストのいずれかが失敗していないかどうかを確認します。しかし、結果はすべて良好で、エラーは発生しませんでした。
ステップ 3、ウェイク スリープ IRQ を有効にして、 TJA1103 をスリープ状態にすると、それに応じてINT_N が低くなりました。TJA1120 はスリープ モードのときにINT_N を解放するとおっしゃいましたが、 TJA1103の場合はINT_Nが解放されず、ピンは割り込みが発生したかのように動作しました。私の推測を確認するために、レジスタTOP_EPHY_IRQ_SOURCE を読み取り、そのWAKE_SLEEP_EVENTビットがアサートされていることを確認しました。その後フラグをクリアすると、 INT_N がハイになりました。その後、 TJA1103 を起動すると、 INT_N が再び低くなり、 TOP_EPHY_IRQ_SOURCE を読み取ることで、別のウェイク割り込みがトリガーされたことを確認しました。次に、この割り込みフラグをクリアしようとしたところ、興味深いことが起こりました。INT_N ピンは今回はハイに戻りませんでしたが、レジスタTOP_EPHY_IRQ_SOURCEでは、このフラグがクリアされていることが示されました。
TJA1120とTJA1103 は割り込みイベントで異なる動作をする可能性があると思いますが、 TJA1103の割り込みフラグをクリアした後、 INT_Nピンがハイに戻らないのはなぜでしょうか?何か提案はありますか?
ご返信をお待ちしております。
BR、
ヤン
こんにちは@Yang_Cさん、
詳しくご説明いただきありがとうございます。
はい、その通りです。この点では両方のデバイスの動作は同じように動作します。あなたの観察を明確にさせてください。
データシートに記載されているように、TJA1120 と TJA1103 はどちらも電源投入後に INT_N ピンを低く駆動し、内部セルフテストが成功したことを示します。この動作はデザインによるものであり、故障を示すものではありません。
起動後にINT_Nピンを解放するには:
TJA1120の場合:
TJA1103の場合:
上記のビットをクリアした後も INT_N ピンが低いままの場合は、関連する IRQ レジスタを読み取って割り込みのソースを識別する必要があります。
また、TJA1120 をスリープ モードにする方法を詳しく教えていただけますか?デバイスがディープスリープ状態になると、INT_N ピンは自動的に解放されます。
よろしくお願いいたします。
パベル