2153180_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2153180_ja-JP

2153180_ja-JP

SAI2 を TDM スレーブとして使用する i.MX RT 1060

関係者の皆様へ

i.MX RT1060 SAI2をスレーブとして使用する予定です。

添付のCソースファイルに示されているようにSAI2とeDMAを設定しようとしました。
(SaiDmaInit())。
SAI2はTDMスレーブとして構成されているため、MCLK、BCLK、LRCLK、およびRXデータは
i.MX RT1060 は TX データのみを出力しますが、FPGA ピンからはデータが提供されます。

しかし、RX データを正しく受信できないという問題が発生しました。

設定に間違いがないか知りたいです。

よろしくお願いいたします。

i.MXRT 106xRe: i.MX RT 1060 using SAI2 as TDM slave

こんにちは。私もSAIに問題があります。リファレンスマニュアルの§38.3.2.1が理解できません。これは最初のCASE、つまりトランスミッタビット クロックを使用した場合の分析です。

「トランスミッタを非同期動作に設定し、レシーバを
同期操作。TCSR レジスタの TE フィールドと TCSR レジスタの RE フィールドがまだ 0 状態である間に、「TCR2 レジスタの SYNC フィールドに 0 を書き込み、RCR2 レジスタの SYNC フィールドに 1 を書き込む」と理解しています。

「トランスミッタとレシーバの両方が同期モードになった後にのみ、レシーバを同期モードで有効にしてください。
有効になっています。理解しています:「TCSR の TE フィールドと RCSR の RE フィールドの両方が 1 に設定された後にのみ、RCR2 の SYNC フィールドに 1 を書き込みます。」

SO、この問題の解釈における正しい順序は何でしょうか?

その他の質問は、「送信機のみを使用する場合、レシーバで何かを設定する必要がありますか?」と対称的な質問です...

私はTEENSY 4.0ボードとteensyduino IDEsでSAI2を使用しており、それがどのように動作するかを理解しようとしています。ライブラリは非常に複雑なので、ハードウェアに関係するものだけを抽出し、リファレンス・マニュアルですべてのレジスタ設定を確認します。私が行った最も簡単なことは、モノラル チャネルで同じ 32 ビット ワードを永続的に送信するようにトランスミッタを構成することです。メイン ループの TCSR で「FIFO 要求フラグ」をチェックするだけ。割り込みや DMA はありません。このフラグが設定されている場合、TDR0 レジスタに 0xAAAAAAAAA を書き込みます。TX_BCLK および TX_SYNC 出力 (3.072 MHz および 48 kHz) で正しい方形信号が得られ、TX_DATA 出力 (TX_SYNC がハイのときに 16 個のパルス) で正しい信号が得られました。しかし、同時に GPIO ポートを切り替えると、待望の 24 kHz 方形信号は生成されません。これは、より高い周波数で TX_SYNC と完全に非同期になります。

Re: i.MX RT 1060 using SAI2 as TDM slave

こんにちは@Inotaniさん

弊社の製品にご興味をお持ちいただき、またコミュニティをご利用いただき誠にありがとうございます。

次の図の SAI 構成をもう一度確認してください。

mayliu1_0-1755504111920.png

mayliu1_1-1755504199808.png

お役に立てれば幸いです。
まだ質問がある場合は、お気軽にご連絡ください。

素敵な一日をお過ごしください!

よろしくお願いします
メイリュー

Re: i.MX RT 1060 using SAI2 as TDM slave

...最後の問題は解決しました。C++ コードの初心者のエラーだけだったのですが...わかりにくい§38.3.2.1 という理解しがたい問題が残っています。

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎03-04-2026 02:47 AM
更新者: