Bubble, bubble, toil and cuddle !!!

November 23, 2012
XML
カテゴリ: 作りモノ
今日は雨がしょぼしょぼ降る天気やった。

こんな天気なので休養日にしようと家にこもってました。子ども(弐)が友達の家に遊びに行ってたので家が比較的静かでした。(^^;
---

まとまった時間が取れそうなので、手をつけようと思いつつ時間がとれなくてほったらかしになっていたBK-1088ラジオのソフトウェアをいじりました。

ATMega328PのTWIを使ってレジスタwriteはできて電源オンになってそうなところまでの確認はできていたのですが、readができなかったので、TWIでBK1088の(自称?)I2Cバスにアクセスするのは断念しました。

代わりにSCLとSDAをソフト的にヘコヘコさせることにしました。エラー処理は無しのやっつけですが、何とか作成し、レジスタreadできるところまでたどり着きました。やっぱり、データシート通りに、

スタートコンディション発行
デバイスID(0x80)のwrite
リードフラグを立てたレジスタアドレス((adr<<1)|0b1)をwrite
I2Cバスから上位バイトをread
I2Cバスから下位バイトをread

する必要がありました。デバイスIDのwriteをはさむとATMegaのTWIでは無理っぽい。

しかし、レジスタ初期値に問題があるのか、電源オン時のスピーカがボコッと鳴る音しかしません。ここは先日発見した中国の掲示板サイト(?)の情報に頼るしかないか... っちゅうことで、 BK1086/88默认初始化参数 を参考に初期値を書き込んでみました。すると、スピーカからザーッというノイズが!遂に音が出たッ! ズギュゥゥゥゥン

っちゅうことで、早速ロータリエンコーダで周波数と音量を可変するプログラムをでっち上げてみました。ちなみに、周波数を設定するときにはBAND設定の最小周波数を引いてから書き込むようです。これで、野望達成か?!と期待したのですが、可変できたのは音量だけ... 同調してるチャネルを表すレジスタ(0x0B)を読んでも周波数が変わる気配がありません。

??と思って、データシートをよく読んでみました。すると、チャネル設定レジスタ(0x03)のTUNEビットが何やら怪しげです。

Tune
0 = Disable
1 = enable Note: a pos edge can start the tune process and
during it TUNE must be 1 and SEEK must be 0

この部分はSEEKモードではなくTUNEモードにするときは1にするもんやと解釈してましたが、もしかして周波数設定するごとにTUNEビットの立上り(posedge)を作ってやらんといかんの??

っちゅうことで、周波数設定するときにTUNEビットに一旦'0'をwriteし、その後、'1'をwriteしてみると... おお、設定チャネルレジスタ(0x0B)の値が変わってるではあ~りませんか!! 遂にこのときが来たか... ゴゴゴゴゴゴゴゴゴゴゴゴ

BK1088ラジオを鳴らすためのポイントを整理すると、

(1) レジスタreadシーケンスはTWIでは無理っぽい
(2) データシートでReservedになってるレジスタと0x1E~0x28のレジスタにも中国掲示板サイトの値を書く(どれがホンマに必要かは未検証)
(3) 周波数設定する際に周波数設定レジスタ(0x03)のTUNEビットの立上りを作る必要がある
(4) 書き込む周波数はBANDの最小値を引いてからSPACEで割った値

ということみたいです。やっぱり(2)がイヤラシイところですかね。特に0x1E~0x28はデータシートではユーザアクセス不可でBEKENが個別対応しまっせ(ようけ買うてや←深読みしすぎ(^^)、みたいなことが書いてありますし。あと、(4)はややこしいのですが、10kHzセパレーションMWで810kHzを設定したいとき、SPACE=0b00(1kHzステップ)なら810-520(10kHzセパレーションMWの最小値)=290kHzを1kHzで割った値290を、SPACE=0b11(10kHzステップ)なら290kHzを10kHzで割った値29を設定するということのようです。(4)についてはこれでいいのか検証してくれる方募集中。

ただ、問題点もいくつかあって、

(a) レジスタアクセスするとキュルキュルという音がする(結構耳障り)
(b) 受信してる周波数が設定した値とずれる(上記(4)が怪しい??)
(c) ノイジー(^^;;

てな感じ。(b)は何か勘違いしてるような気がします。(c)は基板の作りの問題とプログラムの問題と両方あるのかなぁ。やっぱり、何もしてないときはATMega328Pはスリープにしとかんといかんのかも。今のプログラムではそこまで対応してない...

まぁ、何にせよ、モジュールが動作するっちゅうことが確認できたのでとりあえずはヨシとしましょうか。
--- 26:10 ---

参考までに、ソフトウェア版I2C関数とレジスタ設定関数を ココ に置きました。あくまで参考、無保証です。mainを作らないとこれだけでは動作しません。(^^;;

FMはノイズの影響が少ない
BK1088ラジオでFM受信中
--- 26:55 ---






お気に入りの記事を「いいね!」で応援しよう

Last updated  November 24, 2012 02:59:28 AM
コメント(2) | コメントを書く
[作りモノ] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Keyword Search

▼キーワード検索

Category

Favorite Blog

まだ登録されていません

Comments

sorriman @ Re:HP ProDesk 400 G4 DM をセットアップした(01/13) 情報ありがとうございます。 また自宅を2…
Wi-Fiアンテナは多分入ってると思います。@ Re:HP ProDesk 400 G4 DM をセットアップした(01/13) 始めまして。 この機種はまだお使いでしょ…
通りすがりの者です@ Re:LIFEBOOK U939/B に WANカードを載せた(01/21) 私のLIFEBOOKではnanoSIMを装着後に再起動…
aki@ Re:秋葉原に寄った(01/14) この様な書込大変失礼致します。日本も当…
BOOSAN@ Re:SPY x FAMILY CODE:White を観た(01/08) 私は明日、PERFECT DAYS観ます。ビム・ベ…

© Rakuten Group, Inc.
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: