ショウのマイクロマウス研修 マウス自作研修

ショウのマイクロマウス制作-Part5

ショウのマイクロマウス研修

こんにちは、ショウです。前回はNucleoボードを使ってLチカをするところまで進みました。

今回はシリアル通信を使ってNucleoボードとPCの通信の準備と、STM32G4に用意されているFPUの機能を使えるようにします。

CubeMXの設定

まずはシリアル通信をするピンを指定します。

前回Lチカをする時と同じように、今回もNucleoボードですでに設定されているピンを使用して通信を行いますが、現在考えている機体の設計では、別のピンから通信する予定なのでそちらの機能の設定を行います。

予定ではUSART1を使用する予定なので、ConnectivityからUSART1をクリックします。

ConnectivityからUSART1をクリック

そうするとこのような画面が出てきます。このModeのところをクリックするといくつかのモードを選択できるのですが今回はAsynchronousを選択します。Asynchronousは非同期式シリアル通信(UART)モードです。

Asynchronousを選択

選択すると左下にConfigurationが表示されます。ここで通信速度などの設定をすることができます。今回はそのままにしておきます。マイコンの図を見ると。PC4と5にUSART1_TXとUSART1_RXが設定されました。これでUSARTのピン設定がされたので、前回と同じようにライブラリを変更します。Project Manager>Advanced Settings>Driver SelectorにUSARTが追加されているのでLLに変更します。今回HALライブラリは使用しないので今のうちにすべての項目をLLに変更しておきます。

FPUの設定

FPU(Float Processing Unit) とはSTM32マイコンに用意されている浮動小数点演算器です。これは小数の計算などを高速で計算してくる機能なので、有効にしておきます。

CubeIDEを使ってFPUを使えるようにするにはファイルを追加する必要があります。必要なファイルは

  • arm_cortexM4lf_math.lib
  • libarm_cortexM4lf_math.a

の2つです。

これらは私の環境ではデフォルトで用意してくれないので、自分で事前にダウンロードされているSTM32G4のパッケージから探してきてプロジェクトのフォルダ内にコピーします。

STM32Cube\Repository\STM32Cube_FW_G4_Vxxxx\Drivers\CMSIS\LibのARMとGCCのフォルダ内にあるはずです。

同じように必要なヘッダファイルが足らないので自分でコピーします。

STM32Cube\Repository\STM32Cube_FW_G4_Vxxxx\Drivers\CMSIS\DSP\Includeの中にある

  • arm_math.h
  • arm_const_structs.h
  • arm_common_tables.h

3つのファイルをプロジェクトのCoreの中のIncに追加します。

これで必要なファイルの移動は完了です。

CubeIDEでFPUを使えるように設定を行います。

まず、CubeIDEの(プロジェクトのプロパティ)>C/C++Build>Setting>ToolSettingsの設定を開きます。

MCU Settingsの中のUse Float with printf from newlib-nano(-u_printf_float)とUse Float with scanf from newlib-nano(-u_scanf_float)にチェックを入れます。

(scanfは今回使用しませんが、使えなくて困りたくないので入れておきます。)

MCU Settingsの中のUse Float with printf from newlib-nano(-u_printf_float)とUse Float with scanf from newlib-nano(-u_scanf_float)

チェックを入れたら今度はMCU GCC LinkerのLibrariesに移動します。

先程追加したarm_cortexM4lf_math.libとlibarm_cortexM4lf_math.aがライブラリにあたるのですが、そのままではビルド時にライブラリを読み込んでくれません。その設定をLibrariesで行います。

Librariesを開くと下の画面が開きます。

Librariesを開く

赤の四角で囲ったところをクリックして出てきた画面にarm_cortexM4lf_mathと入力します。

次はライブラリのパスを設定します。

ライブラリのパスを設定

赤の四角で囲ったところをクリックした後、Workspaceをクリックして現在使用中のプロジェクトのフォルダを選択します。

そうすると下の画面のようになります。

現在使用中のプロジェクトのフォルダを選択

設定できたらApply and Closeを押してFPUの設定は完了です。

次回はUARTを使ってのシリアル通信をします。

参考URL

STM32+HALのUSARTでprintf(float),scanf, CMSISを有効可 | Sora's Activity Record
STM32マイコンのペリフェラル関連記事を一覧にまとめました。 stm32 + makefileでのprintf,scanf,CMSIS(FPU)の設定の仕方をやっていきたいと思い...
STM32 CubeIDE環境で、CMSIS-DSPを使う方法 | ioloa.com
Arm社が提供するCMSIS-DSP Libraryを利用すると、簡単に高速な演算ができます。 できることは、三角関数や平方根だけに留まらず、行列操作、FIRフィルタ・FFT、PIDコントローラ、クラーク変換・パーク変換等、幅広く入っています。 導入することで利用できる関数は以下のページにまとめられています。 さて、こ...
タイトルとURLをコピーしました