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.

[参考译文] ADS1119:I2C 通信错误

Guru**** 2374090 points
Other Parts Discussed in Thread: ADS1119, ADS112C04
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/985791/ads1119-i2c-communication-error

器件型号:ADS1119
主题中讨论的其他器件: ADS112C04

当在 I2C 通信中执行写入或读取过程时、从器件侧将 SDA 固定为低电平。 作为一种对策、在读取 AD 转换之前添加了读取 ADS 1119中转换完成的命令、但再次出现错误。 请告诉我是否有任何措施。 我将回答有关环境和软件的任何问题。 此外、如果该错误仍然存在、我想更改为 ADS 112 c04、但是否会发生相同的错误?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、6569991、

    ADS1119使用标准 I2C 协议。  ADS112C04上使用了相同的接口。 ADS1119数据表中显示了通信和时序。

    我不清楚你说什么是问题。  在 I2C 启动条件发生后、第一个初始8个时钟是7位地址、后跟 R/NW 位。  如果 ADS1119的响应被正确寻址、将是在第9个 SCL 时钟期间发生的 ACK。  ACK 由 ADS1119拉低 SDA。  在第9个时钟之后、ADS1119将释放 SDA、并且主器件的进一步通信将继续执行接下来的8个 SCL、然后是第9个用于 ACK。

    如果您遇到通信问题、故障排除的最佳方法是使用示波器或逻辑分析仪探测 SCL 和 SDA 引脚。  如果您可以捕获通信的快照、我可以帮助排除通信故障。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好 Bob

    我的英语不好、所以请告诉我是否很难理解。

    我负责解决询问以下 URL 的人员的问题。

    https://e2e.ti.com/support/tools/ccs/f/code-composer-studio-forum/908194/ccs-ads1119-i2c?tisearch=e2e-sitesearch&keymatch=ADS1119


    突然、我在读取 AD 转换和读取寄存器之前进行了一个循环来监控 DRDY、直到它变为高电平、我认为该错误消失并被解决、但在大约2个月后、同样的错误再次出现。

    如果您对源代码或环境有任何疑问、我将回答这些问题、因此请帮助我找到原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、6569991、

    从您提到的上一个帖子中、该人声称通信问题已解决。  不幸的是,我不清楚为解决这一问题采取了什么行动。

    根据前面的讨论、我将假定正在监控寄存器1 DRDY 位并变为低电平并保持低电平。  如果是这种情况、您使用的是连续转换模式还是单次模式?

    如果转换暂停、ADS1119可能已接收到某种形式的瞬态、从而使 ADS1119复位。  瞬态可能在电源上、也可能在模拟输入上。

    如果 ADS1119由于瞬态而复位、转换将停止并将寄存器重新初始化为默认值。  代码中可使用的一种方法是发出一个运行一个计数周期的循环、如果运行时间长于一个转换周期、则会调用一个诊断函数、该函数将读取 ADS1119寄存器值以查看设置是否为默认值 值。  这将告诉您器件已复位、您需要重新配置并重新启动转换。

    如果我怀疑 ADS1119正在复位、则应防止瞬态进入 ADS1119。  这可能需要在器件输入端添加额外的组件、例如 TVS 二极管和铁氧体。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好 Bob

    很抱歉耽误你的回答。

    当寄存器1的 DRDY 位被监控并变为低电平并保持低电平时、该模式使用单次模式。

    尝试确定电源或模拟输入端是否存在瞬态。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在另一个问题中、它说瞬态现象可能已进入 ADS 1119并复位、但 ADS 112 c04是否有任何变化、瞬态现象不太可能发生于 ADS 1119、或者噪声更强?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请原谅我提出这么多问题。
    当执行读取或写入命令并访问 IC 时、不会在转换期间发生错误、而是会发生错误。 电源或模拟输入的噪声是否与此问题有关?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kazuya、

    如果噪声或瞬态事件影响 ADS1119、也会影响 ADS112C04。  ADS1119是 ADS112C04的一项降低功能。

    如前所述、当 DRDY 位保持低电平时、可能会有某种情况导致器件复位并停止器件运行。  这可以通过读取寄存器内容来检查、以查看这些值是否仍然是配置的值、或者它们是否是默认值。

    根据其他信息、可能还会发生其他情况。  如果您使用单次模式、则可能未执行 START/SYNC 命令来启动新的转换。  当您读取转换数据时、DRDY 位变为低电平。  为了使 DRDY 位变为高电平、必须完成转换。  在单次模式下、必须发出 START/SYNC 命令才能启动转换。  向 ADS1119发送 START/SYNC 命令时、器件应 ACK 命令 WRITE。  如果它用 NACK 进行响应、则转换将不会启动、DRDY 位将始终保持低电平。  您是否正在检查 ACK / NACK 并适当响应 NACK 条件?

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好 Bob

    尝试确定器件是否复位。

    当前面提到的 START/SYNC 命令发送到 ADS 1119时、器件是否有时会否定该命令 WRITE?
    它是否以 I2C 协议以外的其他协议运行?
    此外,在 NACK 的情况下,我想告诉我适当的措施。
    噪声是否会影响 NACK?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kazuya、

    您可以通过读回寄存器内容来确定器件是否已复位。  与 ADS1119的所有通信均遵循 I2C 协议、时序如数据表所示。

    对于 NACK、如果从 ADS1119器件读取并且返回的字节是序列中的最后一个字节、主机可能不会发出 ACK (而是 NACK)。  在写入时、ADS1119应始终以 ACK 进行响应。

    如果您看到 NACK 显示您希望 ACK 的位置、则需要作出适当响应。  第一步是重复该命令。  如果重复的响应仍然显示 NACK、则需要用户干预。  

    如果系统中存在噪声、尤其是 SCL 上的噪声、则可能发送了错误的地址或错误的命令。  您应该始终监控代码中的 I2C 通信以适当地处理任何错误。

    另一个潜在问题可能是由于在 SDA 和 SCL 线路上使用了错误的上拉值。  如果您使用大电阻(4.7K 或更高)并且 SCL 频率为400kHz 或更快、则可能没有足够强的上拉电阻返回到逻辑高电平。  可以使用示波器对这些信号进行监控、以确保计时不会延迟、以便对 I2C 信号线路的电容进行充电/放电。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将讨论现在发生的错误。

    上面示波器的图像以黄色显示 SCL、以蓝色显示 SDA、以绿色显示错误检测。

    它根据 I2C 协议指定地址并发送写入或读取命令。
    顺便说一下、从器件侧将 SDA 卡在低电平。

    是否针对这些问题采取了适当的行动?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kazuya、

    通信无效。  请注意、在下面标记的图像中、永远不会为 ACK / NACK 发出第9个 SCL 时钟。  这不是 ADS1119的问题、而是微控制器的问题。  完成最后一次传输的代码中可能缺少一些内容。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好 Bob

    ・我不知道缺少什么、所以如果您有类似的问题、请告诉我。
    ・当上述误差作为运动发生时、从器件侧是否将 SDA 设置为低电平?
    ・我目前使用相同的软件和硬件并运行多个单元、但其中只有两个单元存在此类错误、因此我想是硬件导致的错误、但这是错误的吗?

    此致

    Kazuya.O

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好  Kazuya.O、

    ADS1119的 SCL 输入是一个只连接输入的引脚、无法驱动时钟。  微控制器必须驱动 SCL、并且前一个示波器图中缺少第9个 SCL。  如果之前的数据被应答、SDA 将保持低电平。  为了从 ACK 中释放 SDA、需要从微控制器中释放第9个 SCL。

    因此问题是、您缺少了为来自微控制器的 ACK / NACK 传输的第9个 SCL。

    此致、

    Bob B