2411682_ja-JP

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

2411682_ja-JP

2411682_ja-JP

#S32K388 拡張RX FIFO + eDMA: CPU割り込みなしで連続循環バッファ受信

NXPサポートの皆さん、こんにちは。

私はFlexCAN Enhanced RX FIFOとRTDを搭載したS32K388を使用しています。CPU割り込みなしで連続的なDMAベースのCAN受信を実現したいと考えています。

私の要望は以下の通りです。

  • MCU: S32K388

  • CAN: クラシックキャン、CAN FD無効

  • CANペイロード: 8バイト

  • FlexCAN拡張RX FIFO対応

  • DMA受信が有効

  • フィルターなしで 、どのCAN IDでもCANメッセージを受け取る必要があります。

  • DMAが受信したすべてのCANフレームを自動的に RAMソフトウェアのリングバッファに転送したいのです。

  • FlexCANの受信割り込みは不要です。

  • DMAのメジャーループ完了割り込みも不要です。

  • DMAは、CPUがFlexCAN_Ip_RxFifo()を再度呼び出すことなく、自動的に実行を継続するはずです。

  • 理想的には、受信した各FIFO要素が即座にDMA転送を引き起こすべきなので、大きなFIFOウォーターマークを待ちたくありません。

RTDのソースコードを確認しました。FlexCAN_StartRxMessageEnhancedFifoData()で、ドライバがDMAを次のように設定していることがわかりました。

Source address              = Enhanced RX FIFO output
Source transfer size        = 4 bytes
Source offset               = 4 bytes
Destination transfer size   = 4 bytes
Destination offset          = 4 bytes
Minor loop size             = 80 bytes
Major loop count            = num_enhanced_watermark
EnMajorInt                  = TRUE
DisAutoHwRequest            = TRUE

現在のRTD実装では、有限のDMA転送を実行した後、停止するため、FlexCAN_Ip_RxFifo()を再度呼び出す必要があると理解しています。

私の質問は次のとおりです。

S32K388上で、eDMA TCDを設定して、FlexCAN Enhanced RX FIFO DMA要求が、CPU割り込みやソフトウェアの再武装なしに、受信したFIFO要素を円形RAMバッファに継続的に転送する設定は可能でしょうか?

特に、 Destination Modulo や他のeDMA TCD機能を使えば、この連続リングバッファを実装できますか?

もし可能であれば、具体的な構成を教えていただけるか、NXPの例やリファレンス実装を教えていただけませんか?

必要に応じてRTD FlexCANドライバーを修正したり、eDMA TCDを直接設定することも可能です。

よろしくお願いします!

タグ(1)
評価なし
バージョン履歴
最終更新日:
昨日
更新者: