raw pll set added

This commit is contained in:
Christian L. V. Madsen
2024-11-23 19:18:30 +01:00
parent 133056f577
commit 06a0eda907
2 changed files with 48 additions and 0 deletions

View File

@@ -108,6 +108,53 @@ int cm_setPllParamRaw(si5351_driver *inst, si5351_PLLs sel_pll, uint32_t MSNx_P1
return 0;
}
int cm_setOutputMultiSynthRaw(si5351_driver *inst,si5351_Outputs clk_output, uint32_t MSx_P1, uint32_t MSx_P2, uint32_t MSx_P3){
switch(clk_output){
case SI5351_OUTPUT_0:
inst->device_data.multiSynth0Param.MSx_P1_17_16 = (MSx_P1 >> 16) & 0x3; // last division..
inst->device_data.multiSynth0Param.MSx_P1_15_8 = (MSx_P1 >> 8) & 0xff;
inst->device_data.multiSynth0Param.MSx_P1_7_0 = MSx_P1 & 0xff;
inst->device_data.multiSynth0Param.MSx_P2_19_16 = (MSx_P2 >> 16) & 0x3;
inst->device_data.multiSynth0Param.MSx_P2_15_8 = (MSx_P2 >> 8) & 0xff;
inst->device_data.multiSynth0Param.MSx_P2_7_0 = MSx_P2 & 0xff;
inst->device_data.multiSynth0Param.MSx_P3_19_16 = (MSx_P3 >> 12) & 0x3;
inst->device_data.multiSynth0Param.MSx_P3_15_8 = (MSx_P3 >> 8) & 0xff;
inst->device_data.multiSynth0Param.MSx_P3_7_0 = MSx_P3 & 0xff;
writeRegister(inst,SI5351_REG_MULTISYNTH_OUT_0, (uint8_t*) &inst->device_data.multiSynth0Param, sizeof(si5351_multiSynthxParameters_t));
break;
case SI5351_OUTPUT_1:
inst->device_data.multiSynth1Param.MSx_P1_17_16 = (MSx_P1 >> 16) & 0x3; // last division..
inst->device_data.multiSynth1Param.MSx_P1_15_8 = (MSx_P1 >> 8) & 0xff;
inst->device_data.multiSynth1Param.MSx_P1_7_0 = MSx_P1 & 0xff;
inst->device_data.multiSynth1Param.MSx_P2_19_16 = (MSx_P2 >> 16) & 0x3;
inst->device_data.multiSynth1Param.MSx_P2_15_8 = (MSx_P2 >> 8) & 0xff;
inst->device_data.multiSynth1Param.MSx_P2_7_0 = MSx_P2 & 0xff;
inst->device_data.multiSynth1Param.MSx_P3_19_16 = (MSx_P3 >> 12) & 0x3;
inst->device_data.multiSynth1Param.MSx_P3_15_8 = (MSx_P3 >> 8) & 0xff;
inst->device_data.multiSynth1Param.MSx_P3_7_0 = MSx_P3 & 0xff;
writeRegister(inst,SI5351_REG_MULTISYNTH_OUT_1, (uint8_t*) &inst->device_data.multiSynth1Param, sizeof(si5351_multiSynthxParameters_t));
break;
default:
break;
}
return 0;
}
int cm_setPLLParameters(si5351_driver *inst,si5351_PLLs sel_pll, uint32_t a, uint32_t b, uint32_t c){
uint32_t temp_val = 0;