2008年2月アーカイブ

いよいよ、SDカードからの再生にチャレンジしました。FAT32限定で、ショートファイル名を指定して再生できるようになりました。

(写真は変わった感じがしないですね…)

SDカードはChanさんのサイトにある「MMCの使いかた」を参考にさせていただきました。Chanさんに感謝。

 

曲名の指定等はすべてシリアル通信経由にしました。あと、本家VLSIで公開されているスペクトラムアナライザーのコードを導入してみました。通信画面のカーソル左横にあるのがそれです。標準だと14バンドごとに0~31(3dBステップ)の値が得られるようになっているので、簡単です。

ちなみに、ハマった点がいくつか。SDカードのVS1011eへの書き込みコマンドや読み込みコマンドの直後、DREQが一旦Lになったあと、Hに戻るのを確認しなければなりません。(ちゃんとデータシートにも書いてありました)。それを確認せずに次のコマンドを実行しても、無視されてたり、値が違っていたりします。

それと、SDカードに直接は関係ないですが、MBR(マスタブートレコード)のファイルシステムタイプが要注意でした。今回はFAT32のみ対応のつもりだったのですが、FAT32でフォーマットしたはずのSDカードで、MBRのファイルシステムタイプが0x06(FAT16)となっていました。フォーマットしたときにMBRを書き換えてない可能性が高いですね。パーティションを分ければ当然MBRの編集がかかるはずですが。(でもSDカードでパーティション分けてる例を見たことがないです(笑))。そうなると、ファイルシステムタイプはチェック対象に入れない方がいいような気がしました。

それにしても、メモリが少ないのはつらいですね。今回使っているATmega168では1KBなので、スタック等で最低限必要な分を除くと、2セクタ入らないんです。やっぱり効率的なSDカードアクセスには、FATやディレクトリエントリを読むためのバッファと、MP3のデータを読むバッファの最低2つは確保したいところ。しかも、MP3の再生と同時にSDカードの別ファイルを開くとかとなると、音切れ防止のためにはMP3データバッファがいくつも欲しいです。

秋月で最近扱い始めたATmega644Pを注文したので、届いたら切り替えてみます。メモリが4KBなので、それなりに色々出来るんじゃないかな…。

今日はVS1011eの評価をしました。昨日作っておいたVS1011e基板(変換基板に載せて、必要な足を引っぱり出したのん)とATmega168をつなげて、パソコンからシリアル経由で転送したMP3を再生させました。

シリアルの速度を500000bps(反則w)、MP3のビットレートは午後のこ~だの設定中で最低の64kbpsにして変換。

こんな感じです。ブレッドボード中央がVS1011e、あとはAVR、SDカードコネクタ、USBシリアル基板(左上)

結果は・・・

ノイズが多いです。まあ、ブレッドボード組みだし、オーディオ出力の所に付けるべきCR類を省略してしまってますし、仕方ないでしょう。音質はMP3のビットレート下げすぎなので善し悪しが分からないです。

それにしても、USBシリアルって遅いですね。500000bpsなんていう半端なビットレートを素直に受け付けてもらえるのは助かりますが。転送元のパソコンでこうやってブログ書いてるだけでも、曲がトーンダウンして止まりかけたりします(笑) テンポが変わってしまうのは、モード設定でストリーミング(SCI_MODEの第6ビット)が有効になっていた為でした。ストリーミングをOFFにすると、テンポの変動は無くなりました。めでたしめでたし。ただし、転送速度が速くなった訳ではないので、追いつかなくなるとポツっと一瞬切れます。

次回はSDカードからの読み込みにチャレンジ。

気を取り直してもう一度PSoCUSBEvalでのCapSenseにチャレンジしてみました。

PSoCDesignerをアップデートしてCSDが使えるようになったので、CSDでやってみました。(前回はCSRでした)

詳しい原理はちゃんと読んでいませんが、検出アルゴリズムの改良により検出精度などが向上したそうです。

簡単簡単。あっさり動いてしまいました。

ちなみに、Modulator用のCRには、C=0.01μF、R=2.2kΩを使いました。(データシートのオススメ値のまんま)

CY8C24794の場合、CSDの構成が3パターン選べるようになっており、"CSD with PRS8 as clock source" を選びました。(PRS16でも検出できましたが、結構反応の遅さが目立ちました。一瞬触れただけだと無視されることしばしば)

それにしても、Cypressの開発環境は良く出来ていますね。開発スピードがとても速いです。(評価ボードも良くできてるので)

MP3プレイヤーについてはCapSenseのパターンだけはしっかり考える必要がありそうですね。CSDの使用方法そのものはとても簡単なので。

ちなみにCY8C21334を使ったCSDテストパターンを準備していたんですが、なんか基板作る気が無くなってきました。評価ボードでテストできたからいいかな、と・・・。

今回のMP3プレイヤー計画では、入力にCanSenseを使おうと考え中(まるでiPod!)。

手元にCY8C21334が2個ほど転がっているので活用したいが、なんせ初めてなのでどうしたものか。基板いきなり作ってうまくいくのだろうか。

テスト基板作るか~。時間かかるなぁ。

ちなみに、PSoCUSBEvalでCapSenseを使おうとしたがうまくいかなかった。CapSenseのパターンもあるし、PSoCDesignerでCSRが選べるのでてっきり出来るものだと思っていたのに。どうやら24794では使えないとかいう噂も。単にやり方がまずかっただけかもしれないけど。

ずーっと考えるだけで作品にならなかったMP3プレイヤー計画を、
今度こそ作品にしよう。

当初はShuffleのようなシンプルな物を想定していたが、最近やたら音楽を聴くようになって
曲数が増えたので、画面が欲しくなってしまった(笑)

というわけで、SparkfunのOLED(128x128、262kcolor)を買って試してみた。

ああ、作業机散らかりすぎ…。サンプル画像がバンブー○レードなのは気にしない(笑)

参考資料がいまいち読みにくいので不安だったが、難なく表示できた。すげーー。
これから128x128をいかに上手く利用するか考えねば。

つぎはMP3プレイヤーの心臓、デコードチップの評価をしよう。

このアーカイブについて

このページには、2008年2月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2007年6月です。

次のアーカイブは2008年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.04