2009年10月18日

Si570 AVRでのI2C制御

DSC01656.jpg     DSC01657.jpg

明日から、緊急で出張になったのでその準備で色々忙しく、ゆっくり検討ができなかったのですが、気になっていたSi570をAVRでI2C制御してみました。
勿論、言語はBASICです。

結果としては、動かせることがわかりましたが、Si570のドキュメントには、制御仕様が簡単にしか書いてなく、周波数の書き換えの所は試行錯誤の末、うまくいきました。
他にも方法があるのかもしれませんが、とりあえずこれで任意の周波数が設定できます。

Si570自身は小さいICですので、ひっくり返してDIP8Pinに変換しました。
マイコンは、秋月で¥100のATTiny2313を3.3Vで使用しています。これは、Si570が3.3V動作のためです。
マイコンのクロックは、内蔵の8MHzを使用しました。
I2Cのスピードがどの位になっているのかは見れていませんが、200KHz〜400KHzの間だと思います。
周波数設定のための一連の制御が、ラフに1mS位で送れているようです。
仕様書によれば、周波数変更のための時間は10mS以内にするように規定されています。
今回てこずったのは、手順として、DCOをフリーズして、周波数を設定し、その後NewFreqを送信するように書いてあるのですが、NewFreqを送る前に、FreezeDCOを解除して、NewFreqを送ると書き込んだ周波数が設定されるようになりました。
約1mSで書き換えられていますので、エンコーダーでの周波数可変に十分追随できるスピードです。
とりあえず、設定した周波数は7MHzです(^o^)
実験の写真でマイコンが2個写っていますが、隣は関係ありません。

USB Si570_4.JPG

BASCO-AVRのプログラムは以下の通りです。
各レジスタの値を変えることによって周波数の設定ができます。
実際には、このレジスタの値をエンコーダー等で変えるようにプログラムを作る必要があります。
Si570の基本制御はこれでOKですので、自分で作ろうとされる方には、十分な情報となるかと思います。
実機に搭載するのはいつことになるやら.....

Dim I2cad As Byte
Dim I2cdata As Byte
Dim I2creg As Byte

Ddrb = &B1111111
Portb = 0
Ddrd = &B111111
Portd = 0

Config Scl = Portb.0
Config Sda = Portb.1
Config I2cdelay = 1
I2cinit

I2cad = &HAA

Main:

I2creg = 137
I2cdata = &H20
Gosub I2cdatatx


I2creg = 7
I2cdata = &H7A
Gosub I2cdatatx

I2creg = 8
I2cdata = &H42
Gosub I2cdatatx

I2creg = 9
I2cdata = &HDA
Gosub I2cdatatx

I2creg = 10
I2cdata = &H47
Gosub I2cdatatx

I2creg = 11
I2cdata = &HED
Gosub I2cdatatx

I2creg = 12
I2cdata = &H46
Gosub I2cdatatx

I2creg = 137
I2cdata = &H00
Gosub I2cdatatx

I2creg = 135
I2cdata = &H40
Gosub I2cdatatx

Wait 1

Goto Main

I2cdatatx:
I2cstart
I2cwbyte I2cad
I2cwbyte I2creg
I2cwbyte I2cdata
I2cstop
Return

posted by jn3xby at 20:16| Comment(5) | TrackBack(0) | QRP-HomeBrew
この記事へのコメント
こんばんは
2.4Gのトランシーバを作るべく親機(430)が
やっと完成しました。
あとは2.4の送信ブロックの完成です
ローカルのOMさんに2.4で電波を出してもらって何とかクロスバンドQSOは出来ました。
なんか最近は、より高い周波数にシフトして
います
阿部
Posted by 阿部/JZA7LGC at 2009年10月22日 19:10
LGC 阿部さん、こんばんは。
コメントありがとうございます。
そうですね!UHFの方に移られてるようですね!
当局には、まだまだ実力がありません。
Si570は高い周波数も出せるものがあるので
UHFの局発もダイレクト化が可能かもしれません。
Posted by jn3xby@岩永 at 2009年10月22日 21:42
岩永さんこんばんは。

とても面白そうなデバイスですね。

今、秋月DDSをAVRで制御して、局発を作っています。

オリジナルな回路ではありませんが、9逓倍して、FM受信ユニット(アイテック製)に入力して、144MHz帯の受信に成功しました。
(感度はあまりよくありませんが・・・)

このデバイスを制御できれば、バッファ回路などを搭載して、局発としての安定を図れば、逓倍回路なしでVHF帯の局発として使えそうですね。

I2Cの制御をしたことはありませんが、ネットで調べて実際に実験してみたいと考えております。

貴重な情報ありがとうございます。

Posted by しんいち at 2009年11月12日 20:54
しんいちさん、こんばんは。
そうですか、AVRで秋月DDSを制御して2mのRXですか!
9逓倍との事、面白そうですね!
Si570だと直接発振させられますが、制御の仕方がまだつかめていません。
単発の発振制御ができただけです。
最近、ちょっとばかし本業が忙しく、手が回っていません。
もし検討され良い結果がでたら教えてくださいね!
Posted by jn3xby@岩永 at 2009年11月14日 22:43
岩永さん、こんにちは。

しんいちです。

本業が忙しいとのこと。また、お時間ができましたら、レポート楽しみにしています。
I2Cはやったことがないので、勉強のための教材をWEBで探しているところです。

秋月DDSの方は、これもWEBで説明されているサイトで勉強して、なんとか出来ました。

しかし、浮動小数点?演算のところで躓いていますが、なんとか、受信しております。
(20KHzステップの箇所で躓きました)

前々からマイコンを使った工作がしたかったのですが、AVRは簡単に導入ができ、すばらしいと思います。

2mRXのことは、当方のブログへそのうちアップしたいと思います。

それでは、失礼します。

Posted by しんいち at 2009年11月15日 16:16
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/33004957

この記事へのトラックバック