主题中讨论的其他器件: UCD9090
使用 Xilinx FPGA XIIC 内部的 I2C 适配器通过 PMBus 与 UCD9090A 进行通信、并使用 Salae 逻辑分析仪捕获以下波形、我们将读取命令0x8B、器件地址为0x68。 通常情况下、比如有5%的时间器件不对其地址进行跟踪。 从这张快照来看、看起来是一个有效的 I2C 事务与一个 NAK、而不是来自 UCD9090的 ACK。 有没有想到会发生这种情况的原因?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
使用 Xilinx FPGA XIIC 内部的 I2C 适配器通过 PMBus 与 UCD9090A 进行通信、并使用 Salae 逻辑分析仪捕获以下波形、我们将读取命令0x8B、器件地址为0x68。 通常情况下、比如有5%的时间器件不对其地址进行跟踪。 从这张快照来看、看起来是一个有效的 I2C 事务与一个 NAK、而不是来自 UCD9090的 ACK。 有没有想到会发生这种情况的原因?
您好、Yihe、
我不明白您的第一个问题、总线在 FPGA 和 UCD 之间、我们正在捕获2个器件之间的示波器屏幕截图。 纠正这是我们不明白的问题、为什么有时器件不想 ACK 并看到 NAK。 在我们使用 Linux shell 命令读取输入文件之前、我们基本上一直反复执行"cat in10_input"命令、有时甚至会出现此错误。 请记住、这是通过使用外壳手动完成的、因此设备访问非常慢。 在失败之前、我们需要进行一系列成功的读取。
您好、Yihe、
XIIC 允许我们在低时钟的中间移动 SDA 边沿变化, 我们尝试在结果未做任何更改的情况下、它没有解决我们的问题、例如、我们让它在低时钟的中间位置、它仍然偶尔出现一次故障。 请注意,当我们写入设备地址时会发生故障(NACK),因此在失败的事务中没有重复的开始,它只有一个字节与地址0x68 , WUCD 看不到它,也不会使 ACK 生效。 两个信号 SDA 和 SCL 上的电阻器均为2.4K。 我们注意到的一个区别是加密狗在发出如下所示 ACK 的第9个时钟之前存在一些延迟、此处我们使用地址0x0B 用于总线上不存在的器件、以确保加密狗添加了延迟。
此致、
日文
您好、Yihe、
我们在失败前的每个事务中都看到了此问题、 因此您正好是%1。前一个事务会扰乱状态机、此处用红色正方形标识的停止位时钟应保持高电平。 但由于某种未知原因、它在数据传输到高电平(红色正方形)的同时转换回0。 这是通过 XIIC 器件实现的、我们无法通过加密狗看到它。 对于 I2C 时钟问题、当时钟变得低时、将问题归咎于主器件或从器件并不容易、 但由于您的软件狗不会发生这种情况、 因此我要将问题归咎于 XIIC 或其设备驱动程序、因此我们现在将着手处理此问题。 谢谢 Yihe。 如果你不介意,让我们保持开放,我会保持你张贴.