DMAを使用したUART受信について

毎度お世話になっております。

V850ES/JH3-Eを使用しております。

DMA0の転送起動要因としてUARTC3の受信完了割り込み(INTUC3R)を指定しています。

例えば、DMA0の転送回数を5回、5バイトの受信があった場合、最初の1バイトを受信した時点でDMA0が転送を開始し、その後の4バイトで起こる受信割込みは無視される、という認識で正しいでしょうか。

また、このとき無視される受信割込みの割り込み要求フラグ(UC3RIF)は、DMA転送完了割り込み内でクリアする必要があるのでしょうか。

あと、通信速度が遅い場合、UARTC0の受信レジスタが更新されていないのにDMA0がデータの取得に行ってしまう、ということは起こりうるのでしょうか。

毎度質問ばかりで申し訳ありませんが、
以上、よろしくお願いいたします。
Parents
  • スタッフのチョコです。

    kijo様の質問にお答えいたします。

    V850でDMA転送を使う時には周辺機能(この場合はUARTC3)の割り込み要求をマスクしておく必要があります。
    DMA転送だけで,それ以外に割り込み機能を使用しないなら,初期設定で割り込み要求のマスクを解除しないだけです。(割り込みマスクレジスタはディフォルトではマスクが設定されています。)
    DMA転送だけでなく,割り込みと使い分ける場合には,割り込みを使う直前に,割り込み要求フラグをクリアし,マスクを解除します。DMA転送を使う直前に割り込みマスクを設定します。

    なお,これらは割り込みコントローラでの設定で,周辺機能側での設定変更ではありません。



Reply
  • スタッフのチョコです。

    kijo様の質問にお答えいたします。

    V850でDMA転送を使う時には周辺機能(この場合はUARTC3)の割り込み要求をマスクしておく必要があります。
    DMA転送だけで,それ以外に割り込み機能を使用しないなら,初期設定で割り込み要求のマスクを解除しないだけです。(割り込みマスクレジスタはディフォルトではマスクが設定されています。)
    DMA転送だけでなく,割り込みと使い分ける場合には,割り込みを使う直前に,割り込み要求フラグをクリアし,マスクを解除します。DMA転送を使う直前に割り込みマスクを設定します。

    なお,これらは割り込みコントローラでの設定で,周辺機能側での設定変更ではありません。



Children
No Data