圏9研究所 工作室

圏9研究所の開発情報資料など

STM32F411 BlackPill CMSIS-DSPによる楽器用チューナー(4)CMSIS DSP実装

1.概要
 arm CMSIS-DSPライブラリの使用方法
 STM32CubeIDE内蔵のCMSIS-DSPはバージョンが古くスプライン補間関数が使えなかったので最新版を導入する

2.先生とお手本
1)先生
(1)CMSIS-DSP導入方法について

aptechlabs.com

ioloa.com

 

(2)スプライン補間について

qiita.com

qiita.com

https://www.rajgunesh.com/resources/downloads/numerical/cubicsplineinterpol.pdf

2)お手本
(1)FFT

klangstrom.dennisppaul.de

 

(2)スプライン補間

bbs.elecfans.com

 

3.STM32CubeIDEへの導入
1)ライブラリー入手
 STM32CubeIDE内蔵のCMSIS-DSPはバージョンが古いので最新版を導入する

(1)最新のライブラリー

github.com

  .a .lib ファイルのある最新版CMSIS 5.7.0 をdownloadする

 

2)STM32CubeIDEへの導入
 cortexM4を搭載するSTM32F411での導入例

(1)ライブラリーファイルインポート
 ARM.CMSIS.5.7.0/CMSIS/DSP/Lib/ARM/arm_cortexM4lf_math.lib
 ARM.CMSIS.5.7.0/CMSIS/DSP/Lib/GCC/libarm_cortexM4lf_math.a

(2)インクルードファイルインポート
 ARM.CMSIS.5.7.0/CMSIS/DSP/Include
  arm_math.h
  arm_const_structs.h
  arm_common_tables.h

(3)ライブラリー設定
 Librarys                arm_cortexM4lf_math
 Library search path    workspace を設定

(4)設定ハードコピー

 

4.コード例
1)三角関数

/* USER CODE BEGIN Includes */
#define ARM_MATH_CM4
#include "arm_math.h"
#include "arm_const_structs.h"
/* USER CODE END Includes */

float armsinVal = arm_sin_f32((float32_t)num*2*M_PI/255);
float armcosVal = arm_cos_f32((float32_t)num*2*M_PI/255);