Duplex I2Sの信号方向にご注意

STM32H7のDuplex I2SはSPIペリフェラル1ポートのみでI2Sの送受信が出来ます。このペリフェラルには落とし穴があることを野田さんが指摘しています。

STM32H7 I2Sの落とし穴に関する指摘

要約すると、STM32H7のDuplex I2Sはマスター時とスレーブ時で信号方向が変わります。

モードSDISDO
マスター受信送信
スレーブ送信受信
Duplex I2Sの信号方向

なんでIから送信するのよ。まぁ、STらしいっちゃらしい雑な名前です。MISO/MOSIとSPIの名前をそのまま使えば、少なくとも間違うことはないのに。つうか、送受信を固定するのをサボって、ダイの面積をどれほど節約できるのいうのやら。

さて、確認しましたが、STM32F4/F7/G4その他で使用しているSimplex I2Sにはこの問題はありません。

不幸中の幸いというか、先日投稿した「CubeIDEで生成したコードが、初期化中にassertionに失敗する」問題を見つけた時に嫌な予感がしたので、紫ライブラリについてはDuplex I2S対応を見送っています。おかげで無駄な時間を費やさずにすみました。とは言え、テストボードは作りなおしですね。次は出図する前にブレッドボードでDuplex I2Sの機能を検査します。

テストボードはSAI/Simplex I2Sでの動作については問題ないことを確認しています。

追記:

追記2:この問題はコミュニティに報告済みです。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください