fix(max2871.c): Switch to a 50 MHz PFD for better performance

This commit is contained in:
Tobias Schneider
2015-11-30 00:23:55 +01:00
parent e612dfd8bf
commit 9a45248829
2 changed files with 7 additions and 6 deletions

View File

@ -68,7 +68,7 @@ void mixer_setup(void)
max2871_set_MUX(0x0C); // Register 6 readback max2871_set_MUX(0x0C); // Register 6 readback
max2871_set_DBR(0); max2871_set_DBR(0);
max2871_set_RDIV2(0); max2871_set_RDIV2(0);
max2871_set_R(50); // 1 MHz f_PFD max2871_set_R(1); // 50 MHz f_PFD
max2871_set_REG4DB(1); max2871_set_REG4DB(1);
max2871_set_CP(15); // ?: CP charge pump current 0-15 max2871_set_CP(15); // ?: CP charge pump current 0-15
max2871_set_LDF(1); // INT-N max2871_set_LDF(1); // INT-N
@ -87,7 +87,7 @@ void mixer_setup(void)
max2871_set_SDLDO(0); max2871_set_SDLDO(0);
max2871_set_SDDIV(0); max2871_set_SDDIV(0);
max2871_set_SDREF(0); max2871_set_SDREF(0);
max2871_set_BS(20); // For 1 MHz f_PFD max2871_set_BS(20*50); // For 50 MHz f_PFD
max2871_set_FB(1); // Do not put DIVA into the feedback loop max2871_set_FB(1); // Do not put DIVA into the feedback loop
max2871_set_DIVA(0); max2871_set_DIVA(0);
max2871_set_SDVCO(0); max2871_set_SDVCO(0);
@ -207,13 +207,14 @@ static void max2871_write_registers(void)
/* Set frequency (MHz). */ /* Set frequency (MHz). */
uint64_t mixer_set_frequency(uint16_t mhz) uint64_t mixer_set_frequency(uint16_t mhz)
{ {
int n = mhz; int n = mhz / 50;
int diva = 0; int diva = 0;
while(n < 3000) { while(n * 50 < 3000) {
n *= 2; n *= 2;
diva += 1; diva += 1;
} }
max2871_set_RFA_EN(0); max2871_set_RFA_EN(0);
max2871_write_registers(); max2871_write_registers();
@ -226,7 +227,7 @@ uint64_t mixer_set_frequency(uint16_t mhz)
max2871_set_RFA_EN(1); max2871_set_RFA_EN(1);
max2871_write_registers(); max2871_write_registers();
return mhz * 1000000; return (mhz/50)*50 * 1000000;
} }
void mixer_tx(void) void mixer_tx(void)

View File

@ -69,7 +69,7 @@ bool set_freq(const uint64_t freq)
rf_path_set_filter(RF_PATH_FILTER_LOW_PASS); rf_path_set_filter(RF_PATH_FILTER_LOW_PASS);
/* IF is graduated from 2650 MHz to 2343 MHz */ /* IF is graduated from 2650 MHz to 2343 MHz */
max2837_freq_nominal_hz = 2650000000 - (freq / 7); max2837_freq_nominal_hz = 2650000000 - (freq / 7);
max2837_freq_nominal_hz = 2350000000; max2837_freq_nominal_hz = 2300000000;
mixer_freq_mhz = (max2837_freq_nominal_hz / FREQ_ONE_MHZ) + freq_mhz; mixer_freq_mhz = (max2837_freq_nominal_hz / FREQ_ONE_MHZ) + freq_mhz;
/* Set Freq and read real freq */ /* Set Freq and read real freq */
real_mixer_freq_hz = mixer_set_frequency(mixer_freq_mhz); real_mixer_freq_hz = mixer_set_frequency(mixer_freq_mhz);