2016年11月09日

DSP処理の前設定

今回はSTM32でのDSP処理の前設定について紹介します。

環境はこれまで同様、
・STM32F303K8
 +SW4STM32(System Workbench for STM32)
 +STM32CubeMX(F3_1.6.0)
です。


STMのサイトからSTM32Cube_FW_F3_V1.6.0をダウンロードすると
いくつかサンプルコードが入っています。

その中にM4コア内臓のDSP処理を使用したFFTのサンプルがあります。
STM32Cube_FW_F3_V1.6.0\Drivers\CMSIS\DSP_Lib\Examples\arm_fft_bin_example\ARM


・FFT処理するためのサンプルデータ
 arm_fft_bin_data.c
・FFT処理のサンプルコード
 arm_fft_bin_example_f32.c


上記のコードをそのままCubeMXで生成したコード群に
そのまま組込んでもコンパイルが通らないため、
対処方法をご紹介します。

@
#include "stm32f3xx_hal.h"の次に
#define ARM_MATH_CM4
を追加。
F3のM4コアの使用を定義。
この定義を忘れるとコアの種類が分からない旨のコンパイルエラーが出る。
#error "Define according the used Cortex core ARM_MATH_CM7,
ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or ARM_MATH_CM0"

A
#include "arm_math.h"
#include "arm_const_structs.h"
をインクルード。
コアの定義の後に上記のインクルードをする。


B
STM32Cube_FW_F3_V1.6.0\Drivers\CMSIS\Lib\ARM
内の
arm_cortexM4lf_math.lib
STM32Cube_FW_F3_V1.6.0\Drivers\CMSIS\Lib\GCC
内の
libarm_cortexM4lf_math.a
をプロジェクトフォルダ直下へ配置する。

 arm_cortexM4b_math.lib
 arm_cortexM4bf_math.lib
 arm_cortexM4l_math.lib
 arm_cortexM4lf_math.lib
から必要に応じて選択。
little endian, fpu, m4の場合で
arm_cortexM4lf_math.lib


C
プロジェクトのプロパティーで「C/C++Build」の設定内の
Linker、LibrariesでDSP処理のライブラリを追加する。

Librariesに下記を追加。
arm_cortexM4lf_math
m

Library search pathにワークスペース下のプロジェクトフォルダを選択。
自動的に下記になる。
"${workspace_loc:/${ProjName}}"

この設定を忘れると
undefined reference to `arm_cfft_f32'
cannot find -larm_cortexM4lf_math.lib
なエラーが出る

dsp.png


以上でコンパイルが通りました。

DSP処理のFFT関数の使い方などは後ほどご紹介します。
ラベル:HAL STM32 実験 部品
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック