工具与软件:
我与 ads131m06的通信遇到问题。 我正在正确地从 SPI 读取数据、但更改寄存器的值时遇到问题。
首先、我能够更改时钟寄存器以在高分辨率模式下将频率设置为250SPS、方法如下:
b0110_0001_1000_0000_0000_0000、x7F1E00
它几乎总是工作正常、但偶尔、它上电每10-50次、频率似乎错误地设置为32kSPS。 在下图中、标记为2、3的 ADC 应将频率重置为250SPS、但标记为2的 ADC 应以32kSPS 的速率运行。
然后、发现 SPI 通信存在基本问题、其中数据在 SCLK 的下降沿而不是上升沿发送。 另外、还在上升沿(而不是下降沿)错误地读取了数据。 修复后、示波器上显示的是通信的开始
令人惊讶的是、在发现此错误之前、一切都进展顺利。 但是、由于完成了此修复、我仍可以从 ADC 读取数据、但这些 ADC 在写入寄存器时不会正确响应。 读取寄存器工作正常、当读取时钟时、我得到了 x3F0E00、这使我感到很惊讶、因为复位值列为7F0E、但我看到实际上此寄存器的保留部分应该读取0。
但是、我发送前面提到的命令、他们从不将采样频率设置为250SPS、而是发送预期的确认响应
但请勿更改其采样频率通常的4kSPS。 但是、在极少情况下、采样频率仍错误地设置为32kSPS。
不过、现在如果我尝试通过发送7F0A00、7F0600 RESP 将采样频率增加到8kSPS 或16kSPS、ADC 根本无法正常工作、DRDY 始终设置为0、没有上升沿。 此外、通过将 SYNC_RESET 置为有效达2048个 MCLK 周期、然后等待5us 或使用 RESET 命令(为此、我在使用此命令时并不总是收到确认代码)、无法从此异常状态恢复。 只有断电和上电才能成功恢复。
总之、以下是修复 SPI 通信的方法:
预期结果 实际结果
250SPS 4kSPS、很少为32kSPS、但会出现预期确认响应。
8kSPS 停止工作
16kSPS 停止工作
复位 等待后偶尔才会收到预期的确认、如果 ADC 停止工作、则不会恢复
您知道什么可能导致此类意外行为?
谢谢!