RDA5830 aitendo FM/AMラジオモジュール覚え

最終更新日

思うところあって、久しぶりのDSPラジオ作り。I2CでコントロールできてAM(MW)も受信できる手持ちを探します。aitendoのRDA5830モジュールが部品箱の隅っこのほうでシクシク泣いてました。この子を使います。

資料としては英文データシート中文のプログラミング ガイド、ソースコード作例はpudnサイトのそれを参考にしました。以下、覚えを列挙します。

電源電圧は1.8V-5.5V対応です。でもI2Cバスは3Vなので3Vで動作させます。

コントロール用のMCUは一からハンダするのも面倒です。arduinoIDEが楽なので、strawberry linux社販売のDa Vinciを使います。この子も、いつ部品箱に来たのかどうか。迷い子基板です。

Da Vinciはarduinoブートローダーが入っていないバージョンです。面倒ですけどarduino化(Arduino/Genuino Micro)します。Arduino周辺も内紛が一応収束したので、IDEも1.8で両者統合されて使いやすくなってます。USBasp経由でブートローダーのhexを書き込みました。

Da Vinciの動作は5Vです。I2C用にはレベルシフトが必要となります。その回路はお決まりのBSS138でやりました

コントロールも安直にarduinoのwireライブラリを使います。

Arduino/Genuino Microの場合、 SDLはD3,SDAはD2ピンに割り当てられています。ふつーのArduino君はアナログピンに当てられているので、その感覚で配線すると相手側はうんとすんとも言いません。

ところで、Da Vinci基板のピン配列とArduino/Genuino Microのピン配列の対応関係については、kosakalabさんの、マイコンボード「Da Vinci 32U」(ATmeg32U4)を使う、がとても有益な情報です。

wireライブラリを使うとI2Cの読み出し、書き込みは簡単です。

RDA5830のアドレスは7ビット 0010001b (0x11)です。8ビットなら下位ビットを一つ落とす必要がありますが7ビットだとなにも考えることはありません。つまりRDA5830のレジスタ書き込みは

Wire.beginTransmission(0x11);
Wire.write(レジスタ);
Wire.write(データ16ビット上位8ビット);
Wire.write(下位8ビット);
Wire.endTransmission();

で終わりです。

FM/AM受信動作に最低必要なレジスタは

02H(電源、ミュート)
03H(FM周波数設定)
05H(ボリュームコントロール)
40H(AM/FM切り替え)
72H(AM周波数設定)

の5つです。FMだけなら、02,03,05,40,AMだけなら02,05,40,72となります。

先のソースを見ると、データシート、プログラミングガイドに掲載されていない「隠しレジスタ」が結構ありそうです。でも詳細不明なのでそっとしておきます。

またRDSとか(それに伴うI2Sとか)のレジスタを使わないとすれば、自分的には上の5つに加え周波数読み出しの0AHを触るだけで十分実用になります。

FM周波数設定ではまりました。データシートの表に誤記があって、その誤記をさらに誤読しました。

およそ2時間ぐらいは希望周波数に同調できず、迷路をグルグル回ってました。最初から中文ガイドとソースを見ていれば問題はなかったのですが、そういうことは出来ない体質です。

また躓くかもしれないので周波数データ設定手順を覚え書きしておきます。

例として、(1)日本のワイドバンド設定(76-108MHz)、(2)選局幅は100KHzごと、(3)同調周波数は80MHzとします。この場合の03Hレジスタのデータ値は次のようになります。

目的周波数をFreqとすれば Freq = 100KHz x CHAN + 76MHz(下限周波数)。選局幅のステップ数を表すCHANがレジスタの下位7ビットから最上位(16)を占有します。

Freqが80MHzならCHAN は40なので、それを左に6ビットシフトしておきます(16進数表現で0xA00)。

これに下位6ビットの設定を加えます。中身はTUNEのON,バンド幅設定、選局幅設定のデータです。TUNEをON、バンド幅設定はワイド、選局幅が100KHzなので、011000b = 0x18となります。

結果0xA00 + 0x18で、0xA18が03Hに書き込むデータとなります。

AM周波数の設定の方は単純です。72Hに、KHzの10進数を書き込めば選局完了です。

なおAMの場合は180uH〜500uH程度のバーアンテナが回路に必要です。そこでジャンク箱から480uH程度のLCRメーター値をもったものを救い出して接続しました。

肝心の受信感度(実感)はといえば、満足してます。今までいくつか試したFM用DSPチップの中でも上位に位置すると思います。AM用DSPの経験はありませんがNHK第一、第二、HBC、STVがバーアンテナだけでコンクリートに包囲された作業場で普通に受信できています。じつはSONYのSW7600GRより耳感度がよろしい感じがしてます。

Y-Labさんのaitendo DSPラジオモジュール比較表を見ても感度値がいいデバイスのようです。

さて、これを使ってあれこれするのがこの春の工作テーマということになりますが、息切れしないように頑張ってみます。

3件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


コメントする