圏9研究所 工作室

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

BlackPill

STM32F411 BlackPill CMSIS-DSPによる楽器用チューナー(7)コード

計測用コードのみ記載1.コード1)計測(1)<fft_peak.h> /** Project Name:FFT_F4 File Name:fft_peak.h Description: USB speaker with isochronous transfer Generation Information : Device : STM32F411CEU6 Version : 01 Created on : 2023/12/20 */ /** Copyri</fft_peak.h>…

STM32F411 BlackPill CMSIS-DSPによる楽器用チューナー(6)定数、変数、処理

1.定数一覧1)FFT シンボル 設定値 単位 内容 FS1 16000 = FSREAD / NK1 Hz FFT1次サンプリング周波数 マイク:160000 USB:48000/3 FT 4 (250msec) Hz 1/サンプリング時間 NS1 4000 = FS1 / FT 読込サンプル数 NFFT 4096 FFTサンプル数 NPOWER 2048 = NF…

STM32F411 BlackPill CMSIS-DSPによる楽器用チューナー(5) STM32CubeMX設定

1.設定一覧 2.ポートマップ 3.解説・表示用として I2C, LED, PWMを準備・TIM1はUSB Speakerのデバッグ専用 続く

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

1.概要 arm CMSIS-DSPライブラリの使用方法 STM32CubeIDE内蔵のCMSIS-DSPはバージョンが古くスプライン補間関数が使えなかったので最新版を導入する 2.先生とお手本1)先生(1)CMSIS-DSP導入方法について aptechlabs.com ioloa.com (2)スプライン補…

STM32F411 BlackPill CMSIS-DSPによる楽器用チューナー(3)トレースサポート実装

コーディング準備 1.トレースサポート実装1)概要 FFTの計算結果をモニターしたいので実装する デバッガのトレースサポート機能を使ってstdoutをデバッガのコンソールに接続してprintf関数等で状態を表示させる UARTを使って外部ターミナルに表示させるこ…

STM32F411 BlackPill CMSIS-DSPによる楽器用チューナー(2)仕様・課題・処理

目標仕様と課題及び処理方法について 1.目標仕様 項目 目標値 備考 用途 弦楽器の調弦 弦を使うピアノも含む 計測値 音名、セント値 オクターブ値は実用上必要ないので参考値とする 計測範囲 55[Hz]〜880[Hz] 下限がベース下限周波数より高いが下記により…

STM32F411 BlackPill CMSIS-DSPによる楽器用チューナー(1)概要

1.概要 ARM社のCMSIS-DSPライブラリーを使ってSTM32F411 Cortec-M4で楽器用チューナーを作ってみる 表示イメージ:YAMAHA TD-90 音名、周波数等はOLEDで表示 2.チューナー構成1)構成と課題 チューナーは周波数カウンターで出来ています 楽器の音には多…

STM32F411 BlackPill USB Speaker ISO(5) コード2/2

3)usbd_sp(1)<usbd_sp.h> /** Project Name: STM170_USB_SP_ISO File Name: usbd_sp.h Description: USB speaker with isochronous transfer Generation Information : Device : STM32F411CEU6 Version : 170 Created on : 2023/11/24 */ /** Copyright (c) 2023 l</usbd_sp.h>…

STM32F411 BlackPill USB Speaker ISO(5) コード1/2

1.コード1)main(1)<main.h> /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "usbd_sp.h” (2)<main.c> /* USER CODE BEGIN WHILE */ usbd_sp_iso(); while (1) { 2)USBD AUDIO(1)<usbd_conf.c></usbd_conf.c></main.c></main.h>…

STM32F411 BlackPill USB Speaker ISO(4) ファイル、定数、変数、シーケンス

1.ファイル一覧1)mainシーケンス関連 ファイル名 修正 追加 <main.h> ー ・#include "usbd_sp.h" <main.c> ー ・usbd_sp() 呼び出し <stm32f4xx_it.c> ・デバッグ用 <usbd_sp.h> 定数定義 <usbd_sp.c> メインシーケンス実装 2)usbd audio関連 ファイル名 関数/定義 修正追加内容 <usbd_audio.h> #define USB_AUDIO_CONFIG_DE</usbd_audio.h></usbd_sp.c></usbd_sp.h></stm32f4xx_it.c></main.c></main.h>…

STM32F411 BlackPill USB Speaker ISO(3) STM32CubeMX設定

1.設定一覧 2.ポートマップ 3.解説 前回比 ・TIM1はデバッグ専用 ・ポートにSWO追加 次のプロジェクトのデバッグでprintfを使うため コード未実装 次はファイル構成等

STM32F411 BlackPill USB Speaker ISO(2)アイソクロナス転送

アイソクロナス転送の詳細 1.エンドポイント1)仕様書 Universal Serial Bus Device Class Definition for Audio Devices Release 1.0 March 18, 1998 4.6 AudioStreaming Endpoint Descriptors 2)受信用エンドポイント Audio Data Endpoint Descriptor…

STM32F411 BlackPill USB Speaker ISO(1)概要

1.経緯 宿題のアイソクロナス転送 USB Speaker 2.システム概要・STM32F411 BlackPill USB Speaker をアイソクロナス転送にする・ハードウェアは変更なしソフトのみ変更 3.手順1)アイソクロナス転送実装・受信用エンドポイントをアイソクロナス転送タ…

STM32F411 BlackPill USB Speaker(9)まとめ

1.追加変更コード一覧 main.h と main.c に書いたメインシーケンス処理コードを別ファイルにしてまとめる dir File Function 内容 Core usbd_sp.h ー 追加定数等定義 usbd_sp.c usbd_sp_iso() メインシーケンス main.h ー 定数定義 include main.c ー メイ…

STM32F411 BlackPill USB Speaker(8)同期

1.データ数同期1)サンプリング数とDMA PWM出力数の同期・TIM1割込関数にTransferComplete_CallBack_FS() とHalfTransfer_CallBack_FS()を追記する 2)データ数調整(1)データ数のコード ・コードを見ると AUDIO_AudioCmd_FS() の size数が±4 調整され…

STM32F411 BlackPill USB Speaker(7)メインシーケンス

1.メインシーケンス seq 処理内容 次への遷移条件 SEQ_START AUDIO_CMD_START 処理後 初回audio data開始 SEQ_PLAY ・DMAバッファポインタ初期化 ・タイマー起動 ・DMA起動 SEQ_PLAY AUDIO_CMD_PLAY haudio->alt_setting == 0U 再生停止 audio data出力 SE…

STM32F411 BlackPill USB Speaker(6)USB audio data 転送処理

メインシーケンス作成のためデータハンドリング内容と定数を整理 1.オーディオデータ遷移1)オーディオデータバッファとDAC PWMデータ遷移 関数 バッファ クロック 処理 ホスト ー ー ホスト 1msec毎に1 PACKETオーディオデータを送信 デバイス USBD_AUDI…

STM32F411 BlackPill USB Speaker(5)USB接続ダウン対策

ホストとの接続が不安定なため対策しておきます 1. USB接続ダウン発生状況と対策1)USB接続ダウン状況(1)発生状況 発生するのは ・USBコネクタ接続直後 USBリセット解除から80msec後付近 ・再生停止 ・ホスト側でのスピーカー選択解除 概ね50%の確率で…

STM32F411 BlackPill USB Speaker(4)STM32CubeMX設定

1.設定一覧 2.STM32CubeMX タイマー設定 赤枠内:TIM2カウンタアップデートをTIM1クロックとして使うために必要な設定 3.ポートマップ(2)回路 に記載 4.解説・TIM2_TRGO(TIM2出力)をTIM1クロック源にする設定 TIM1のTrigger Source 設定でITR0を選…

STM32F411 BlackPill USB Speaker(3)PWM DAC構成

1.ブロック図 2.構成説明1)PWM ・周期 サンプリング周波数より 1/48kHz ・分解能 システムクロック96MHzをクロックとして 2000 2)オーディオデータ ・USBデータバッファ合計 Middleware実装値 48 * 80 パケット: 15360byte/ms ・仕様と変換 48kHz 16…

STM32F411 BlackPill USB Speaker(2)回路

1.ポートマップ PIN IO EX PU PD NAME Function OSC-IN ー ー ー ー ← 25MHz system clock OSC-OUT ー ー ー ー ← JTMS/SWDIO[PA13] ー ー ー ー ← Debug SWD JTCK/SWCLK[PA14] ー ー ー ー ← PA11/USBDM ー ー ー ー ← USB D- PA12/USBDP ー ー ー ー ← U…

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チップ…