nobcha23の日記

PICマイコンやArduinoを使う電子回路遊びを紹介します

ARDUINOへsi5351aをつないで10Mhz出してみました

中国製エアバンドレシーバーキット改造で、局発のデジタル化(アルディーノでもっと簡単に手掛けられないか)と中間周波数フィルタを替えての狭帯域化が残っています。


今回アルディーノの再勉強を行い、やっとsi5351a接続まで来ました。

1.先に報告の通り、ロータリーエンコーダーを割り込みで受けるスケッチを実験。

2.先に報告の通り、アルディーノでi2c液晶使いi2cスキャンを手掛けました。i2cのポートを動かした。

f:id:nobcha23:20200714220737j:plain

i2cアドレススキャンno

確かにつながっているi2cLCDのアドレスが引っ掛かりました。

 

3.次にアルディーノ互換ボードチビィディーノ付属LCDコネクタ(4ビット並列接続)でi2cスキャンを動かす。(今となってはUNO互換中国製ボードの方が安くなってしまいましたが、このボードはATMEGAがDIPでICコネクタに入っている点は今後の試作で役に立つかもしれません)

4.チビィディーノに用意したi2cのポートに秋月電子で買ったsi5351aブレークアウト基板を接続。i2cスキャン確認。0x60。

f:id:nobcha23:20151230075826j:plain

ARDUINO互換基板上のLCDコネクタとi2C引き出し

f:id:nobcha23:20200712113625j:plain

0x60がでました

 

5.JH7UBCのWEBサイトからスケッチを流用させていただき、10Mhzを設定、発振させました。周波数カウンタは秋月12.8MHzTCXO基準です。6pF負荷だと周波数が低めでしたので、8pFに変更しました。

f:id:nobcha23:20200712113722j:plain

10MHzでました

 

 

続いてロータリースイッチでの周波数設定(この間実験した割り込み利用ロータリースイッチ制御のマージ)、EEPROMメモリー制御が課題です。


今回の10Mhz設定・発振スケッチは次です。

------------------------参考スケッチ---------------------------------
// SiI5351a 10MHz OSCILLATION
//
// Si5351_ADDR = 0x60
//
// Thanks jh7ubc FOR YOUR giving INFORMATION
// http://jh7ubc.web.fc2.com/arduino/ex1_10MHz.png
// load:8pF 9.9999MhZ
//
// i2cLCD address 0x3E
// LCD on chibiduino with lcd(5,6,9,10,11,12);
//
// SCL:A5,SDA:A4
// 20200711 ok
//
//

#include <Wire.h>

// Thanks Kimura "http://zattouka.net/GarageHouse/micon/Arduino/LCD/I2CLCD.htm"
#include <skI2CLCDlib.h>   

/* ChibiDuino2 LCD sample
* SETUP: (Hitachi HD44780 compatable LCD)
* +5V LCD Vdd pin 2 >>> Gnd LCD Vss pin 1, and R/W pin 5
* LCD RS pin 4 to D5 >>> LCD Enable pin 6 to D6
* LCD D4 pin 11 to D9 >>> LCD D5 pin 12 to D10
* LCD D6 pin 13 to D11 >>> LCD D7 pin 14 to D12
* 10K pot: - ends to +5V and Gnd, wiper to LCD VO pin (pin 3)
*/

#include <LiquidCrystal.h> // Sure 8x2 LCD works with this lib

#define led_pin 13

//lcd instance
skI2CLCDlib LCD(0x3E, 16); // LCDのi2cアドレス、画面カラム数16文字
// instanciate the library and pass pins for (RS, Enable, D4, D5, D6, D7)
LiquidCrystal lcd(5,6,9,10,11,12);

// Si5351a ADDRESS
const byte Si5351_ADDR = 0x60;

void PLLA_set()
{
Si5351_write(26,0); //MSNA_P3[15:8]
Si5351_write(27,1); //MSNA_P3[7:0]
Si5351_write(28,0); //MSNA_P1[17:16]
Si5351_write(29,0b00001110); //MSNA_P1[15:8]
Si5351_write(30,0); //MSNA_P1[7:0]
Si5351_write(31,0); //MSNA_P3[19:16]MSNA_P2[19:16]
Si5351_write(32,0); //MSNA_P2[15:8]
Si5351_write(33,0); //MSNA_P2[7:0]
}


void MS0_set(){
Si5351_write(42,0); //MS0_P3[15:8]
Si5351_write(43,1); //MS0_P3[7:0]
Si5351_write(44,0); //MS0_P1[17:16]
Si5351_write(45,0b00100110); //MS0_P1[15:8]
Si5351_write(46,0); //MS0_P1[7:0]
Si5351_write(47,0); //MS0_P3[19:16]MS0_P2[19:16]
Si5351_write(48,0); //MS0_P2[15:8]
Si5351_write(49,0); //MS0_P2[7:0]
}


void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("\nSi5351a 10MhZ");
pinMode(led_pin, OUTPUT);

// i2c LCDモジュールの初期化処理
// ICON OFF,コントラスト(0-63),VDD=5Vで使う
LCD.Init(LCD_NOT_ICON,32,LCD_VDD5V) ; //5Vへ変更

// 書き込む
LCD.SetCursor(0,0) ; // 表示位置を1行目1列[00H]に設定
LCD.Puts("\nSi5351a 10MhZ ") ; // [00H]から書込まれる(表示する)
LCD.SetCursor(0,1) ; // 表示位置を2行目1列[40H]に設定
LCD.Puts(" 10MhZ v1.0 ") ; // [40H]から書込まれる(表示する)

// 並列接続LCD
lcd.begin(2,8); // set lib for display size (8x2)
lcd.clear(); // clear the screen
lcd.setCursor(0,0) ; // 表示位置を1行目1列[00H]に設定
lcd.print("\nSi5351a 10MhZ ") ; // [00H]から書込まれる(表示する)
lcd.setCursor(0,1) ; // 表示位置を2行目1列[40H]に設定
lcd.print(" 10MhZ v1.0 ") ; // [40H]から書込まれる(表示する)

// Si5351a set up
Si5351_write(3,0xFF); //Disable Output
Si5351_write(16,0x80); //CLOCK0 Power down
Si5351_write(183,0x80); // 8pF
PLLA_set();
MS0_set();
Si5351_write(177,0xA0); //Reset PLLA and PLLB
Si5351_write(16,0x4F); //CLOCK0 Power up 8mA
Si5351_write(3,0xFE); //Enable CLOCK0
}

void Si5351_write(byte Reg , byte Data) // REG write sequence
{
Wire.beginTransmission(Si5351_ADDR); // Start condition
Wire.write(Reg); // Reg select
Wire.write(Data); // Data,
Wire.endTransmission(); // stop condition
}

void loop()
{
boolean led_status;
Serial.println("Si5351a 10Mhz");
digitalWrite(led_pin, led_status);
led_status = !led_status ;
delay(2000);
}
-------------------------------------------------------------