AD-FMCOMMS3-EBZ 调试 Tuning TX/RX FAILED!

问题描述

在ADI提供的官方demo (ver: hdl_2019_r1) 中,重新编译zcu102的版本会出现ad9361驱动无法正常挂载的问题。

  • 使用ADI预编译镜像 (ver: hdl_2019_r1) 不会出现该问题
  • 使用Vivado 2018.3 编译源码出现该问题
  • 使用ADI预编译镜像 (ver: hdl_2019_r1) 中提供的bitstream文件重新生成BOOT.bin文件不会出现该问题

错误信息:

[    5.460830] SAMPL CLK: 61440000 tuning: RX
[    5.464845]   0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
[    5.469270] 0:# # # # # # # # # # # # # # # #
[    5.473697] 1:# # # # # # # # # # # # # # # #
[    5.478127] ad9361 spi1.0: ad9361_dig_tune_delay: Tuning RX FAILED!
[    5.484783] cf_axi_adc: probe of 99020000.cf-ad9361-lpc failed with error -5

推测为综合或者实现策略不同导致的时序问题。实际上在其他SoC (zedboard, zc706) 上,将transceiver的发送与接收FIFO连接到自己设计的模块上时也有概率出现上述问题。可以参考ADI 对接口时序的描述

解决方法

这里暂时没有想到好的解决方法,但提供一个可以跳过此问题的方法。

  1. 在源码中添加 ADC_IODELAY_ENABLE 参数。这里可以参照 library/axi_ad9361/axi_ad9361.v 文件中 DAC_IODELAY_ENABLE 参数的定义方法,注意也要在子模块中添加此参数,并都参考 DAC_IODELAY_ENABLE 的定义与使用。
  2. 在 ad9361 IP 配置中关闭 ADC_IODELAY_ENABLE 与 DAC_IODELAY_ENABLE (设为0)。
  3. 重新生成bitstream文件。

要注意此方法根据ADI描述可能会出现不可靠的时序问题,但在接下来的项目使用中并没有出现该问题。

对ADI的询问帖

FMCOMMS3 on ZCU102 Tuning RX Fail

上一篇:云存储时代更好的选择,你的数据由你主宰


下一篇:Decawave官方双边测距(一对一)原理介绍及代码实现