forked from M-Labs/artiq
si5324: fix usage of external CLKIN2 reference
This commit is contained in:
parent
07a31f8d86
commit
cfb21ca126
|
@ -43,7 +43,8 @@ pub struct FrequencySettings {
|
||||||
pub n2_ls: u32,
|
pub n2_ls: u32,
|
||||||
pub n31: u32,
|
pub n31: u32,
|
||||||
pub n32: u32,
|
pub n32: u32,
|
||||||
pub bwsel: u8
|
pub bwsel: u8,
|
||||||
|
pub crystal_ref: bool
|
||||||
}
|
}
|
||||||
|
|
||||||
fn map_frequency_settings(settings: &FrequencySettings) -> Result<FrequencySettings> {
|
fn map_frequency_settings(settings: &FrequencySettings) -> Result<FrequencySettings> {
|
||||||
|
@ -201,7 +202,9 @@ pub fn setup(settings: &FrequencySettings) -> Result<()> {
|
||||||
#[cfg(si5324_soft_reset)]
|
#[cfg(si5324_soft_reset)]
|
||||||
soft_reset()?;
|
soft_reset()?;
|
||||||
|
|
||||||
write(0, read(0)? | 0x40)?; // FREE_RUN=1
|
if settings.crystal_ref {
|
||||||
|
write(0, read(0)? | 0x40)?; // FREE_RUN=1
|
||||||
|
}
|
||||||
write(2, (read(2)? & 0x0f) | (s.bwsel << 4))?;
|
write(2, (read(2)? & 0x0f) | (s.bwsel << 4))?;
|
||||||
write(21, read(21)? & 0xfe)?; // CKSEL_PIN=0
|
write(21, read(21)? & 0xfe)?; // CKSEL_PIN=0
|
||||||
write(3, (read(3)? & 0x3f) | (0b01 << 6) | 0x10)?; // CKSEL_REG=b01 SQ_ICAL=1
|
write(3, (read(3)? & 0x3f) | (0b01 << 6) | 0x10)?; // CKSEL_REG=b01 SQ_ICAL=1
|
||||||
|
|
|
@ -111,7 +111,6 @@ fn startup() {
|
||||||
fn setup_si5324_free_running()
|
fn setup_si5324_free_running()
|
||||||
{
|
{
|
||||||
// 125MHz output, from 100MHz CLKIN2 reference, 9 Hz
|
// 125MHz output, from 100MHz CLKIN2 reference, 9 Hz
|
||||||
// FIXME: needs !FREE_RUN at address 0x00
|
|
||||||
#[cfg(all(rtio_frequency = "125.0", si5324_ext_ref))]
|
#[cfg(all(rtio_frequency = "125.0", si5324_ext_ref))]
|
||||||
const SI5324_SETTINGS: board_artiq::si5324::FrequencySettings
|
const SI5324_SETTINGS: board_artiq::si5324::FrequencySettings
|
||||||
= board_artiq::si5324::FrequencySettings {
|
= board_artiq::si5324::FrequencySettings {
|
||||||
|
@ -121,7 +120,8 @@ fn setup_si5324_free_running()
|
||||||
n2_ls : 260,
|
n2_ls : 260,
|
||||||
n31 : 65,
|
n31 : 65,
|
||||||
n32 : 52,
|
n32 : 52,
|
||||||
bwsel : 10
|
bwsel : 10,
|
||||||
|
crystal_ref: false
|
||||||
};
|
};
|
||||||
// 125MHz output, from crystal, 7 Hz
|
// 125MHz output, from crystal, 7 Hz
|
||||||
#[cfg(all(rtio_frequency = "125.0", not(si5324_ext_ref)))]
|
#[cfg(all(rtio_frequency = "125.0", not(si5324_ext_ref)))]
|
||||||
|
@ -133,7 +133,8 @@ fn setup_si5324_free_running()
|
||||||
n2_ls : 19972,
|
n2_ls : 19972,
|
||||||
n31 : 4993,
|
n31 : 4993,
|
||||||
n32 : 4565,
|
n32 : 4565,
|
||||||
bwsel : 4
|
bwsel : 4,
|
||||||
|
crystal_ref: true
|
||||||
};
|
};
|
||||||
// 150MHz output, from crystal
|
// 150MHz output, from crystal
|
||||||
#[cfg(all(rtio_frequency = "150.0", not(si5324_ext_ref)))]
|
#[cfg(all(rtio_frequency = "150.0", not(si5324_ext_ref)))]
|
||||||
|
@ -145,7 +146,8 @@ fn setup_si5324_free_running()
|
||||||
n2_ls : 33732,
|
n2_ls : 33732,
|
||||||
n31 : 9370,
|
n31 : 9370,
|
||||||
n32 : 7139,
|
n32 : 7139,
|
||||||
bwsel : 3
|
bwsel : 3,
|
||||||
|
crystal_ref: true
|
||||||
};
|
};
|
||||||
board_artiq::si5324::setup(&SI5324_SETTINGS).expect("cannot initialize Si5324");
|
board_artiq::si5324::setup(&SI5324_SETTINGS).expect("cannot initialize Si5324");
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,7 +183,8 @@ const SI5324_SETTINGS: si5324::FrequencySettings
|
||||||
n2_ls : 33732,
|
n2_ls : 33732,
|
||||||
n31 : 9370,
|
n31 : 9370,
|
||||||
n32 : 7139,
|
n32 : 7139,
|
||||||
bwsel : 3
|
bwsel : 3,
|
||||||
|
crystal_ref: true
|
||||||
};
|
};
|
||||||
|
|
||||||
fn drtio_link_is_up() -> bool {
|
fn drtio_link_is_up() -> bool {
|
||||||
|
|
|
@ -230,7 +230,7 @@ class Opticlock(_StandaloneBase):
|
||||||
_StandaloneBase.__init__(self, **kwargs)
|
_StandaloneBase.__init__(self, **kwargs)
|
||||||
|
|
||||||
self.config["SI5324_FREE_RUNNING"] = None
|
self.config["SI5324_FREE_RUNNING"] = None
|
||||||
# self.config["SI5324_EXT_REF"] = None
|
self.config["SI5324_EXT_REF"] = None
|
||||||
self.config["RTIO_FREQUENCY"] = "125.0"
|
self.config["RTIO_FREQUENCY"] = "125.0"
|
||||||
|
|
||||||
platform = self.platform
|
platform = self.platform
|
||||||
|
|
Loading…
Reference in New Issue