2012年5月5日土曜日

SH-2A MP3再生

GWの成果です。
Interfaceの記事とソースコードを参考に、FatFsベースに構築したファイルシステムと、オープンソースのMP3デコーダのlibmadを使って、SH-2AでMP3再生ができました。

MP3は1152サンプル(ステレオだと×2サンプル)を1フレームと扱ってますが、1フレーム毎にSDカードからFAT経由でデータを読み出し、大容量RAMに展開(DMA転送)。libmadに1フレーム単位でデータを入力し、libmadからの1サンプル(ステレオで×2)毎の出力をSH-2AのPWMのデューティに設定し、PWM出力(ステレオ2ch)をステレオミニジャックを通して、イヤホンでMP3の音楽を聞けました!

PWMのデューティ設定って結構アバウト(44.1KHzは1サンプルで22.7usだけど、8bit分解能だと10.7us)だし、ボヤッとした音かと思いましたが、めっちゃ普通に音出てます!普段通勤時に聞いてるMP3プレーヤとそんなに変わりはありませんでした!

久々にマイコン動かしてて達成感がありました。

 写真の上ちょっと右に写ってる半固定抵抗が左右のボリュームです。その下に見えるのが、秋月で購入したステレオミニジャックです。

 -----------------------------------------------------------------------
2012/05/5

イヤホンではイマイチ動いてる感じがしないので、スピーカーを繋いでみました。秋月で150円、250円で売ってるスピーカーなので小さいのかと思ったら、エライでかい。。常時接続は重いし、持ち運び不便なので、もう使うことないかも。。。
というわけで、記念に動画をアップです。

2012年5月4日金曜日

SH-2A 基板

RX62N基板に続き、SH-2Aの基板作成を進めています。
今回はRX62N基板の時に失敗したなと思ったところを改善したつもりでしたが、 新たな失敗も多いです。
そこで、次回の基板作成時に向けて、改善点をメモっていきます。

  • ユニバーサル基板の4隅にスペーサーを付けてますが、どっかのサイトで、スペーサーを逆に(半田面ではなく部品面)付けて半田作業するとやりやすい、って書いてあって、なるほど!と思ったんですが、今回はギリギリに配置していて、スペーサーとマイコン基板と干渉してスペーサーを逆に取り付けは不可でした。。4隅のスペーサーは逆向きにも付けれるように考慮すること!!
  • 今回はギリギリに配置しているのですが、回路図も書かずにどんどん半田付けしていると、部品を配置する空間が無くなったケースが多かったです。。ちゃんと回路図書いてから半田付けすること!!(今回の回路図を遅ればせながら書き始めました)
  • SDカードスロットの半田付けは今回で3回目。。いい加減、飽きてきました。再利用できるモジュールはフラットケーブルなどで接続して使いまわせるようにする!!
  • SH-2Aマイコン基板のコネクタCN1、CN2、CN3を全て半田付けして基板に接続するとナカナカ抜けない。。新しい部品つけるときにブレッドボードで簡単にテストしてから半田付けしたいのですが、ナカナカ抜けないので、半田付けしてみてテストという場当たり的なやり方に。。RX62N基板の時はそこを考慮して連結フレームを使用していたのですが、今回は普通のソケットを使用。やっぱり連結フレームにしておけばよかった。。しかし、2x20を2列並んでるところは連結フレームにすると真ん中2列の配線はどうすればいいのか。。
  • 今回はMP3再生を実現するので、3.5mmミニジャックDIP化キットを使用しているのですが、再利用するための丸ピンソケットを準備してなかったため、2ピンが浮いたままに、、おまけに予備の普通のソケットを使ったため、ユルユル。。安定しない。。3.5mmミニジャックDIP化キット用に丸ピンソケットを準備すること!!
  • MP3再生のボリュームを調整するのに半固定抵抗を使用したのですが、ボリュームを調整するのにマイナスドライバを使用するのが面倒。。ちゃんと手で回せるボリュームを使用すること!!
回路図をアップします。

2012年5月1日火曜日

SH-2A SDカード制御

久々の投稿です。

RX62NでMP3再生を試みたのですが、オープンソースのソフトデコーダではRAM64KBはキツイ。。
ROM化など、少し頑張ってみたものの、デバッグできないのもキツイ。。

というわけで、SH-2Aに乗り換えです!(同じくInterface付録 ※2010年6月号)
更新が滞ってた主要因は新しいマイコンの立上げです。

ようやくSDカードアクセスが動くようになりました。






マイコンのクロックはRX62Nの96MHzから144MHzに上がってるのに速度落ちました。。
SPIモード、SDクロック24MHzでRead1.6MB/sです。
SH-2Aはキャッシュが付いてるけど、オフになってるとかかな。。

-----------------------------------------------------------------------
2012/05/1

SH-2Aは高速内蔵RAM64KB(CPUアクセス144MHz1サイクル、DMA 48MHz2サイクル)と、大容量RAM(CPUアクセス、DMAアクセスともに48MHz1サイクル)があります。
キャッシュは144MHz1サイクルなので、うまく使うとパフォーマンスを上げることができます。
スタック、グローバル変数、SDカードR/Wプログラムコードを高速内蔵RAMに配置し、SDカードアクセス(SPI)と大容量RAM(非キャッシュ)間をDMAで転送すると、Read約2.2MB/sまで上がりました。