Bubble, bubble, toil and cuddle !!!

October 15, 2020
XML
カテゴリ: 作りモノ
今日は早めで帰宅は18時過ぎ。

Longan Nano の USART を試してみた ときに、 usart_data_receive(USART0) で一度データを読み込んでしまうと、リードバッファが空でないフラグがリセットされてしまい、TeraTermなどからファイル送信したデータは最初の1文字しか読めない、っちゅうことが分かりました。 GD32VF103 User Manual のUSARTの項目を見ても、


「ソフトウェアから直接でも、DMA転送によってでもUSART_DATAレジスタを1回読む動作をするとRBNEビットはクリアされます。」

と書いてあるので、仕方ないことのようです。

ただし、DMA転送で読んだときはどのように読めるのかはやってみなければ分からないので、試してみることにしました。

まだ途中段階ですが、

(1) rcu_periph_clock_enable(RCU_DMA0); でDMA0に電源を供給する(←ココ大事!!)
(2) dma_parameter_struct っちゅう型の構造体にパラメータをセットしてDMAパラメータの初期化をする(DMA0のチャネル4がUSART0に対応するらしい)
(3) DMA割込をセットする
(4) USART0の割込をセットする
(4) usart_dma_receive_config(USART0, USART_DENR_ENABLE) でUSART0でDMAを使う設定にする
(5) USART0の割込フラグが立ったら、DMA転送を有効にする
(6) DMA転送フラグが終了になったら、転送先の配列にデータが格納される
(7) DMA転送フラグをクリアする
(8) DMA転送を無効にする
(9) DMAパラメータの初期化をする
(10) (5)~(9)をぐるぐる回る

といった概略の流れでDMA転送によるUSART0の受信はできたように見えます。まだ、先頭文字が欠けたり化けたり、とか色々謎な現象は起きているのですが、DMA転送できているのは確かです。

ただ、DMA転送を有効にすると指定した転送バイト数に達するまで(USART受信バッファに必要バイト数のデータが溜まるまで)転送が終わらない、っちゅう難点もあります。(^^; まぁ、そらそやわな。

っちゅうことで、DMA転送によるUSART受信に果たして価値があるのか悩んでいるところです... (^^;;
--- 20:15 ---





お気に入りの記事を「いいね!」で応援しよう

Last updated  October 15, 2020 08:15:33 PM
コメント(0) | コメントを書く
[作りモノ] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Keyword Search

▼キーワード検索

Category

Favorite Blog

まだ登録されていません

Comments

sorriman @ Re:HP ProDesk 400 G4 DM をセットアップした(01/13) New! 情報ありがとうございます。 また自宅を2…
Wi-Fiアンテナは多分入ってると思います。@ Re:HP ProDesk 400 G4 DM をセットアップした(01/13) 始めまして。 この機種はまだお使いでしょ…
通りすがりの者です@ Re:LIFEBOOK U939/B に WANカードを載せた(01/21) 私のLIFEBOOKではnanoSIMを装着後に再起動…
aki@ Re:秋葉原に寄った(01/14) この様な書込大変失礼致します。日本も当…
BOOSAN@ Re:SPY x FAMILY CODE:White を観た(01/08) 私は明日、PERFECT DAYS観ます。ビム・ベ…

© Rakuten Group, Inc.
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: