関係者の皆様へ
i.MX RT1060 SAI2をスレーブとして使用する予定です。
添付のCソースファイルに示されているようにSAI2とeDMAを設定しようとしました。
(SaiDmaInit())。
SAI2はTDMスレーブとして構成されているため、MCLK、BCLK、LRCLK、およびRXデータは
i.MX RT1060 は TX データのみを出力しますが、FPGA ピンからはデータが提供されます。
しかし、RX データを正しく受信できないという問題が発生しました。
設定に間違いがないか知りたいです。
よろしくお願いいたします。
こんにちは。私も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 と完全に非同期になります。
こんにちは@Inotaniさん、
弊社の製品にご興味をお持ちいただき、またコミュニティをご利用いただき誠にありがとうございます。
次の図の SAI 構成をもう一度確認してください。
お役に立てれば幸いです。
まだ質問がある場合は、お気軽にご連絡ください。
素敵な一日をお過ごしください!
よろしくお願いします
メイリュー
...最後の問題は解決しました。C++ コードの初心者のエラーだけだったのですが...わかりにくい§38.3.2.1 という理解しがたい問題が残っています。