我松散地诊断了这些器件中的一个问题、在通过 SPI 寄存器进入低功耗模式并允许静止大于2分钟后、我的 FPGA 代码无法捕获时钟边沿、无法生成数据。 通过向0x01位2写入来重置 ADC SPI、而不是写入0x05来恢复采样操作、可以缓解此问题。
我在双总线中运行、对齐、clkdiv x 4。
这是我看到的唯一 ADC。 该板有三个运行方式相同的板、我们已构建至少五个此类板。
低功耗功能是否有任何已知的勘误表?
设置为低功耗时会发生什么情况?
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.
我松散地诊断了这些器件中的一个问题、在通过 SPI 寄存器进入低功耗模式并允许静止大于2分钟后、我的 FPGA 代码无法捕获时钟边沿、无法生成数据。 通过向0x01位2写入来重置 ADC SPI、而不是写入0x05来恢复采样操作、可以缓解此问题。
我在双总线中运行、对齐、clkdiv x 4。
这是我看到的唯一 ADC。 该板有三个运行方式相同的板、我们已构建至少五个此类板。
低功耗功能是否有任何已知的勘误表?
设置为低功耗时会发生什么情况?
Connor,
这不是一个已知的问题。 当您使该器件退出睡眠模式时、是否也要根据数据表中的注释设置位0 = 0和位5 = 1? 在写入地址0x05以使其退出睡眠模式之后、读取地址0x05是否验证已发送正确的寄存器设置?
设置位6 = 1后、是否在数据输出位上进行任何切换?
是否至少15个器件中只有一个出现了此问题? 如果是、您可能需要申请获取有关此器件的故障分析报告。
此致、
吉姆
在睡眠模式下、我没有看到连续的位切换。
我在时钟和数据线上使用 VHDL 位变化检测器、其检测窗口为1.5ms、在几个关键点处进行检查。
但我确实将数据显示在两个 FIFO 之一中、这两个 FIFO 与 ADC 输入紧密耦合。 我相信与特定 ADC 的 A 总线相关的时钟可能会产生杂散脉冲。 它也可能与 EMI 相关、但布线较短。 时钟线在睡眠模式还是三态模式时置位为低电平?
在测试中、我看到我的标志弹出、指示时钟 ADC 3已切换至睡眠模式。
将 ADC 置于睡眠状态1秒后:
ADC0_A Clock Frequency : 39935 KHz ADC0_B Clock Frequency : 39935 KHz ADC1_A Clock Frequency : 39935 KHz ADC1_B Clock Frequency : 39935 KHz ADC2_A Clock Frequency : 40083 KHz ADC2_B Clock Frequency : 39935 KHz
ADC 睡眠后30s:
ADC0_A Clock Frequency : 39935 KHz ADC0_B Clock Frequency : 39935 KHz ADC1_A Clock Frequency : 39935 KHz ADC1_B Clock Frequency : 39935 KHz ADC2_A Clock Frequency : 40170 KHz ADC2_B Clock Frequency : 39936 KHz
这些数字来自时钟计数器过程、即从我的主时钟域触发计数、在目标域中计数并将计数转移到主域。 无活动目标时钟时的预期行为是冻结计数器(对于 ADC0和 ADC1为观察结果)、但 ADC2在两个时钟上都有计数出现。
需要注意的是、这些计数为 kHz 或目标时钟的1000个周期。
从这些数据我可以推断出、ADC2_A 勾选~87000次、而 ADC2_B 勾选~1000次。
我有很多数据显示大量勾选、B 勾选少量。 其他 ADC 不会衰减。
我可以看到、勾号操作的频率并不一致、但我只有1秒的分辨率。
尊敬的 Connor:
我运行了和你相同的设置、我看到低功耗模式、唤醒只需要设置数据表中显示的0x05[6]、和你所做的一样。 您提到的缓解步骤(切换和使用0x01[2]进行完全复位)都不 需要。
自您上次回复以来、我还检查了时钟输出 CLKOUTBP/N (引脚26/27)、当设置为低功耗/睡眠模式时、这些器件会停止输出。 这与您针对 ADC2_A 时钟频率进行测试的引脚相同吗? 在低功耗模式下、引脚似乎应停止输出。
当您测试其他电路板(大概使用相同的设计)时、该设计中的同一 ADC 是否会发生这种情况? 每个 ADC 的设计方式或 SPI 写入方式是否有不同?
此电路板上有三个相同的 ADC、它们原理图和 VHDL 接口都相同、也有几个其他电路板、每个电路板上都有3个 ADC。 此电路板的唯一区别在于器件等级-所有其他电路板均使用 EM 器件、而这些电路板属于飞行等级。
ADC 的写入方式与复制 SPI 接口相同。
此电路板上的三个 ADC 中只有一个显示的时钟在睡眠模式下看起来并未完全关闭。 即使具有相同的位流、我们在其他电路板上也没有看到此问题。
经过进一步的测试、我认为通过多次写入来解决该问题可能是一个错误、只与幸运的互动对齐。
我使用此器件看到的故障因 VHDL 而加剧、VHDL 假设在器件处于睡眠模式时不存在数据。 由于其中一个 ADC 的时钟会缓慢填充内部 FIFO、因此我的设计将无法退出休眠状态、因为三个 ADC 状态机不再处于锁步状态、并且出现系统故障。 这是推测的一部分、我仍然准确地排列了状态机是如何锁定在这个问题上的。
在睡眠模式下、ADC 时钟通道是被驱动至定义的电平还是三态?
功耗下降量与 每个 ADC 独立断电时相同。 通常它们同时断电、但我很早就运行了该测试、因为我怀疑 ADC 根本没有断电。 功耗确实要低得多。
我写入0xE8进入睡眠状态、写入0xA8进入上电状态。
我已经读回寄存器、我可以确认它们是正确的。
以下是睡眠模式下的 ADC 寄存器(多个 ADC 31:24 0x00、23:16 ADC 0 15:8 ADC 1 7:0 ADC 2)
ADC REG 00: 00FFFFFF ADC REG 01: 00F8F8F8 ADC REG 02: 00000000 ADC REG 03: 00000001 ADC REG 04: 00CCC60D ADC REG 05: 00E8E8E8 ADC REG 06: 00040404 ADC REG 07: 00000000 ADC REG 08: 00646564 ADC REG 09: 00000000 ADC REG 17: 00000000 ADC REG 18: 00000000 ADC REG 19: 00000000 ADC REG 1A: 00000000 ADC REG 1B: 00000000 ADC REG 1C: 00000000 ADC REG 1D: 00000000 ADC REG 1E: 00000000 ADC REG 1F: 00616161
运行时:
ADC REG 00: 00FFFFFF ADC REG 01: 00F8F8F8 ADC REG 02: 00000000 ADC REG 03: 00000001 ADC REG 04: 00CCC60D ADC REG 05: 00A8A8A8 ADC REG 06: 00040404 ADC REG 07: 00000000 ADC REG 08: 00686A69 ADC REG 09: 00000000 ADC REG 17: 00000000 ADC REG 18: 00000000 ADC REG 19: 00000000 ADC REG 1A: 00000000 ADC REG 1B: 00000000 ADC REG 1C: 00000000 ADC REG 1D: 00000000 ADC REG 1E: 00000000 ADC REG 1F: 00616161
我无法探测电路板、因为它涂有保形涂层、是支架、经扭矩和密封在一个盒子中。 如果我有访问权限、我将直接调查时钟线、以查看这些通道上发生的情况。
我可以确认 ADC 在加电模式下完全正常工作、而在睡眠模式下工作不正确。 如果只是没有断电、我预计会看到数据进入、就好像它仍在运行一样。 我还将看到预期时钟读数140103kHz、而不是缓慢增加的伪周期计数器。