Просмотр исходного кода

Исправлены параметры инициализации LMX2594. Добавлена отладочная информация.

Anatoliy Chigirinskiy 1 год назад
Родитель
Сommit
816095eada
2 измененных файлов с 15 добавлено и 3 удалено
  1. 7 0
      Devices/ad9912.c
  2. 8 3
      Devices/lmx2594.c

+ 7 - 0
Devices/ad9912.c

@@ -218,6 +218,13 @@ double ad9912_set(void *bar1, double freq, double f_pd) {
         uint32_t *DDS_DATA = bar1 + AD9912_BASE_ADDR;
         *DDS_DATA = ad9912_ftw_regs[i];
     }
+    char filename[100];
+    sprintf(filename, "%f.txt", f_pd);
+    FILE * f = fopen(filename, "w");
+    for (int i = 0; i < sizeof(ad9912regs) / 4; i++) {
+        fprintf(f, "0x%08X\n", ad9912regs[i]);
+    }
+    fclose(f);
 
     return f_pd;
 

+ 8 - 3
Devices/lmx2594.c

@@ -75,14 +75,14 @@ uint32_t lmx2594regs[LMX_COUNT] = {
         0x2F0300,
         0x2E07FC,
         0x2DC8DF,
-        0x2C1FA3,
+        0x2C1FA0,
         0x2B0000,
         0x2A0000,
         0x290000,
         0x280000,
         0x2703E8,
         0x260000,
-        0x250204,
+        0x250104,
         0x240032,
         0x230004,
         0x220000,
@@ -115,7 +115,7 @@ uint32_t lmx2594regs[LMX_COUNT] = {
         0x0740B2,
         0x06C802,
         0x0500C8,
-        0x041443,
+        0x041243,
         0x030642,
         0x020500,
         0x010808,
@@ -479,6 +479,8 @@ int lmx_freq_set_main_band_int_mode(void *bar1, double freq, double f_pd) {
     lmx2594regs[112-PLL_N_M] = lmx2594regs[112-PLL_N_M] & (~0xFFFF);
     // Next 16 bits of the register
     lmx2594regs[112-PLL_N_M] = lmx2594regs[112-PLL_N_M] | (N_div & 0xFFFF);
+    // Clear the SEG1_EN bit
+    lmx2594regs[112-CHDIV_DIV2] = lmx2594regs[112 - CHDIV_DIV2] & (~BITM_LMX2594_R31_CHDIV_DIV2);
     // Set the OUTA_MUX to channel divider R45[12:11]; 0 - Channel divider, 1 - VCO;
     lmx2594regs[112 - OUTA_MUX] = lmx2594regs[112 - OUTA_MUX] & (~BITM_LMX2594_R45_OUTA_MUX);
     lmx2594regs[112 - OUTA_MUX] = lmx2594regs[112 - OUTA_MUX] | ENUM_LMX2594_R45_OUTA_MUX_VCO;
@@ -487,13 +489,16 @@ int lmx_freq_set_main_band_int_mode(void *bar1, double freq, double f_pd) {
     lmx2594regs[112-FCAL_ADDR] = lmx2594regs[112-FCAL_ADDR] | (LMX2594_R0_FCAL_EN);
 
     uint32_t lmx_change_freq_regs[] = {
+            lmx2594regs[112-CPG_REG] = (lmx2594regs[112-CPG_REG] & (~BITM_LMX2594_R14_CPG)) | ENUM_LMX2594_R14_CPG_TRISTATE,
             lmx2594regs[112 - VCO_SEL],
             lmx2594regs[112 - CAP_CTRL_START],
             lmx2594regs[112 - VCO_DACISET],
             lmx2594regs[112-PFD_DLY_SEL],
+            lmx2594regs[112-CHDIV_DIV2],
             lmx2594regs[112-PLL_N_S],
             lmx2594regs[112-PLL_N_M],
             lmx2594regs[112 - OUTA_MUX],
+            lmx2594regs[112-CPG_REG] = (lmx2594regs[112-CPG_REG] & (~BITM_LMX2594_R14_CPG)) | ENUM_LMX2594_R14_CPG_15ma,
             lmx2594regs[112-FCAL_ADDR]
     };
     // Create a header for the LMX2594 with the appropriate number of words