adrv9009_no-OS_PS端app_clocking.c梳理

整体架构—区分9528版本代码和7044版本

默认的硬件板子是zc706 + adrv9009-w/pcbz,该9009板搭载时钟为9528。

  • 本篇主要关注9528时钟部分
    硬件连接图如下:
    在这里插入图片描述
    -复位(clocking_init),输入所有用到的时钟
adiHalErr_t clocking_init(uint32_t rx_div40_rate_hz,
			  uint32_t tx_div40_rate_hz,
			  uint32_t rx_os_div40_rate_hz,
			  uint32_t device_clock_khz,
			  uint32_t lmfc_rate_hz)
rate_dev = device_clock_khz * 1000;
rate_fmc = device_clock_khz * 1000;

初始化9528

关闭所有时钟输出,再根据代码,只输出1、3、12、13渠道。分别对应以下信道(fr.app_clocking.h)在这里插入图片描述
DEV_CLK是指给9009的时钟信号
FMC_CLK是指给fpga的时钟信号
在这里插入图片描述
再设置9528参数,具体什么意思可以在代码中用鼠标放在上面看到

	// ad9528 settings
	ad9528_param.pdata->spi3wire = 0;
	ad9528_param.pdata->vcxo_freq = 122880000;
	ad9528_param.pdata->refa_en = 1;
	ad9528_param.pdata->refa_diff_rcv_en = 1;
	ad9528_param.pdata->refa_r_div = 1;
	ad9528_param.pdata->osc_in_cmos_neg_inp_en = 1;
	ad9528_param.pdata->pll1_feedback_div = 4;
	ad9528_param.pdata->pll1_feedback_src_vcxo = 0; /* VCO */
	ad9528_param.pdata->pll1_charge_pump_current_nA = 5000;
	ad9528_param.pdata->pll1_bypass_en = 0;
	ad9528_param.pdata->pll2_vco_div_m1 = 3;
	ad9528_param.pdata->pll2_n2_div = 10;
	ad9528_param.pdata->pll2_r1_div = 1;
	ad9528_param.pdata->pll2_charge_pump_current_nA = 805000;
	ad9528_param.pdata->pll2_bypass_en = false;
	ad9528_param.pdata->sysref_src = SYSREF_SRC_INTERNAL;
	ad9528_param.pdata->sysref_pattern_mode = SYSREF_PATTERN_CONTINUOUS;
	ad9528_param.pdata->sysref_req_en = true;
	ad9528_param.pdata->sysref_nshot_mode = SYSREF_NSHOT_4_PULSES;
	ad9528_param.pdata->sysref_req_trigger_mode = SYSREF_LEVEL_HIGH;
	ad9528_param.pdata->rpole2 = RPOLE2_900_OHM;
	ad9528_param.pdata->rzero = RZERO_1850_OHM;
	ad9528_param.pdata->cpole1 = CPOLE1_16_PF;
	ad9528_param.pdata->stat0_pin_func_sel = 0x1; /* PLL1 & PLL2 Locked */
	ad9528_param.pdata->stat1_pin_func_sel = 0x7; /* REFA Correct */

定义xil_gpio_param、xil_spi_param

type为._PS和device_id。

struct xil_spi_init_param xil_spi_param = {
#ifdef PLATFORM_MB
		.type = SPI_PL,
#else
		.type = SPI_PS,
#endif
#if defined(ZU11EG) || defined(FMCOMMS8_ZCU102)
		.flags = SPI_CS_DECODE
#endif
	};
#if !defined(ZU11EG) && !defined(FMCOMMS8_ZCU102)
	struct xil_gpio_init_param xil_gpio_param = {
#ifdef PLATFORM_MB
		.type = GPIO_PL,
#else
		.type = GPIO_PS,
#endif
		.device_id = GPIO_DEVICE_ID,
	};

对axi_clkgen初始化

包括三个rx tx rx_os的初始化。给定基地址和频率。

设置时钟芯片的spi控制-clkchip_spi_init_param

这里的extra表示SPI extra parameters (device specific)。并且如果板卡型号不是706时,给出了另外的clock chip spi setting。

设置时钟芯片的gpio口初始化

定义结构体no_os_gpio_init_param,对gpio_resetb赋值clkchip_gpio_init_param的地址。
**并指明hmc7044通常通过向相关的控制器或处理器发送特定的数据序列来实现,从而重新初始化系统并将其恢复到初始状态.

	struct no_os_gpio_init_param clkchip_gpio_init_param = {
		.number = CLK_RESETB_GPIO,
		.platform_ops = &xil_gpio_ops,
		.extra = &xil_gpio_param
	};
	ad9528_param.gpio_resetb = &clkchip_gpio_init_param;
#endif

状态检查及报错

检验是否有初始化失败,同时检验了dev_clk和fmc_clk的状态是否正确。
-如果是fmc7044,检查dev_refclk_A/B,jesd_refclk_tx——obs/rx_AB.
-先round_rate再set_rate

#else
  	ad9528_clk_set_rate(clkchip_device, DEV_CLK, dev_clk);
  	ad9528_clk_set_rate(clkchip_device, FMC_CLK, fmc_clk);
#endif
  } else {
  	printf("Requesting device clock %u failed got %u\n",
  	       device_clock_khz * 1000, dev_clk);
  	goto error_1;
  }

check sysref rate -这个check通过判断余数是否小于商,或大于参考时钟减商,使其忽略由于取整而引入的微小偏差,以便确定系统参考时钟的频率是否在可接受的范围内。
-如果速率始终不合适,则通过lmfc_rate_hz/n,n=1-64的方式来寻找一个合适的速率,且由小到大寻找。
-仍然是set_rate,设置的是FMC_SYSREF和DEV_SYSREF。如果是7044的话,区分了两个SYSREF的A/B。

检查CLKGEN-INIT、速率设置状态

检查axi_clkgen_init是否成功,返回状态--------rx\tx\rx_os eg.axi_clkgen_init(&rx_os_clkgen, &rx_os_clkgen_init);
检查: axi_clkgen_set_rate返回状态---------rx_clkgen\tx_clkgen\rx_os_clkgen并返回
eg. axi_clkgen_set_rate(rx_os_clkgen, rx_os_div40_rate_hz);
如果报错的处理方式:移除给定的rx_os_clkgen eg.axi_clkgen_remove

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: adrv9009-w-pcbz-schematic-revb.pdf是一份关于ADRV9009-W/PCBZ开发板的电路图,该开发板主要用于无线通信系统的设计和测试。这份电路图是该开发板的版本为revB的设计方案。 该电路图详细描述了ADRV9009-W/PCBZ开发板的各个电路元件,包括无线电频率合成器、功率放大器、低噪声放大器、模数转换器、可编程逻辑器件等。此外,该电路图还包括蓝牙模块、GPS模块、以太网接口、USB接口、GPIO接口等各种连接资源,方便用户设计和测试期间的多种功能操作。 在该电路图中,我们可以看到许多复杂的电路板布局和电路元件连接,这需要设计者具备扎实的电路设计知识和丰富的实践经验。同时,该电路图还需要经过严格的验证和测试,以确保开发板在实际应用中能够正常运行、稳定工作。 总的来说,adrv9009-w-pcbz-schematic-revb.pdf提供了ADRV9009-W/PCBZ开发板的设计方案和电路布局,为无线通信系统的设计和测试提供了重要的参考。但需要具备丰富的电路设计经验才能充分理解和应用该电路图。 ### 回答2: adrv9009-w-pcbz-schematic-revb.pdf是ADI公司发布的ADRV9009-W评估板的元件布局图和连接图。ADRV9009-W是一款高性能的无线通信评估板,可实现多种无线标准的发射和接收功能。 该评估板基于ADI公司的ADRV9009集成电路设计,使用ADI公司的射频芯片和数字信号处理器,为用户提供了极高的性能和灵活性。评估板支持多种无线标准,包括2G、3G、4G、LTE和5G NR等。 通过adrv9009-w-pcbz-schematic-revb.pdf文件,用户可以了解评估板的电路设计和各元件的布局和连接方式。该文件详细描述了评估板的射频电路、功率放大器、滤波器、数字信号处理器和调制解调器等组成部分的电路布置和连接方法。 对于无线通信系统的研究和开发人员来说,adrv9009-w-pcbz-schematic-revb.pdf是一个非常有价值的参考资料。通过研究该文件,用户可以深入了解该评估板的电路设计和工作原理,为将来的研究和开发工作提供重要的参考和指导。 ### 回答3: adrv9009-w-pcbz-schematic-revb.pdf是一份PCB电路板原理图,它是针对Analog Devices公司的ADRV9009-W/PCBZ评估板而设计的。该评估板旨在帮助设计人员快速评估ADRV9009这款软件可编程收发器。 通过该原理图,设计人员可以深入了解ADRV9009-W/PCBZ评估板的电路结构,理解信号传输的路径和每个部件的工作原理。例如,原理图展示了ADRV9009-W/PCBZ评估板的输入、输出接口、射频信号和数字信号处理器之间的连接方式,以及板上各个元件的型号和布局。 在评估板设计方面,原理图也非常重要。设计人员可以通过该原理图了解到评估板上电路的设计结构和布局,了解每个电路部件的连接方式和功能,从而为自己的设计提供有价值的指导。 总之,adrv9009-w-pcbz-schematic-revb.pdf是一份非常重要的电路原理图,它为使用ADRV9009-W/PCBZ评估板的设计人员提供了重要的电路设计指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值