您好!
我们尝试在 COTS 板上使用 LMX2594、并使用板上主机 Xilinx RFSoC 器件的 SPI 接口对其进行配置。 但是、我们很难确定寄存器是否配置正确、因为我们在特定寄存器上获得了错误/不一致的回读结果。 我们遵循数据表第7.5.1节的建议过程:
1)上电、2)设置 R0中的复位(0x002012)、3)清除 R0中的复位(0x002010)、4)以相反的顺序对寄存器 R78-R0进行编程(因为不使用斜坡)
在对寄存器进行编程时、我们会读回每个写入的值以进行验证。 这对于 R78-R4来说是完美的、回读值与写入的数据匹配。 但对于寄存器 R3-R0、我们得到以下结果:
R3:WR:0x0642
RD:0x0000
R2:WR:0x0500
RD:0x0000
R1:WR:0x0808
Rd:0x0808
R0:WR:0x2010
RD:0x0000
是否知道为什么我们会从 R3、R2、R0获取全零回读数据? 由于前75个寄存器的写入/回读工作正常、我们似乎没有 SPI 总线问题。 不知道要尝试什么、我们随后对 R0执行了另一次写入0x2010、以确保将"MAXOUT_LD_SEL"清零以进行回读、并重新读取所有寄存器 R78-R0。 这次、我们获得了多个具有与编程数据不匹配的读回值的寄存器(或之前的读回):
寄存器78:0x0064 (写入的值为0x016F)
寄存器75:0x0800 (写入值为0x0880)
寄存器71:0x0080 (写入的值为0x0081)
寄存器62:0x00af (写入的值为0x0322)
寄存器60:0x03e8 (写入的值为0x0000)
寄存器58:0x8001 (写入值为0x9001)
寄存器57:0x0000 (写入的值为0x0020)
寄存器46:0x07fd (写入的值为0x07FC)
寄存器45:0xcedf (写入的值为0xC0DF)
寄存器44:0x1fa2 (写入的值为0x1fa4)
寄存器43:0x0000 (写入的值为0x0009)
寄存器39:0xFFFF (写入的值为0x0019)
寄存器38:0xFFFF (写入的值为0x0000)
寄存器37:0x0204 (写入值为0x0504)
寄存器36:0x0032 (写入的值为0x0057)
寄存器31:0x43e8 (写入的值为0x43EC)
寄存器30:0x2108 (写入的值为0x318C)
寄存器29:0x2108 (写入的值为0x318C)
寄存器25:0x0624 (写入的值为0x0C2B)
寄存器20:0xb848 (写入的值为0xF848)
寄存器17:0x00fa (写入的值为0x012C)
寄存器07:0x00b2 (写入的值为0x40B2)
寄存器03:0x0642 -这次读回纠正
寄存器02:0x0500 -这次读回纠正
寄存器01:0x080b (写入值为0x0808)
寄存器00:0x2010 -这次读回纠正
在第二次读回中、稳压器 R3/R2/R0读回正确(尽管在第一次尝试时读回所有零)、而列出的所有其他寄存器读回错误值(即使我们之前读回了正确的值)。 我们无法对此有任何了解。 有些具有未定义字段的寄存器是否具有随时间推移而变化的值、因此回读结果取决于读取它们的时间? 在我们启用 FCAL 之前、似乎不应更改任何寄存器值、直到收集上述数据后才启用 FCAL。
对我们的错误行为有什么想法、或对尝试什么的建议? 我们是否应该期望回读每次返回不同的结果? 您是否可以提供任何正确的写回寄存器和读回寄存器的 C/C++示例代码?
FYI 在我们启动 FCAL 后、LMX2594无法锁定。
谢谢、Ted