プロが教えるわが家の防犯対策術!

aitendo M6951でラジオを製作しようとしているのですが、音声が出て来なくて悩んでいます。
このモジュール、もしくは関連するモジュールで製作に成功された方に質問です。

(1)aitendoのHP(http://www.aitendo.com/product/7011)に記載されている回路図ではGND,AGNDに対して接地する様明示されていませんが、これらはすべてまとめてGNDに落として差し支えないのでしょうか。それとも何も接続しないのが正解なのでしょうか。

(2)回路図を見るとI2Cバスラインに[PON]というものが付随しています。これはVCCを印加すべきなのでしょうか。それとも電源投入に伴いモジュール側でHレベルになるものなのでしょうか。

(3)回路図では、スピーカーをLOUT,ROUTに接続する様記載されていますが、このままで正しいでしょうか。

(4)HPからダウンロードできるデータシートに記載されているレジスタマップを元に設定を行っていますが、どの様に設定なさっているでしょうか。当方が試みた設定を抜粋すると、

アドレス0x00の7ビットを1(power_ON)にし、同アドレス6ビットを0(AMモード)
アドレス0x01の7~3ビットを00001(MW,520-1710KHz,5step)
アドレス0x02の4~0、アドレス0x03の全ビットを使ってAMの1440kHz(試験的に当方在住地のAMラジオ局)に設定(1440/5=288を設定)
アドレス0x06の7~2ビットで音量を最大の63に設定(b’11111’)
アドレス0x0Bの7ビットを1(channelADC disable)、5ビットを0(analog&RF enable)

主に以上の様な設定を書き込んでいます。
試験動作として、AM1440kHZのラジオ番組がスピーカーから流れてくれたら成功と考えています。

現状でPIC18F2520をマスタとしたI2C通信は滞りなく行われています(衝突なし、スタートコンディション発行問題なし、ACK検出、ストップコンディション発行問題なし)が、予期しているAM1440KHzの受信がなく、スピーカーからサンドノイズすら発してくれない状態です。

ハード、ソフト両面でアドバイス頂けたら幸甚です。宜しくお願いします。

A 回答 (1件)

(1)


GNDはまとめて落としておけば間違いが無いと思います。AGNDの方は分かりません。

(2)
回路を見なければ分かりませんが、とりあえずプルアップしておけばよいと思います。
なおI2Cとは無関係かと思います。

(3)
抵抗の高い、小さいスピーカーであれば直結でよいでしょう。

(4)
気になるところとしては、
・0x01のambandと0x02-0x03のChanを両方セットしているようですが、ambandのother以外の値は自動シークの設定ではないでしょうか。
・0x02のRef_32k_modeはどう設定していますか?
・0x09 bit3のpd_adc_volを1にしないと音量は外付け抵抗での設定になるようです。
・データシートに0x0Bが2つあり、どちらかのアドレスは間違っていそうです。
・アンテナは何を使っていますか?

また、I2C通信が行われていることの確認ですが、レジスタは読み書きできるので書き込んだ値がきちんと読み出せるかを見るとよいでしょう。

この回答への補足

早速のアドバイスありがとうございます。
(1)~(3)の配線に関して、はっきりしたので助かりました。

レジスタ設定に関してですが、
>0x01のambandと0x02-0x03のChanを両方セットしているようですが、ambandのother以外の値は自動シークの設定ではないでしょうか。
データシートから、仰る通りアドレス0x01のambandは自動シーク設定の設定であると思います。
周波数直接指定をする場合には直接関係ない設定ですが、アドレス0x02,0x03でのチャンネル設定の際に計算がしやすい様にと考えてambandを5kHzステップにした経緯です。
因みにアドレス0x02,0x03でのチャンネル設定で「聴きたい周波数」にセットできると解釈しているのですが、この解釈で正しいでしょうか?

>0x02のRef_32k_modeはどう設定していますか?
基板実装の32.768kHz(デフォルト値)にしています。

>0x09 bit3のpd_adc_volを1にしないと音量は外付け抵抗での設定になるようです。
1に設定していました。書き漏らしておりまして申し訳ありません。
>データシートに0x0Bが2つあり、どちらかのアドレスは間違っていそうです。
ホームページに別添されているレジスタマップをみるとアドレス0x0Aはリザーブの様で、ふたつめの0x0Bが0x0Cになる様です。質問本文で0x0Bとあるのは0x0Cの間違いです。

>アンテナは何を使っていますか?
aitendoから購入したバーアンテナを使用しています。

レジスタ値の確認をするべきとのアドバイスを頂き、現在リードプログラムを組んでいるのですが、予期した値が出力されていない事が分かりました。

データシートの記載から、書き込みは
(1)スタートコンディション発行
(2)デバイスアドレス[0010000]+書き込みモード[0]を送信
(3)書き込み開始アドレス[0x00]送信
(4)書き込みデータを13個連続で送信
(5)ストップコンディション発行

読み出しは
(1)スタートコンディション発行
(2)デバイスアドレス[0010000]+書き込みモード[0]を送信
(3)読み出し開始アドレス[0x00]送信
(4)ストップコンディション発行
(5)スタートコンディション発行
(6)デバイスアドレス[0010000]+読み出しモード[1]を送信
(7)13個連続で読み出し
(8)ストップコンディション発行
というフローで動作させ、USARTで読み出し値を出力させている状況です。

モジュールのアドレスがデータシートに明示されておらず、読み出し/書き込みタイミングシートに記載されているアドレス値がそれであると仮定して進めています。
モジュールからのACKが返ってきている事からデバイスアドレスは間違っていないのかなと考えています。
このモジュールならではのI2C通信制御等あればアドバイス頂けたらと思います。

補足日時:2013/10/13 11:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!