6953956c0a213afc6de89697c3d0e88f.png6953956c0a213afc6de89697c3d0e88f.png
ここで必要な要件は、2つのS32k388がSPI通信を使用して相互に通信することです。どちらかが主人にも奴隷にもなれるのでしょうか?例えば、チップAをホストとして使用する場合、IOMUXテーブルのI項目はMISOのホスト入力を表します。チップAをスレーブとして使用する場合、このOという項はMISOのスレーブ出力を表していますか?現在のプロジェクトで使用しているピンは固定されています。例えば、SOUT: PTA18+ GPIO_ALT_FUNC_4は MOSI で使用され、SIN: PTA20+239+ GPIO_ALT_FUNC_4は MISO で使用されます。これは、現在使用しているホストモードに基づいています。ピンを変えなくてもスレーブモードに切り替えても正常に動作しますか?CFGR0のHRDIRとCFGR1のMASTERを変更するだけでスレーブモードに切り替えるだけで十分でしょうか?
こんにちは、 @xlele さん、
マスターモードとスレーブモードを切り替えるのにハードウェアの変更は必要ありません。
標準的な2チップSPI構成では、ピンは常に2つのデバイス間でクロスコッキングされています。
チップA SOUT → チップB SIN (MOSIライン)
チップA SIN ← チップB SOUT(味噌ライン)
SOUTピンは常にシリアルデータ出力であり、SINピンは常にシリアルデータ入力です。これは、デバイスがマスターとして動作しているかスレーブとして動作しているかに関係なく適用されます。そのため、チップAがスレーブモードに切り替わっても、SIN(PTA20)は新しいマスターから正しくデータを受信し、SOUT(PTA18)も正しくデータをドライブします。配線のやり直しは必要ありません。
登録変更について:
CFGR1[MASTER] = 0 — これはモジュールをスレーブモードに切り替えるためのキービットです。
CFGR0[HRDIR] — このビットは、PCS[1]と多重化されているHREQ(ホスト要求)ピンの方向を制御します。SOUT/SINデータラインには影響しません。スレーブモードでは、HRDIRを1(出力)に設定し、スレーブがHREQピンを駆動してデータ送信準備ができていることをマスターに伝えます。S32K388には専用の外部LPSPI_HREQピンがないことに注意してください。ホスト要求機能はLPSPI_PCS[1]マルチプレクサ(CFGR0[HREN]で有効化)を使用します。ホストリクエスト機能(CFGR0[HREN] = 0)を使っていない場合、HRDIRはユースケースには関係なく、CFGR1[MASTER]だけで十分です。
よろしくお願いいたします。
パベル