SSブログ

RP2040で音の実験、SDカードから鳴らす。 [DCCデコーダ]

 4か月ぶりですね。
 仕事がいまいちで、趣味が進みませんが、メモだけ書いておきます。
 Desktopstation様とDCC電子工作連合でRP2040を使ったDCCデコーダ(SmileSound)を作っていますが、SDカードの抜き差しで電車の音を変えられる据え置き型コントローラを作りたい!という話があり、SDカード(内蔵のFlashに比べ遅い)でどれだけ、ダメになるかを試してみました。
 ソースの方は現在使っているLittleFSSDに変える感じで、あとはほぼ一緒です。

 LittleFS.h
→SPI.h,SD.h

 LittleFS.begin();
→SD.begin(SS,SD_SCK_MHZ(32));
 SCKは上げて処理が速くなるようにしています。 

 f = LittleFS.open(inFile, "r");
→f = SD.open(inFile, "r");
という感じに機械的に変更すれば、とりあえず動きます。
 
 pinはSPI0のデフォルトを使います。(変更方法がわからなかった・・・。)
#define PIN_SPI0_MISO (16u)
#define PIN_SPI0_MOSI (19u)
#define PIN_SPI0_SCK (18u)
#define PIN_SPI0_SS (17u)

 で、それ用に適当に配線して、こんな感じです。
re_IMG20220618164430.jpg

 まあ、全体ではこんな感じで、
re_IMG20220618164513.jpg
 
 秋月のマイクロSDカードスロットDIP化キットを使用して、SD部分は下記のように繋ぎました。
sd_pico.png

 で、元々音の処理は85ms周期で音の処理をしていますが、無音状態で15msぐらいかかります。一音増やすごとに15ms程度処理時間が増えるため、同時に4~5音出すのがやっとでした・・・。
 44.1kHzで、1音当たり、音の処理に10ms、ファイルのヘッダ呼び出しに5msかかっています。
 
 ハマったところは、最初、SDカードのファイル一覧は見れるが、中身が化けてて変というのがあり、一度、スケッチからファイルを書いたら、読めるようになりました。それとも最初にちゃんとFAT32でフォーマットしないといけないかもですが。
 まあ、最終手段で、SDカード挿した後、内蔵のフラッシュに全部コピーして、それから動かすとやれば、SDの遅い呪縛から逃れられるというのはあります。

コメント(0) 

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。