スピーカ周波数特性テスタの実装
STM32H7ハイスペック・マイコンで作るオーディオ・スペクトラム・アナライザ
[キット付きVOD]ARM M4/M7/DSP 500MHz!STM32H7計測&通信用ハイスペック I/O Module開発
スピーカ特性を測定する意味
![]() |
---|
図1 GUIでスピーカの周波数特性を測定するプログラムを実装し,スピーカ周波数特性テスタを作ります。プログラムはディジタル・マイクとオーディオCODECを使った第1回のプロジェクトをベースに作成.画像クリックで動画を見る.または記事を読む.詳細は[VOD/KIT/data]ARM M4/M7/DSP 500MHz!STM32H7計測&通信用ハイスペック I/O Module開発 |
ソースコード一式
「STM32H7ハイスペック・マイコンで作るオーディオ・スペクトラム・アナライザ 第2回 スピーカ周波数特性テスタの実装」の制作用ソースコードは下記からダウンロードできます.
250107_H7_LCD_Speaker_Characteristic_2.zip
市販スピーカの仕様書には,出力,周波数帯域,インピーダンスなどの情報が示されていますが,それだけでは音の再現性やひずみの有無までは評価できません.周波数特性やひずみ特性,指向性,位相特性などを確認することが,正確な評価に必要です.
本記事では,STM32H747I-DISCOボードを用いて,簡易的なスピーカ・サウンド・テスタを構築し,GUI上で周波数特性を可視化する手法を解説します.
システム構成とGUI設計
実装の基盤は,Cortex-M7コアを搭載し,マイク入力やオーディオCODECを内蔵したSTM32H747I-DISCOです.TouchGFXを使ってGUIを設計し,スペクトル表示とトーン信号出力を制御します.
- ボタン[Tone Play/Stop]で任意周波数の信号を出力
- ボタン[Run]で周波数スイープを実行
- “graph1”にてdBスケールのスペクトルを表示
表示の縦軸をdB,横軸を周波数とし,グリッド線とラベルを有効にします.UIの配色や文字サイズは任意で調整できます.
コーディングと信号処理
GUIイベントに応じた処理は,コールバック関数を通して継承クラスに実装します.FFT処理にはCMSIS-DSPライブラリを用います.このライブラリを組み込むには以下の設定が必要です:
- リンクするライブラリに arm_cortexM7lfsp_math を追加
- ライブラリ検索パスに CMSIS/DSP/Lib/GCC を指定
- ヘッダ検索パスに CMSIS/DSP/Include を追加
計測にはBlackman窓を使用し,スペクトル漏れを低減しています.ただし簡易的な構成であり,精密な測定には専用機器を用いることが推奨されます.
ひずみ測定と実運用
任意周波数のトーンを出力し,ディジタル・マイクで録音した信号からひずみの有無を評価します.STM32H747I-DISCO搭載のWM8994 CODECとMP34DT01-Mマイクにより,60dB以上のS/N比が得られました.
GUI上のスペクトルに現れるピークやノイズ分布を観察することで,スピーカの出力特性の傾向を理解できます.
CMSIS-DSPライブラリの役割
CMSIS-DSPは,Arm Cortex-Mマイコン向けの高速な数値演算ライブラリで,信号処理に必要な関数群が最適化されています.特にスペクトル解析においては,FFT(高速フーリエ変換)の処理速度と精度が重要であり,このライブラリを使用することでリアルタイム解析が可能になります.
STM32H7シリーズでは,FPUとDSP命令を搭載しており,CMSIS-DSPとの親和性が高いです.FFT関数はCortex-M7コア向けに最適化されており,512点~4096点程度のFFTでも高速に動作します.
FFTと周波数特性
FFTは,時系列の信号($V_{in}$)を周波数ドメインに変換する処理です.これにより,信号がどの周波数成分を含んでいるかを調べることができます.出力結果をdBスケールでプロットすることで,スピーカの出力ピークや凹みが視覚化されます.
- サンプリングした波形に窓関数を適用
- CMSIS-DSPのFFT関数でスペクトルに変換
- パワー値をdBに変換して表示
ここで用いる窓関数には,Blackman窓が選ばれています.これはサイドローブの抑制に優れ,スペクトル漏れを最小限に抑える効果があります.
STM32での実装の注意点
CMSIS-DSPのFFT関数を使用するには,固定長のバッファ,整列された実数・複素数データ構造など,いくつかの制約があります.また,演算量に応じて割り込み周期や処理時間が変動するため,OnTick処理の設計には注意が必要です.
コード生成に用いるTouchGFX DesignerとCubeMXのバージョンを一致させることも重要です.バージョンの不一致により,リンクエラーやビルドエラーが発生することがあります.
CMSIS-DSPを用いたFFT処理は,STM32H7の性能を活かす信号解析の中核です.適切なライブラリの導入とメモリ管理を行えば,リアルタイムなスペクトル解析が可能です.FFTと周波数特性の理解は,オーディオ開発において有効なスキルとなります.
〈著:ZEPマガジン〉
著者紹介
- 2015年 都内電子機器メーカに入社.主にUSB3.1やDisplayPort,MIPI,車載向けSer/Desなど高速インタフェース変換基板の設計開発.回路設計からファームウェア,ソフトウェア開発(C/C++)を担当
- 2023年 「Y-Logic」として独立開業
著書
- 世界統一規格新USBType-C攻略DVD(特集)第4部,トランジスタ技術2020年2月号,CQ出版社.
- 電池交換不要!消費電流1μA未満のソーラ充電式導通チェッカ,トランジスタ技術2020年10月号,CQ出版社.
- AVRでサクッとマイコン開発(特集すべて),トランジスタ技術2021年4月号,CQ出版社.
- 3桁表示ミリオーム計の設計・製作,トランジスタ技術2021年6月号,CQ出版社.
- 直流バイアス付きコンデンサ容量計,トランジスタ技術2021年11月号-2022年3月号(短期連載),CQ出版社.
- 超便利!ICの故障・真贋チェッカの製作,トランジスタ技術2023年3月号,CQ出版社
- 作る!わかる!USBType-C&電源(特集)第1部3-4章,トランジスタ技術2023年6月号,CQ出版社.
- 20mVステップUSB可変電源の製作,トランジスタ技術2023年9月号,CQ出版社.
- 「大安」「仏滅」を計算する六曜カレンダ回路の製作,トランジスタ技術2024年3月号,CQ出版社.
参考文献
- [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
- 実験しながら学ぶフーリエ解析とディジタル信号処理[Vol.1:フーリエ解析の基本「三角関数」の正しい理解]
- [VOD]Pythonで学ぶ やりなおし数学塾2【フーリエ解析】