Нет проблема. Начин ничем не отличается от кода напр. Владимира или Вашей, и QRP-labs для Si5351. Только что загрузил некоторые регистры из .h файла из софта в инициализации. Есть много о чем подумать, напр. сейчас R неизменяемый и = 2 (не будет только с 2 работать на НЧ), FVCO должен выяснить для себя нужно ли перечислять и когда (FVCO = 13500..14256 MHz, но без четкой границы). Напр. ClockBuilder предлагал FVCO = 13,2 GHz, вне диапазона, и я написал так. Наверное поэтому потребление ниже? (260 mA)).
Попробуйте не трогать FVCO, без SOFT_RST и только вычислять N0_NUM и N0_DEN в узком частотном диапазоне, например один диапазон.
Меня почти не волнует, что PLL работает с fractional коефициентов. Разница в выходние х-ки, показанни в PDF, очень мала, и в очень далекой области, несколько dB. А такие примерно и в Si570, а знаем какой у его сигнал.
void set_freq(uint32_t freq) {
uint32_t R_DIV = 2;
uint64_t FVCO = 13200000000;
uint64_t num = (FVCO * 0x1FFFFFFF) / (R_DIV * freq);
write_reg(0x0302, num);
write_reg(0x0303, num >> 8); // N0 numerator N0_NUM[7:0]
write_reg(0x0304, num >> 16); // N0 numerator N0_NUM[15:8]
write_reg(0x0305, num >> 24); // N0 numerator N0_NUM[23:16]
write_reg(0x0306, num >> 32); // N0 numerator N0_NUM[39:32]
write_reg(0x0307, num >> 40); // N0 numerator N0_NUM[43:40]
write_reg(0x0308, 0xFF); // N0 denominator N0_DEN[7:0]
write_reg(0x0309, 0xFF); // N0 denominator N0_DEN[15:8]
write_reg(0x030A, 0xFF); // N0 denominator N0_DEN[23:16]
write_reg(0x030B, 0x1F); // N0 denominator N0_DEN[31:24]
write_reg(0x030C, 0x01); // N0 divider update bit
}