圏9研究所 工作室

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

STM32F411 BlackPill USB Speaker(1)概要

1.経緯
 USBオーディオデータをリアルタイムでDSP処理するアプリを検討中です
 とりあえずUSB audio でデータを取込む部分をUSB Speaker として作ってみます

2.システム概要
1)ボード:WeAct Black Pill V2.0 STM32F411CEU6
 Arm Cortex-M4, RTC        RTCチップ実装済
 100MHz                             25MHz水晶実装済
 128KB SRAM
 512KB Flash
 LQFP48
 Usart x 3、i2C x 3、spi x 5、usbfs x 1
 Adc x 1(10) 、i2s x 5、crc x 1、tim x 8

stm32-base.org

2)USB audio
 USB        USB 1.1 FS 12Mbps
 データ        48kHz 16bit 2ch
 同期        シンクロナス
 DAC        PWM 2000分割(10.97bit)モノラル(ステレオ対応可)

3)開発ツール
 STM32CubeIDE(MX)    Version: 1.12.0
                    IDE    Version: 2.0.200.202301271415
                    MX    Version: 6.8.0-RC4
                     USB audio Middlewareに追記
 ST LINK                MiNI ST LINK V2
 MacBookAir            M1 2020 macOS Ventura 13.5.2
 USBハブ                Anker PowerExpand 8-in-1 USB-C PD 10Gbps データ ハブ
 イヤフォン            SONY MDR-E838LP
                    ■インピーダンス 16Ω
                    ■再生周波数帯域 10-23,000Hz
                    ■許容入力 50mW
                    ■感度 104dB/mW

3.課題
 STM32CubeMXのUSB audio Middlewareはかなり手を入れないと動かないらしいが改造を最小限にしたい
 Middlewareのコードとネットで調べた情報を元に順を追ってコードを作る
1)ホスト(macOS)との接続
 ・macOS    情報が少ない
 ・Linux        上手く繋がるらしい
 ・Windows    不具合の報告が多い

2)データハンドリング
 ・再生を停止すると再開しない仕様になっている
  再生再開のためのコード追記が必要

3)同期
 ・同期しない
  同期コード追記が必要

4.お手本
STM32でDDC/DCC開発 INDEX

hirasakastm32ddcdcc.blogspot.com

har-in-air/STM32F411_USB_AUDIO_DAC

github.com

5.解説
・ボードは手元にあるDSP内蔵のSTM32F4が実装されたBlackPillを使用する
DACは通常I2S外付のところデータ取込が目的のため動作確認のためのシンプルなPWMにした
・データはLch Rch両方デコードする
・同期はデバイス側のクロックをマスター側のクロックに追従させて再生するシンクロナス
 デバイス側のクロックで再生するアイソクロナスのコード実装は宿題

次は回路について