マイコン工作実験日記

Microcontroller を用いての工作、実験記録

SDカードへの通話録音

2009-01-29 23:22:30 | W-SIM
SDカードアクセスができるようになったので、通話音声を録音してみます。とりあえずは、相手側の音声だけを録音です。録音は常におこなうこととし、オフフックした時点でファイル(rec.wav)をオープンすることにしました。WAVファイルのヘッダを書いたら、あとは20ms毎に160バイトづつ書き込んでいくだけです。そしてオンフックされたらヘッダ部分のデータ長部分を更新してファイルをクローズさせます。以下、動作の様子。
> Off-Hook
-I- SD/MMC card initialization successful
-I- Card size: 1882 MB
-I- Block size: 1024 Bytes
DTMF: 1
DTMF: 7
DTMF: 7
ATDT177##0
CONNECT 120000
connected!!
PROGIND:1
On-Hook
ATH
SD_Stop
newname = rec118.wav
SD_Stop
DISC
OK

>
ファイルをクローズしたら、ファイル名を変更しています。今のところブートからの経過秒数をつかってrecXXX.wavという名前にすることにしています。上の例の場合には、以下に示すようにrec118.wavというファイルが作成されています。ホントはファイル名で日付/時刻も表現したいところですが、LFNが使えないのでこれで我慢です。
> fat
-I- SD/MMC card initialization successful
-I- Card size: 1882 MB
-I- Block size: 1024 Bytes

shows directory list...
---------------------
 6676127 2008/11/23 21:09:54 AT91SA~1.PDF
  461024 2008/12/10 18:58:04 AT91SA~2.PDF
  245178 2009/01/01 00:00:00 rec118.wav
     122 2009/01/25 13:59:44 sample.txt
---------------------

dumping sample.txt...
---------------------
This is a sample text file created on the Windows.
If you can read this message, it means you can
access the FAT file.
---------------------
>
Windows Media Playerで再生してみましたが、問題なく録音できているようです。とは言っても、改善すべき点もいくつかあります。
  1. カードの抜挿を検出していないので、オフフックする度にf_mount操作をおこなっている。抜挿を検出して無駄なf_mountを無くしたい。
  2. 相手側音声しか録音していないので、ほんとの会話録音にはなっていない。上り音声も録音すべき。ミックスするまでもなく、ステレオ形式で書き込んで簡単に対応してしまおうかと考えています。
  3. やっぱり、ファイルにタイムスタンプが無いのは淋しいなぁ
順次対処していくことにしましょう。

最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (そら。)
2009-01-30 00:49:33
SDカードを抜挿するとSDカードのアクセスモードが元に戻るのでその初期化はf_mount外で行う必要がありそうですね。

そうなるとオフフックする度にf_mount操作でも良い様な・・・
返信する
Re: Unknown (sirius506)
2009-01-30 16:42:16
そうですね、ご指摘のようにカードが挿入されたなら、SDモードへの初期化手順を実行する必要があります。わたしの場合、この初期化処理は FatFsの下位レイヤI/Fのdisk_initialize()の中で実行しています。

f_mount()を実行すると、fs_typeがクリアされますが、auto_mount()ではこの値がクリアされていると disk_initialize()を呼び出すようになっています。したがい、f_mount()をしておけば、その後でSDの初期化手順が走ることが保証されることになります。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。