1.概要
マイクを接続しSTM32CubeIDEに導入したTinyUSBで処理する
2.構成
コンデンサマイクモジュール → BluePillボード :ADC > DMA > TinyUSB → MacBook Air
3.仕様
項目 |
仕様 |
ボード |
BluePill:STM32F103C8T6/CBT6 |
USB |
USB Audio 2.0 LEDによる状態表示 |
サンプリング |
48kHz モノラル 16bit |
マイク入力 |
ADC 12bit VCC/2±VCC/2 サンプリング1倍 ADC読込値を16倍して感度アップ |
4.STM32CubeIDEプロジェクト作成
TinyUSB audio_test にADC読込等を追加
1)MCU/MPU
STM32F103C8T/CBT いずれか
2)STM32CubeMX設定
TinyUSB audio_test に下記追加
・ADC トリガー:TIM3 48kHz, DMA取込
・GPIO LED点灯ポート出力
タブ |
項目 |
設定 |
||
Pinout & Configuration |
System Core |
DMA |
DMA1 |
ADC1, Mode : Circular, Memory : Harf word |
|
GPIO |
PC13 |
Output User Label : LED |
|
NVIC |
|
DMA1 |
||
|
USB high priority or CAN TX interrupts USB low priority or CAN RX0 interrupts |
|||
|
High Speed Clock(HSE) : Crystal/Ceramic Resonator |
|||
SYS |
|
Debug : Serial Wire |
||
Analog |
ADC1 |
IN8 |
NVIC : DMA1, DMA : DMA1 Parameter : Right alignment External Trigger : TIM3 Trigger Out Event |
|
Timers |
TIM3 |
|
Mode : Internal Clock Parameter : 48kHz=72MHz / (1499 + 1), Trigger Event : Update |
|
Connectivity |
USB |
|
Device(FS) Middlewareは選択しない |
|
Clock Configuration |
|
|
|
HSE:8MHz, SYSCLK:72MHz, USB:48MHz |
Project Manager |
Linker setting |
|
|
Minimum Heap Size:0x1000 Minimum Stack Size:0x1000 |
5.コード詳細
1)データフロー
処理周期:USB割込 1ms毎 48データ
項目 |
データ |
処理 |
ADC取込 |
マイクアンプ出力 VCC/2±VCC/2 を12bit 変換 |
DMAでリングバッファに取込 TIM3 48kHz 48データ/周期 |
DMAリングバッファ int16_t adc_buffer[48] |
||
ADC値変換 |
感度とVCC/2のオフセット調整変換しUSB出力待機バッファに格納
|
|
USB出力待機バッファ int16_t in_buffer[96]の1/2交互に使用 (ping pong buffer) |
||
USB出力 |
変換済みの48データを転送 |
|
USB出力バッファ uint16_t test_buffer_audio[48] |
2)ファイル
(1)ファイル構成
TinyUSB audio_test プロジェクトをコピーし変更する
(2)修正ファイル一覧
ファイル |
修正変更内容 |
Core/Src/main.c |
STM32CubeMXが生成する main.c に追記 TinyUSB audio_test では audio_test の main.c を統合したが別ファイルにする |
Core/Src/usb.mic.c Core/Inc/usb_mic.h |
TinyUSB audio_test の main.c ファイル名を変更し内容を修正する audio_test 内 main関数の内容は関数化して新しいmain.cから呼び出す 他のファイルから呼び出すために usb_mic.h を新設する |
Core/Src/stm32f1xx_it.c |
#define usb_mic.h 追記他 |
3)各ファイル内容
(1)main.c
USER CODE Includes : インクルードファイルとバッファ関連変数宣言