Project

General

Profile

機能 #101

UARTを使う

Added by mole lord about 1 month ago. Updated 6 days ago.

Status:
終了
Priority:
通常
Assignee:
Start date:
09/22/2020
Due date:
10/31/2020
% Done:

100%

Estimated time:

Description

ST-Link(J-Link)のUARTを使う。
最初は割り込みで9600bpsを実現し、そのあとDMA化して最高速(921,600bps?)で動かせるようにする

#1

Updated by mole lord about 1 month ago

  • Due date set to 09/27/2020
  • Status changed from 新規 to 進行中
  • % Done changed from 0 to 10

SHA-1: 0251b7271590ee613b840caf92d796b0c954d1d5
で、CubeMX上の設定を終えた。
割り込み優先度に関しては、とりあえずTIM6を1、USART3を2に直した。

#2

Updated by mole lord 19 days ago

受信のDMA化は stm32FのDMA Circular mode を使ったUART受信 が参考になりそう。

#3

Updated by mole lord 13 days ago

正常に動作しているかを確認しやすいので、まずはSTM32からの送信のみをDMA化してみる。

#4

Updated by mole lord 13 days ago

STM32Cube_FW_F4_V1.25.1/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA がLow LayerドライバでDMAを動かす場合の参考になりそう。

#5

Updated by mole lord 12 days ago

  • Due date changed from 09/27/2020 to 10/31/2020
  • % Done changed from 10 to 20

受信は割り込み使用のまま、送信だけDMA化して SHA-1: a0fd9a3ba1fd0015772c262afe0cddf766fb96e6 でコミットした。

しかし、以下の問題あり。

  • シングルバッファなので、DMA中はバッファ書き込みを待たされてしまう
  • バッファに1バイト書くごとにMutexをロック/アンロックしているので効率が悪い
#6

Updated by mole lord 11 days ago

  • % Done changed from 20 to 50

SHA-1: 90ef393ee13c695e54e545d1e707c0cf59d942e8
で、ダブルバッファリングでDMA送信ができるようになった。

バッファに1バイト書くごとにMutexをロック/アンロック、の問題は、複数文字をまとめて送信するputsに相当する関数を作成したあとで考える。

#7

Updated by mole lord 6 days ago

  • Status changed from 進行中 to 終了
  • % Done changed from 50 to 100

割り込み/DMAのうち好きなほうを選べるようにして、
SHA-1: 167177de5f8e7ac8cb7b76227fa1681f1d07d48f としてコミットした。

Also available in: Atom PDF