4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Nucleo Board STM32F401reのUART2を使う

Last updated at Posted at 2019-05-12

#はじめに
f401reは3つのUARTが使えるのですが、その内の1つが購入時の状態だと使えなかったので使えるようしました。

今回の記事ではPlatformIO IDE for VSCodeを使っていますが、記事の本題とはあまり関係ないです。

動作環境

今回の動作環境は

  • Windows10
  • PlatformIO IDE for VSCode
  • STSTM32(ver4.4.0)

STSTM32はmbed対応のstm32bitマイコンをmbedで書くためのPlatformIOのプラットフォームの1つです。

配線

パソコンとMini USBをつなぐだけでf401reの電源が入るように、リセットボタンのすぐ下にあるジャンパをPWRがU5Vと繋がるように差し替えます。
一応抵抗を間に挟んでUART1のTXピン(PA_9)とUART2のRXピン(PA_3)をつなぎます。
(mbedで使うf401reのピン名の定義はこちらのmbedが出しているf401reの概要ページにあります)
image.png

テストプログラム

UART1のTXから適当な信号を送ってUART2で受け取ったらLチカするだけの簡単なプログラムです。

src/main.cpp
#include <mbed.h>

void Receiving();//受信時割り込み

Serial send(PA_9, PA_10, 19200);//(TX, RX, baud)
Serial receive(PA_2, PA_3, 19200);
DigitalOut userLED(PA_5);//LD2

int main() {
  userLED = 0;
  receive.attach(&Receiving,Serial::RxIrq);
  while(1) {
    send.putc('a');
    wait(0.5);
  }
}

void Receiving(){
  userLED =!userLED;//Lチカ
  receive.getc();//念のため
}
platformio.ini
; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:nucleo_f401re]
platform = ststm32
board = nucleo_f401re
framework = mbed

本題

しかしこれだけではUART2を使うことはできません。
STMicroelectronicsが出しているユーザーマニュアルをみると、8.3 USART communicationに(この記事ではUARTとして使っていますが)、USART2はデフォルトではPA_2/PA_3には繋がっていなくて、代わりにSB13とSB14を介して仮想COMと繋がっているとあります。
image.png

さらにページを進めると、それっぽい図も出てきます。
(下の画像のSB62/SB63の橋みたいなところを繋げたらつながりそう)
image.png

下の画像はFigure 29. ST-LINK/V2-1の一部です。PA2/PA3がSB14/SB13を介してSTLINKのTX/RXと繋がっています。
image.png

f401reの裏面の赤枠の部分、SB62/SB63を繋げてSB13/SB14の0Ω抵抗を外します。
image.png
.
.
.
できました。
image.png

プログラムを実行すると、1秒周期でLチカしているのが確認できました。
image.png

送るのをUART2に変えてもLチカできたので、TXRX共に正常に動いているようです。

まとめ

このピンの接続法(というかボードの設計)はMB1136をベースにした STM32 Nucleo-64マイコンで共通らしいのでnucleo f411reやその他のマイコンでも同様の作業を行う必要がある。
そしてこの作業をするとUSBTX/USBRXが使えなくなる(debug時とかにこの名前でSerialをつくればマイコンをパソコンと接続するだけでTera Termかなんかを使って通信できる)。
が、今回自分はその機能は必要なかったしまあいいかなと思う。

また、自分のメモ用にと思って初めてQiitaで記事を書いてみたが、それにあたって色々なサイトを調べてより理解が深まったので、また何かあれば記事を書いていこうと思う。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?