主题中讨论的其他器件:PGA970、 USB2ANY
工具/软件:Code Composer Studio
当我使用 PGA970 GUI 读取寄存器时、我获得的值与使用基于 SPI 的 Hercules 微控制器读取数据时不同。 我将从这两个引脚发送相同的命令(在示波器上观察到):
通过 SPI 0x02 00 00发送、在 DEMOD1_DATA 寄存器的开头进行读取
通过 SPI 0x02 40 00发送并从 Hercules 控制器中的 SPI 读取。 0x02 40 00用于读取 ADC 的接下来的16位、读取 SPI 已在这里完成、因为我知道 PGA970在发送第一个读取命令后在 SPI 传输中提供了请求的数据。
通过 SPI 发送0x02 40 00并从 SPI 读取。 这是一个虚拟命令、旨在提取 PGA970将从之前的 SPI 命令中发送的数据。
现在、当我运行 Hercules 软件时、它会发送上面的命令、并接收0x0202 0xB6AA (SPI 消息中处理的数据)。 这是奇怪的、因为响应不应包含前8位中的数据(数据以32位表示、但 ADC 只写入24位、因此所有读取都应为0x00XX 0xXXXX)、 它不是软件、因为我在示波器上观察数据、它与该数据匹配。 但是、如果我拔下 Hercules 控制器并插入 USB2ANY、而不对 PGA970 EVM 循环供电(将所有内容都保持由 Hercules 软件进行配置)并要求 GUI 读取数据、则它会通过 SPI 发送相同的命令(在示波器上观察)、 但通过 SPI 接收不同的数据(再次使用示波器验证接收到的数据是否与实际发送的数据匹配)、调整为0x004B、0xB858。 数据中的第二个字足够接近数据似乎匹配、但第一个字完全不同。 这与通过 SPI 发送的命令相同。
我是否遗漏了什么? GUI 是否会在每次与 PGA970建立联系时自动配置一些额外的设置? 读取 DEMOD1寄存器之间是否需要延迟?
这可能是相关的、因为当从 GUI 进行操作时、数据为何会发生变化? 下面是我要做的:
从 GUI 的"低级配置"页面:
点击 DEMOD1_Data1、点击 Read (在本底噪声中读取数据、无关)
点击 DEMOD1_DATA3、点击 Read (读0x4B 回)
点击 DEMOD2_Data1、点击"Read"(在本底噪声中读取数据、不关心数据是什么)
点击 DEMOD2_DATA3、点击 Read (读0x22返回)
点击 DEMOD1_DATA3、点击 Read (读0x22返回)
如果我首先读取 DEMOD_0、则在寄存器中相反的 DEMOD__DATA3部分的最高有效位中接收到不同的答案。 为什么?! 此值应保持不变。 实际上、我认为它没有变化、因为我可以从 DEMOD1_Data1读取、然后从 DEMOD1_DATA3读取、它返回到0x4B。 无论首先读取哪个寄存器、调用都应该是一致的、对吧?