Used num::integer::gcd to improve pll params

This commit is contained in:
Sebastian 2023-08-18 12:10:20 +02:00
parent c8cd7ce46c
commit 929df22f4e
1 changed files with 6 additions and 4 deletions

View File

@ -93,8 +93,9 @@ where
let fdiv = self.pll_freqs[*pll as usize] / freq_xtal;
let rm = self.pll_freqs[*pll as usize] % freq_xtal;
//TODO: Find better way to determine c and b
let c = 0x0FFFFF;
let gcd = num::integer::gcd(rm, freq_xtal);
let c = if gcd < 0x0FFFFF { gcd } else { 0x0FFFFF };
let a = fdiv;
let b = ((rm as u64) * (c as u64) / (freq_xtal as u64)) as u32;
@ -137,8 +138,9 @@ where
let fdiv = self.pll_freqs[pll as usize] / freq;
let rm = self.pll_freqs[pll as usize] % freq;
//TODO: Find better way to determine c and b
let c: u32 = 0x0FFFFF;
let gcd = num::integer::gcd(rm, freq);
let c: u32 = if gcd < 0x0FFFFF { gcd } else { 0x0FFFFF };
let a: u32 = fdiv;
let b: u32 = ((rm as u64) * (c as u64) / (freq as u64)) as u32;