Renesas Community
Search Community
User
Join or sign in
Site
Search Community
User
Renesas Engineering Community
FAQ
HELP
More
Cancel
Forums & Groups
English Community
中文社区(Chinese Community)
More
Cancel
かふぇルネ
forums-groups
Microcontrollers and Microprocessors
Other MCU/MPU Products
V850
More
Cancel
V850
104: V850 - Forum
DMAを使用したUART受信について
Home
Forum
Tags
More
Cancel
New
Replies
6 replies
Subscribers
443 subscribers
Views
15805 views
Users
0 members are here
V850ES
UC3RIF
INTUC3R
DMA0
beginner
受信割込み
Options
Share
More
Cancel
Related
DMAを使用したUART受信について
dai_tory
over 11 years ago
毎度お世話になっております。
V850ES/JH3-Eを使用しております。
DMA0の転送起動要因としてUARTC3の受信完了割り込み(INTUC3R)を指定しています。
例えば、DMA0の転送回数を5回、5バイトの受信があった場合、最初の1バイトを受信した時点でDMA0が転送を開始し、その後の4バイトで起こる受信割込みは無視される、という認識で正しいでしょうか。
また、このとき無視される受信割込みの割り込み要求フラグ(UC3RIF)は、DMA転送完了割り込み内でクリアする必要があるのでしょうか。
あと、通信速度が遅い場合、UARTC0の受信レジスタが更新されていないのにDMA0がデータの取得に行ってしまう、ということは起こりうるのでしょうか。
毎度質問ばかりで申し訳ありませんが、
以上、よろしくお願いいたします。
Parents
チョコ
over 11 years ago
スタッフのチョコです。
dai_tory様の質問に回答させていただきます。
V850ES/JH3-EのDMAコントローラは1回のDMA転送要求で,1回の転送を行ったら,バスを解放します。その後DMA要求があれば,再度DMA転送を行います。
また,UARTC3の受信完了割り込みをDMA起動要因に設定された場合,UARTC3は受信完了により通常の割り込み要求とDMA転送要求を同時に発生させます。つまり,DMA転送要求と割り込み要求が同時に発生してしまいます。
そのため,DMA転送を使用する場合には,UARTC3の割り込み要求をマスク(UC3RMK=1;)しておく必要があります。UARTC3の(通常の)割り込み要求はマスクしたことで,ペンディングされた状態になっていますから,指定回数のDMA転送が完了してDMA転送完了の割り込みの中でUARTC3の割り込み要求フラグをクリア(UC3RIF=0;)してください。(なお,UARTC3の割り込みを全く使用しないのであれば,UC3RMK=1に設定したままでUC3RIFを無視しても問題はありません。)
DMAはUARTC3の受信完了割り込みでDMA転送を開始し,転送完了後にバスを解放して,DMA転送要求があるかを確認します。この時点ではUARTC3では次のデータの受信は完了していないので転送要求は発生していないため,DMAは起動しません。
つまり,DMAの転送回数を5回に設定しておくと,UARTC3での受信完了ごとに5回のDMA転送が行われます。ご心配されている,UARTC3の受信データが更新されていないのにDMAが転送を行うことはありません。
Cancel
Up
0
Down
Reply
Cancel
Reply
チョコ
over 11 years ago
スタッフのチョコです。
dai_tory様の質問に回答させていただきます。
V850ES/JH3-EのDMAコントローラは1回のDMA転送要求で,1回の転送を行ったら,バスを解放します。その後DMA要求があれば,再度DMA転送を行います。
また,UARTC3の受信完了割り込みをDMA起動要因に設定された場合,UARTC3は受信完了により通常の割り込み要求とDMA転送要求を同時に発生させます。つまり,DMA転送要求と割り込み要求が同時に発生してしまいます。
そのため,DMA転送を使用する場合には,UARTC3の割り込み要求をマスク(UC3RMK=1;)しておく必要があります。UARTC3の(通常の)割り込み要求はマスクしたことで,ペンディングされた状態になっていますから,指定回数のDMA転送が完了してDMA転送完了の割り込みの中でUARTC3の割り込み要求フラグをクリア(UC3RIF=0;)してください。(なお,UARTC3の割り込みを全く使用しないのであれば,UC3RMK=1に設定したままでUC3RIFを無視しても問題はありません。)
DMAはUARTC3の受信完了割り込みでDMA転送を開始し,転送完了後にバスを解放して,DMA転送要求があるかを確認します。この時点ではUARTC3では次のデータの受信は完了していないので転送要求は発生していないため,DMAは起動しません。
つまり,DMAの転送回数を5回に設定しておくと,UARTC3での受信完了ごとに5回のDMA転送が行われます。ご心配されている,UARTC3の受信データが更新されていないのにDMAが転送を行うことはありません。
Cancel
Up
0
Down
Reply
Cancel
Children
No Data