adafruit / Adafruit_Si5351_Library

Driver for Adafruit's Si5351 Clockgen Breakout
43 stars 30 forks source link

Current library can't set output frequency above 150Mhz, 1 line code fix can set DIVBY4 bits correctly to solve this issue #18

Open sullivanzheng opened 2 years ago

sullivanzheng commented 2 years ago

https://github.com/adafruit/Adafruit_Si5351_Library/blob/d849003ae9de089ca6883fb71f479c16d2836e83/Adafruit_SI5351.cpp#L477

This library doesn't set DIVBY4 bits of MultiSynth correctly so that any frequency above 150Mhz (i.e. PLL >600Mhz, divided by 4) is not achievable.

SI5351 and its substitute MS5351 has DIVn_DIVBY4 bits in register 44, 52, 60 (for SI5351A with 3 outputs) at bit[3:2]. Need to set these bits to "11" if MultiSynth need to divide PLL frequency by 4.

Suggested bug fix: Simply modify this line to: sendBuffer[3] = ((P1 & 0x30000) >> 16) | lastRdivValue[output] | (div==4?0B1100:0B0000); to correct this issue. Have tested this on both SI5351A and MS5351M ICs.

I can easily get (without overclocking) 225Mhz output after this bug fixed. And 290Mhz after over clocking PLL to 1.16GHz with MS5351M chip. Of course, this may vary across individual chip.

ladyada commented 2 years ago

thanks, please submit a PR, we do not own a MS5351M!

sullivanzheng commented 2 years ago

QRP lab did research on MS5351 and concluded it is on par with SI5351A. You can get it on LCSC.com. Good replacement of Si5351A in terms of price/value and availability.

Sent from my iPhone

------------------ Original ------------------ From: ladyada @.> Date: Sun, May 15, 2022 10:09 PM To: adafruit/Adafruit_Si5351_Library @.> Cc: sullivanzheng @.>, Author @.> Subject: Re: [adafruit/Adafruit_Si5351_Library] Current library can't setoutput frequency above 150Mhz, 1 line code fix can set DIVBY4 bits correctlyto solve this issue (Issue #18)

ladyada commented 2 years ago

OK Si5351A is currently available - https://www.findchips.com/search/Si5351A

please submit any PRs for fixes or changes, thanks!