主题中讨论的其他器件: TDC7201
我在 Raspberry Pi 3B + TDC7201-ZAX-EVM 系统中看到了一些奇怪的 SPI 行为。 第一次测量似乎是完美的;我得到脉冲或超时、校准运行(我打开了 CONFIG1/FORCE_CAL、以便我可以测试校准)、我可以读取所有寄存器、数字看起来合理、我可以进行 ToF 计算。 但是、当我尝试使用完全相同的代码运行第二次测量时、SPI 接口无法正常工作。 尝试读取 CONFIG1和 CONFIG2会获取两次读取的 CONFIG1值、尝试读取 INT_STATUS 和 INT_MASK 会获取两次读取的 CONFIG2值等 它的运行方式就像地址字节被向右移动1位一样、因此地址0和1都计数为0、地址2和3都计数为1等。
这可能有许多原因。 Raspberry Pi 3硬件中的一些东西。 内核驱动程序中的某个东西。 spidev 库中的内容。 我自己的代码中有什么东西。 tdc7201或 EVM 中的一些东西。 但是、在我将兔子洞深入谷粒空间之前、有人能解释一下在测量之后以及开始另一次测量之前、需要采取哪些步骤来清理 tdc7201状态吗? 在这一点上、文档内容有些模糊。 我尝试向相应的 INT_STATUS 位写入1以将其清除、但它不起作用、可能是由于地址移位改编。
对整个系统进行电源循环(包括重新启动 RPi)可以解决问题、以便获得一个测量值、但它会再次运行。
更改 SPI 时钟速度绝对没有影响。 在50kHz 至16MHz 范围内也会发生同样的情况。
我在测量期间不执行任何 SPI 操作。 我只是坐在那里等待 INTB1像一个好男孩一样下降。
谢谢、
霍华德