こんにちは、
S32K312 S32DS3.5 RTD4.0.0 プロジェクトでは、SPI0 と SPI1 は DMA モードで動作し、UART1 は割り込みモードで動作します。
UART1 は、12 バイトのフレームを同期送信または非同期受信するときに正常に動作します。
しかし、SPI DMA が大量のデータを転送する場合、uart AsyncReceive イベント情報は常にエラーになります。
何か提案はありますか?
はい、それは割り込み優先度の問題です。Uart1 は優先度を上げた後に動作します。
本当にありがとう!
こんにちは、
SPI DMA バースト中の UART 非同期受信エラーの原因としては、以下のことが考えられます。
1. 割り込み優先度の問題
- DMA 完了または他の ISR の優先度が同等かそれ以上であるため、UART RX 割り込みはすぐには処理されません。
- 結果: UART RX FIFO がオーバーフロー → オーバーランまたはフレーミング エラー。
LPUART1_IRQn がすべての DMA 関連 IRQ (例: DMATCDx_IRQn) よりも高い優先度 (数値的に低い) を持つことを確認します。割り込みグループ化によりプリエンプションが許可されることを確認します。
2. DMAによるバスの占有
- SPI の eDMA チャネルは、大きなバースト中に AXBS クロスバーを飽和させる可能性があります。
- CPU およびペリフェラル レジスタ アクセス (UART RX 処理を含む) が遅延され、ISR レイテンシが増加します。