This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AFE7950:有几个宏未完成、但未记录在案。

Guru**** 2460850 points
Other Parts Discussed in Thread: AFE7950

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1375871/afe7950-a-couple-of-macros-are-not-completing-but-are-not-documented

器件型号:AFE7950

工具与软件:

您好!

我将使用非连续的 sysref 在 AFE7950上运行 Latte 日志的输出、并且由于在代码中的两个不同点运行宏后未设置 macro_done、因此会出现一些错误。  宏操作码没有进行记录、我无法从注释中看出宏尝试执行的操作。

以下是 MACRO_DONE 未被置位的第一个情况(第1718-1737行)的摘录:

SPIRead 00f0、0、0

//读取 macro_ready=0x1;地址(0xf0[7:0])


SPIPoll 00f0、0、0、01
SPIWrite 00a3、00、0、7 //macro_operand_REG0=0x1;地址(0xa0[7:0]、0xa1[7:0]、0xa2[7:0]、0xa3[7:0]、0xa4[7:0])
SPIWrite 00a2、00、0、7
SPIWrite 00a1、00、0、7
SPIWrite 00a0、01、0、7
SPIWrite 0193、78、0、7 //macro_opcode=0x78;Address (0x193[7:0]、0x194[7:0])

等待0.001
SPIRead 00f0、2、2

// READ MACRO_DONE=0x1;Address (0xf0[7:2])


SPIPoll 00f0、2、2、04
SPIReadCheck 00f0、3、00

最终的 SPIReadCheck 失败。   有什么想法、为什么  macro_opcode=0x78无法完成?

如果我注释掉了失败的 SPIReadCheck、则代码可以在编程的稍后部分、会发生类似的错误、但会针对不同的 macro_opcode。

以下是摘录 (第3529-3551行)

//start:将 TX 链参数配置到顶部 MCU

SPIWrite 0018、20、0、7 //macro=0x1;地址(0x18[7:5])
SPIRead 00f0、0、0

//读取 macro_ready=0x1;地址(0xf0[7:0])


SPIPoll 00f0、0、0、01
SPIWrite 00a3、00、0、7 //macro_operand_REG0=0x1;地址(0xa0[7:0]、0xa1[7:0]、0xa2[7:0]、0xa3[7:0]、0xa4[7:0])
SPIWrite 00a2、00、0、7
SPIWrite 00a1、00、0、7
SPIWrite 00a0、01、0、7
SPIWrite 0193、8d、0、7 //macro_opcode=0x8d;地址(0x193[7:0]、0x194[7:0])

等待0.001
SPIRead 00f0、2、2

// READ MACRO_DONE=0x1;Address (0xf0[7:2])


SPIPoll 00f0、2、2、04
SPIReadCheck 00f0、3、00

最终的 SPIReadCheck 会产生一个错误。   有什么想法、为什么 macro_opcode=0x8d 无法完成?

如果我注释掉两个失败的 SPIReadCheck、脚本就会完成、但我会在从下电上电到下电上电的通道中看到某种随机失准。  我将 LMFS=8821与 TI JESD204C IP 配合使用。  在发送测试复数正弦波时、我会在与 NCO 频率相差+/-的预期偏移频率下看到两个不同振幅的音调。  有时、4个 DAC 中的一个具有良好的输出(单偏移音调)、但在下电上电时、不良行为会在不同的 DAC 通道上随机发生。  我想知道发生故障的宏是否可以解决这种奇怪的行为。

 

感谢您的任何帮助或建议!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    为了确认、只有重新检查失败、在重新检查之前不是 SPI 轮询? 如果只有读检查、那么我会要求您在读检查之后添加以下寄存器读数。 这些寄存器用于读回与宏错误相关的任何信息、如果您可以提供读回的值、则我们可以提供有关您所看到的错误的更多信息。

    除了上面我推荐的写入内容外、还有几个方面可以在您的板上看到。 第一、宏对电源轨很敏感、您能否确认所有电源轨都在数据表范围内? 第二个方面是必须在启动期间的所需时间提供 Sysref。 您能否确认为 非连续 sysref 生成 AFE 配置 以及是否在启动文件中所述时间提供 sysref 脉冲?  

    对于宏操作码0x78、我们已经看到了突发写入未实现或未正确实现引起的问题。 您能否确认在您的设置中实现了突发写入? 一个用于验证突发写入是否按预期工作的简单测试是使用固定总线写入序列并按顺序读取寄存器。 例如、执行以下突发写入  SPIBurstWrite 0010 [01、02、03、04、04、04、04、07、08、09、0A]、然后从0x10至0x19读取 SPI 地址、并确认读取是否符合预期。 稍后将所有地址设置回零。

    此致、

    David Chaparro  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    感谢您的帮助。  是的、我可以确认我们的设置中使用了突发写入、并且只有 ReadCheck 而不是轮询失败。  以下是您要求的测试结果:

    操作码为0x78的宏失败后读取的值为:

    00f0 - 0x4f

    00f1 - 0x78

    00f2- 0x08

    00f3 - 0x00

    00f4 - 0x00

    00f5 - 0x00

    操作码为0x8d 的宏失败后读取的值为:

    00f0 - 0x1f

    00f1 - 0x8d

    00f2 - 0x01

    00f3 - 0x00

    00f4 - 0x00

    00f5 - 0x00

    谢谢!

    Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    突发写入实现出现问题。  修复后、两个宏不再出现故障。  很抱歉出现错误警报。

    谢谢!

    Dave