こんにちは、NXPさん。
ターゲットMCU:S32K388
私はeDMAを使用したSPI伝送に、バーストレジスタTCBRおよびTDBR0-127を使用しています。
現在のフレームサイズは32ビットで、すべて期待どおりに動作しています。
さて、32ビット未満のSPIフレームサイズの場合、DMA転送サイズを変更せずにバーストレジスタをどのように使えるでしょうか。
TCBRは16ビットまたは8ビット単位で書くことができますか?
TDBRnは16ビットまたは8ビット単位で書けますか?
もしなければ、16ビットと8ビットのフレームサイズのDMAチャネルの設定方法についてヒントを教えてもらえますか?
前もって感謝します
はい、 TCBR と TDBRn の両方が16ビットおよび8ビットの書き込みをサポートしており、DMAの転送サイズ変更は必要ありません。
TCR[FRAMESZ]で定義されたビットのみをクロック出力します。[7:0]への8ビット書き込みはデータをステージングするだけであり、プッシュをトリガーするには[15:8]への2回目の8ビット書き込みが必要です。RM参照 — S32K3xxリファレンスマニュアル、Rev. 12、2025-11-11:
セクション70.6.1.17— データ送信 (TDR):
「このレジスタには32ビット、16ビット、8ビットの書き込みを使って書き込むことができます。8ビットおよび16ビットの送信データ書き込みはいずれも、書き込まれたデータをゼロ拡張し、送信FIFOにデータを送り込みます。8ビットおよび16ビットの書き込みをゼロ拡張(32ビットに拡張)するとは、8ビットおよび16ビットの書き込みの上位(最上位)の空き部分をゼロで埋めることを意味します。
セクション70.3.6.1 — DMAサポートレジスタ(TCBR / TDBR0–TDBR127): 8ビット、16ビット、または32ビットのDMA書き込みアクセスを増分するために設計されたバーストエイリアス領域を文書化します。
Reg TCBR、16ビットの[15:00]への書き込みや2回目の8ビット書き込みが[15:8]へのデータを送信すると、TCR全体をどうやって更新できるのでしょうか。下半分の単語では、フレームサイズの選択のみが可能です。CPOL、CPHA、PCSなどのその他の設定は、単語の上半分に含まれます。