はじめまして、JiGoRoです。
RZ/A2M Application Package v2 リリースありがとうございます。
FreeRTOSを使う上で、ペリフェラル、特に通信における割り込み発生頻度を下げたいので、DMAとの組み合わせを考えてます。
(現在、ハードウェアを開発中で、並行してソフト構想設計を行っております)
RX系マイコンは良く使っているのですが、RZマイコンは初めてなので、質問させてください(初歩的な質問で申し訳ございません)。
DMAの転送トリガーをSCI(SCIFAではない方です)の送信割り込みとした場合、
① DMAの指定回数の転送中は、SCIの送信完了割り込みは発生しない、という認識で正しいでしょうか?
② DMAの指定回数転送完了後、最後の1バイトを送信し終わったタイミングでは、SCIの転送完了割り込みは発生する、という認識で正しいでしょうか?
想定アプリは、半2重式のUART伝送を行うものです。 転送終了後、受信体制で待たせたい、と考えてます。
そのため、DMA転送中、後の送信完了割り込みの考え方を整理しておきたいと思いまして、質問させて頂きました。
よろしくお願い致します。
JiGoRoさん、こんにちは。NoMaYと申します。#RZ/A2Mの使用経験はありませんが、、、>DMAの実行終了割り込みによって、送信終了割り込みをイネーブルにするこれは、もし他の割り込みで処理時間の長い(ハードウェアマニュアルによるとRZ/A2Mに搭載されているのはSCIgでダブルバッファ構造なので例えば2バイト送信時間よりも長く掛かるといった)割り込みがあるのであれば、そしてもしその割り込みとDMA実行終了割り込みのタイミングがバッティングしてDMA実行終了割り込みの方が負けて長時間保留される可能性があるなら、DMA実行終了割り込み処理が実行されるタイミングが送信終了後になってしまう可能性がゼロではなくて、もしそういう事態が起きたら処理が破綻してしまうように思います。JiGoRoさんの他の割り込み処理次第では、何か対処が必要になるかも知れないような気がします、、、なお、これは、RZ/A2Mに特有なのでは無く、RXマイコンでも同じことで、きっと知っている人は知っている的な手があるに違いない、と思ったりしていますが私は知らなくて、、、
JiGoRoさん、こんにちは。NoMaYです。ハードウェアマニュアルを見ていたら、割り込みコントローラの送信終了割り込みの要因はレベル検出になっていました。ということは、先ほどの私の投稿内容は気にしなくて良さそうです。すみません、、、
わわいです SCIとかの通信周りをDMA駆動する場合に注意しなければならないのは、DMAで送信している最中に送信データを追加することができない、ってのがあります ソフトウエアポーリングや割り込み駆動の場合は普通にできることですが、DMAの場合は、最初にデータアドレスとそのバイト数を設定するという形式であるがため、送信動作中に新たなデータを設定しようとすると動作中のデータ送信がキャンセルされてしまいます ということで、DMAを使用する場合の条件ってのがあるので、それに合わなければ、割り込み駆動にするなり考える必要があります