工具/软件:
您好:
我们在 AM4376上的 SPI 接口存在问题、即 SPI 总线上的大量流量可能会导致误读数据。 其中一个 MCSPI 接口连接到一个以太网交换机、我们用于配置和监控寄存器。 我们在 AM4376上连接到 MCSPI4、并将其配置为主模式、SPI 总线上只有一个从器件。 我们遇到了寄存器值被错误读取的问题。 在 SPI 总线上执行一些测试后、我们看到当总线上存在大量流量时、偶尔这些 SPI 消息会相互干扰。
我们的应用程序会定期通过 SPI 总线向以太网 PHY 中的某些寄存器启动读取命令。 当我们要对其他寄存器执行多次 SPI 读取时、偶尔会发生其中一次调度的读取操作会干扰已经发生的 SPI 读取。 请参阅以下内容:
为了解决其中一些误读问题、我们已尝试多次读取每个寄存器。 然而、当我们重复读取寄存器时、有时连续的读取会混合到一条命令中、此时芯片选择在发送的所有数据之间保持有效。 我们使用的 PHY 一次仅接受一个读取或写入地址。 该命令包含一个读取/写入字节指示器(分别为0x02或0x03)、一个地址字节、然后是来自开关的响应。 片选线路保持活动状态之后的任何其他时钟切换都会被我们的 PHY 视为从初始地址发送的地址读取/写入数据的请求。 这也会导致产生错误。 请参阅以下内容。
我们是否需要采取措施来确保当前在总线上处理的 SPI 消息在新消息开始之前完成? 我尝试打开位以启用 MCSPI 控制器中的 FIFO、但这似乎没有改变结果。