こんにちは、
私は S32K344 FlexCAN モジュールと DMA を使用しています。以下の項目のサポートについて明確にしたいと思います。
DMA サポート:
受信時の個々のメッセージ バッファー (MB)に対して DMA はサポートされていますか?
または、DMA は、レガシー RX FIFO / 拡張 RX FIFO を使用する場合にのみサポートされますか?
透かし機能:
「ウォーターマーク」しきい値機能は、Enhanced RX FIFO (ER-FIFO) モードでのみ使用できますか?
または、レガシー RX FIFO モードや個々のメッセージ バッファーでもサポートされますか?
レガシーRX FIFOメカニズム/ストレージ:
リファレンス マニュアルには、レガシー RX FIFO モードでは、MB0 ~ MB5 が RX FIFO 用に予約されていると記載されています。MB0 は RX FIFO 出力に使用され、MB1 ~ MB5 は内部使用のために予約されています。
つまり、FIFO が書き込む (そして CPU が読み取る)メッセージ バッファー (MB0) は 1 つだけということですか?
複数のフレームを受信したが、CPU がまだ MB0 を読み取っていない場合: 背後に内部キュー/バッファがありますか?着信フレームはどこに保存されますか? また、ストレージがオーバーフローしたり「ラップ」したりするとどうなりますか?
S32K344-WB S32K3
こんにちは@kapidlitap 、
DMA support
いいえ。DMA は RX FIFO に対してのみサポートされているSO、MCR[RFEN] または ERFCR[ERFEN] は 1 である必要があります。DMAとRFENが1の場合、IFLAG1[BUF5I]はDMA要求を生成し、RX FIFO割り込みは生成されません。
透かし機能
はい。ウォーターマークは、Enhanced RX FIFO モードでのみ使用できます。
レガシーRX FIFOメカニズム/ストレージ
事実上、そうです。CPU は、 MB0 構造体に繰り返しアクセスすることにより、受信したフレームを受信した順序で連続的に読み取ることができます。
隠し補助MB(RX SMB)があります。移動プロセスについては、S32K3XX リファレンス マニュアルの 73.3.6.1 章で説明されています。メッセージ バッファーがロックされたまま (いっぱい) で、同じ ID を持つ別の新しいメッセージが到着すると、新しいメッセージによって RX SMB 内のメッセージが上書きされます。
複数の CAN MB を使用して同じ CAN ID メッセージを受信することは通常の操作であり、回避策とはみなされません。お客様は MB のグループを使用して CAN ID のグループを受信することができます。これにより、ソフトウェアで作成された RX FIFO のように、CAN バス上でデータが失われる可能性が低くなります。
よろしくお願いします、
ジュリアン