マイコン工作実験日記

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

FMチューナモジュール - その2

2008-10-19 00:27:47 | Weblog
FMチューナモジュールの動作試験する基板を新たに作成するのも面倒なので、以前TechToysのLCD動作試験に使用したボードを流用することにしました。たかが、動作試験なのでYukiさんみたいにAVRとブレッドボードとかでできれば便利なのですが、AT91SAM7のヘッダボードはピン数が多いので2列になってしまっているためブレッドボードが使えません。

当初、SPIでつなぐつもりでしたが資料を見ると26bitという半端な数字のコマンドデータを送る必要があります。おまけに書き込みと読み出しでタイミングが違っているので扱いが面倒そうです。なんだか、変わった仕様に感じるのですがSilabsのSi4702も同じタイミングになっているようです。そんなわけで、Yukiさんと同じくI²C(TWI)を使うことにしました。



単にモジュールをTWI端子につないで、アンテナ用に約1mのビニル線(紫色)を付けただけです。アンプもスピーカも無いので音は出ませんが、レジスタ見れば選局動作の確認くらいはできますから、音が出ているイメージを妄想で補いながら遊ぶことにしました。



もともとTWIの端子はLCDをつなぐのに使っていたピンなので、LCDは付けずに使います。LCD制御に使うピンを配線しなおしてやればいいんですが、まずはFMチューナの動作確認です。いつものようにUSB CDCを使ってPCと接続、最初にレジスタが読み出せることの確認です。

# 以下の説明は、AR1000の資料があることを前提で書いています。



レジスタの初期値は、資料に記載されているディフォルト値とは違っている箇所もあるようですが、不定になる箇所があるのかもしれません。しかし、チップのバージョンを示すRead Onlyのレジスタの値が資料の記述と違っています。資料が古くて、実際にモジュールで使われているチップのバージョンの方が新しいようにも読みとれます。しかし、資料の初期値説明の箇所もバージョン表記があいまいで、RevFについて説明しているのかRevEについて説明しているのかはっきりしません。うーん、いかにも台湾/中国的?!

資料の初期値を書き込んで、Yukiさんのコードにならって選局操作(TUNE)を実行してみます。選局の際には周波数を指定してやりますが、ここでは80.0MHz(TOKYO FM)を指定しています。



選局の結果としては受信信号の強さを示すRSSIという値とIF_CNTという値が返ってきます。なんでもIF_CNTは250近辺の数字が出ていれば良いようです。上に示したように、わざと周波数をずらして指定すると、RSSIの値はさほど変わらないのにIF_CNTは大きくはずれていることがわかります。

続いて自動選局(SEEK)の試験です。自動選局ではRSSIの閾値を指定してやります。現在選局している周波数から始めて、閾値以上の受信信号がある局をサーチしていきます。次の例ではRSSIが50以上の局だけがSEEKの結果、見つかっていることが確認できます。閾値を小さくすれば、信号の弱い局もつかまえるようになります。なお、サーチしている最中に定期的にRCHANの値を表示してやることで、どのあたりをサーチしているかを確認することができます。



上の例では82.5の次は、108.0まで探しも見つからないので76.0に戻って探した結果、77.1をつかまえています。R3のB15を反転してやるとサーチする方向が逆になります。



R10のB3を0にすると、上限/下限周波数に達したところでサーチを中止し、FAILのステータスが返ります。



これまでに動作確認できたのは、こんなところです。次はちゃんと音が出るようにしたいのですが、LCDとスピーカつけるためにはちゃんとケースに入れることを考えた方が良さそうです。