Si4710を使ったFMトランスミッタですが、うまく動かせないでいます。
ソフトとハードの両方の問題を抱えているようで、ひとまず作業ストップ。
とりあえず、現時点までの成果を備忘録がてら掲載します。
問題点
- Si4710をアナログ入力とした場合、Lチャンネルの音がまったく出ない。
QFNのはんだ付け不良でLチャンネル入力がつながっていない?
- Si4710をデジタル入力とした場合、送信出力が出ない。
QFNのはんだ付け不良でDCLK入力がつながっていない?
基板の外観
製作後の設計変更や修正でジャンパが増えてしまいました。
基板うら
回路図
画像をアップしたら、見にくくリサイズされてしまいました。
電源
PCからUSB経由で電源の供給を受けます。USBのVBUS端子の電圧は5Vで、ローパワーデバイスは100mA、ハイパワーデバイスは500mA(USB2.0)までです。500mAまで使用するには、PCのUSBコントローラと通信して使用電流を設定する必要があります。今回は、動作の自由度を考えてPCM2707をセルフパワーとして設定していますが、PC側で電源を遮断されることもなく、実際にはUSBから電源供給を受けるバスパワーとして動作させています。
それに、(高級なPCはともかく)現実的にはUSBコントローラ側で詳細に電流を管理しているとは思えず、実際にはセルフパワー扱いでも100mA以上の電流が取り出せるのではと思っています。(巷で売られているUSB携帯充電器とかUSB扇風機にコントローラチップが入っているとは思えません)
なお、USBの規格書は、usb.orgからダウンロードできます。が、ドキュメントが膨大でとても読み込めません。
USB miniBコネクタ
HDDケースにもともとついていたコネクタはUSB miniBコネクタでした。今まで使ったことのあるBコネクタは4ピンですが、このminiBコネクタは5ピンです。どうもUSB On-The-GoというUSB2.0を補足する規格に対応した"ID"端子が追加されている模様で、ホスト側(ID端子をGNDに接続)あるいはデバイス側(ID端子はオープン)かの判別に使われるそうです。とりあえずオープンにしておきます。
USBの信号電圧
VBUSは5Vですが、2つの信号線D+, D-の信号電圧は3.3V系です。USB機器が接続されたことをPC側に伝えるためD+端子のプルアップは3.3V系のロジックに接続します。
Si4710に内蔵されたバリキャップと外付けのコイルとで同調回路が構成されています。このコイルから2pFのコンデンサで出力を取り出すわけですが、2pFのインピーダンスはFM帯でも1kΩくらいあるのでかなり出力が低下します。図面では、さらに10dBのアッテネータを挿入しているので、出力レベルは実測で77dBuV(出力115dBuV設定時)くらいでした。
また、I2Cインターフェースは、バスラインをプルアップする必要があります。このプルアップ抵抗の決め方は、AVRのデータシートに記載されていました。SCLクロック周波数が100kHz以下なら、最小 (Vcc - 0.4V)/3mA から 最大1000 ns/Cbです。AVRの電源電圧は3.3Vなので、最小値は(3.3V-0.4V)/3mA = 約1kΩ。AVRの入力ピン容量は10pF、Si4710は50pF、I2Cバスの静電容量はよくわかりませんが、仮にこれらの合計を100 pFとすれば、最大1000 ns/100pF = 10kΩとなります。今回は、間をとって4.7kΩとしました。
PCM2707のROMに書かれたUSBディスクリプタ情報の書き換えを、SPIインターフェース経由で行います。前述のとおり、AVRに組み込まれた専用ハードは使用しませんでした。
AVRのクロック
Si4710をデジタル入力で使用するには、サンプルレート値を設定する必要があります。ところが、PCM2707からはそのような情報が直接的には出てきません。そこで、I2SのLRクロック周期を測定することにしました。
AVRには校正済みのRC発振器が内蔵されていますが、校正前の公称精度は±3%と役不足なのでクリスタルを使用しました。
AVRのISPコネクタ
AVR-ISPの標準コネクタは、2.5mmピッチの6ピンタイプです。しかし、このコネクタは高さが高過ぎてケースに入りません。そこで高さの低い、日本圧着端子製造(JST)のPHシリーズ(2mmピッチ)を選定しました。Digi-Keyで割安に買えるので今後の工作には同じメーカのXHシリーズ(2.5mmピッチ)やVHシリーズ(3.96mmピッチ)を使っていこうと思っています。ちなみにXHやVHがTDKラムダやコーセルの基板単体タイプの電源で採用されていることを意識しています。
0 件のコメント:
コメントを投稿