製作モジュール一覧

2019年2月6日水曜日

STM32CubeとTrueSTUDIOでUART通信

Arduinoやmbedで最初にやったことはLチカ、その次はUART通信(Serial)でした。

TrueSTUDIOとSTM32CubeでもUART通信をやってみました。TureSTUDIOはDebuggerが統合されているのでデバッグにはそっちを使えばいいという話もありますが、ロギングやらなんやかやでUARTも必要になりそうです。

環境は

  • Nucleo-F446RE
  • STM32CubeMX Version 5.0.1
  • STM32Cube FW_F4 V1.23.0
  • TrueSTDUIO Version: 9.2.0
  • Windows10 + Putty0.7.0

参考にしたドキュメントは
ST公式の「UM1718 User manual STM32CubeMX for STM32 configuration and initialization C code generation」の「11  Tutorial 4 - Example of UART communications with an STM32L053xx Nucleo board」です。Nucleo-F446RE用に一部読み替えています。

STM32CubeMXでCコードの初期化


STM32CubeMXで「New Project」 - 「Board Selector」を選択。「NUCLEO-F446RE」を選択し、「Start Project」


デフォルトモードで初期化。「Initialize all peripherals with their default Mode?」で「Yes」を選択


「SYS」 - 「Debug」 - 「Serial Wire」が選択されているのを確認


「Timers」 - 「TIM2」 - 「Clock Source」 「Internal Clock」を選択


※TIM2は周期的にTimer割り込みを発生するものでUART通信に必須ではありません。

「Connectivity」 - 「USART2」 - 「Mode」 - 「Asynchronouse」が選択されているのを確認


「Pinout」 - 「Pinout view」で下記のピンがアサインされているのを確認

  • PA13 TMS (SWD:SWDIO)
  • PA14 TCK (SWD:SWCLK)
  • PA2  USART_TX
  • PA3  USART_RX


「Clock Configuration」 デフォルトのまま


※ドキュメント(UM1718)ではHCLKが2.097MHzになっていますが、F446のデフォルトの84MHzでテストしました。

「Pinout & Configuration」タブの「USART2」 - 「Parameter Setting」で

  • 「Baud Rate」を「9600 Bits/s」に設定
  • 「Data Direction」で「Receive & Transmit」が選択されているのを確認


「TIM2」 - 「Parameter Setting」で

  • 「Prescaler」を「16000」に設定
  • 「Counter Period」を「1000」に設定


「TIM2」 - 「NVIC Settings」で

  • 「TIM2 global interrupt」の「Enabled」をチェック


「Project Manager」 - 「Project」 - 「Toolchain / IDE」で「TrueSTUDIO」を選択


「Code Gengerator」 「HAL Settings Set all free pins as analog」をチェック


「Generate Code」して、「Open Project」を選択


TrueSTUDIOでコードの追加・実行


TrueSTUDIOが立ち上がるので、C/C++パースペクティブでソースに以下のコードを追加。

C/C++パースペクティブでツールバーの「デバッグ(虫のアイコン)」をクリック → デバッグパースペクティブでツールバーの「再開( [|>] みたいなアイコン)」でプログラムが実行されます。

Puttyの設定


Puttyに以下のような文字列が表示されました。


TIM2の「Counter Period」を「10000」に増やすとPutty上でゆっくりと表示されるようになりました。

HCLKが84MHz、プリスケーラが16000なので
84MHz / 16000 = 5.25kHz
Counterが1000の場合5.25Hzなので割り込み周期は約190ms
Counterが10000の場合0.525Hzなので割り込み周期は約1.9s

メモ:


STM32CubeのHALの使い方の習得がそこそこ大変そうですが、飼い馴らせば強力そうです。

SPI、I2C、I2S、FPUあたりの使い方から探っていくつもりです。音絡みがメインなのでCMSIS DSPも使ってみたいですが1年ぐらいかかるかな。

2019年2月3日日曜日

3.5φのミニプラグと細めのシールドケーブル

共立の0.3SQ/1芯のMVVS-Sケーブルが終売になって困りました。

代替品でタチイのSOFTEC MIC CODEにしてもらいましたが、微妙に外形が太いので3.5φのミニプラグのケースに通ったり通らなかったり。


並べたミニプラグは全てマルシンのもので、上からMP-105AC、MP-061M-1、MP-105LC。

シールドケーブルのSOFTECは仕様では仕上外形4φとなっています。

プラグの挿入径の仕様は、MP-105ACが4φ、MP-061M-1は4.2φ、MP-105LCは5φです。

一番上の4φのMP-105ACは相当がんばってねじ込んでケーブルを挿入することはできましたが、まず無理と思ったほうがいいでしょう。

真ん中の4.2φのMP-061M-1はケーブルの末端がスッキリしていればかろうじて通ります。

一番下の5φのMP-105LCは安心して使えます。

MVVS-Sは2芯のものでも挿入径4φのプラグに通りますが、値段が高くなります。共立では1芯で87円(終売)、2芯で144円です。

1芯のものも、100m巻なら電線屋さんで3000円前後で売ってますがどうしようか迷います。←100mも使うかという

3000円あったらNucleo-F767がもう一枚買えるし悩みます。