소스 검색

Исправлена ошибка в расчёте, при которой отбрасывалась дробная часть делителя при касте к uint32.

Anatoliy Chigirinskiy 1 년 전
부모
커밋
47930eaf1b
3개의 변경된 파일3개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 0
      Devices/ad9912.c
  2. 1 2
      Devices/lmx2594.c
  3. 1 1
      main.c

+ 1 - 0
Devices/ad9912.c

@@ -172,6 +172,7 @@ double ad9912_set_out_of_band(double lmx_freq,double f_pd) {
     }
     // Calculate the new phase detector frequency by dividing the frequency by the new value of N
     f_pd = f_vco/N; // Phase detector frequency
+    printf("N = %d\n", N);
 
     return f_pd;
 }

+ 1 - 2
Devices/lmx2594.c

@@ -369,7 +369,7 @@ struct vco_params calculate_vco_params (double lmx_freq, double f_pd) {
 	params.acal_cmp_dly = (uint8_t) ((uint64_t)round((fsm_clk)/10e6));
 
 	// Calculate the N_div
-	params.N_div = params.f_vco/f_pd;
+	params.N_div = round(params.f_vco/f_pd);
 	params.N = (uint32_t) params.N_div;
 	if (params.f_vco <= 12500e6) {
 		if (params.N < 28) {
@@ -381,7 +381,6 @@ struct vco_params calculate_vco_params (double lmx_freq, double f_pd) {
 			params.N = 32;
 		}
 	}
-
 	return params;
 }
 

+ 1 - 1
main.c

@@ -130,7 +130,7 @@ int main(int argc, char *argv[])
 	// Установка режима SPI
 	uint32_t cfg_reg = get_cfg_reg();
 	SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_MODE_BITM, CFG_REG_SPI_MODE_BITP, CFG_REG_SPI_MODE_4MOSI);
-	SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_CLK_BITM, CFG_REG_SPI_CLK_BITP, CFG_REG_SPI_CLK_50MHZ); 
+	SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_CLK_BITM, CFG_REG_SPI_CLK_BITP, CFG_REG_SPI_CLK_50MHZ);
 	pci_bar_1->cfg_reg_addr = cfg_reg;
 	set_cfg_reg(cfg_reg);