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.

[参考译文] ADS1110:I2C 常规调用响应?

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1172852/ads1110-i2c-general-call-response

器件型号:ADS1110
主题中讨论的其他器件: ISO1540ISO1640TCA9535PCF8574

大家好、

根据数据表、ADS1110正在响应 I2C 常规调用。 然后、它通过 Ack 逻辑响应总线上的00h 器件地址。

下面是我的问题:

它是否仅在00h 地址是起始信号后的第一个字节时才确认它?

配置:
在我的系统中、ADS1110和 AT24C04 (EEPROM)连接在同一个 I2C 上。

向 AT24C04写入数据需要3个字节(器件地址为1个字节、EEPROM 字节位置为1个字节、将要写入的数据为1个字节)。
当 ADS1110连接到总线上时、我遇到了奇怪的行为、无法在 EEPROM 中写入字节值01h。
通过使用示波器查看 i2c 帧、可以发现数据字节的 lsb 位在不应该被拉低的情况下被拉低。

下面是在 I2C 总线上连接 ADS1110并在位置29h (AT24C04地址为50h)写入01h 时的示波器屏幕截图:查看第三个字节(黄色)的 lsb:

以下是相同的写操作,但 ADS1110未连接到总线(ADS1110安装在可拔下的附加电路板上):

我的问题是:第二个"ack"位和后面的七个位(形成一个00h 字节)是否可以理解为 ADSS1110的常规调用?
这不应该是因为它不是一个地址字节、但到目前为止、这是我唯一的理解。
还有其他想法吗?

感谢你的帮助。

勒内

PS:这是附加电路板原理图:

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

    您好 Ren é

    您能否共享 EEPROM 的原理图?

    我同意、我认为  ADS1110不 会将数据命令解释为常规调用。 常规调用仅在数据是地址字节时进行。  

    我预测这可能与数字隔离 器器件 ADUM1250相关、如果您可以在没有该器件的情况下进行测试、以消除该问题的根源。

    请注意、假日期间、假日之后可能不会有回复  

    此致

    Cynthia

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

    您好、Cynthia、

     

    我已经在没有隔离器的情况下进行了测试、但问题未出现。

    在移除 ADS1110时、我还尝试保持隔离器就位、但问题也不会出现。

     

    这两项测试表明、这是导致问题的关联 ADUM1250+ADS1110、但它们都不是100%负责的。

    ADUM1520没有嵌入逻辑器件,只需通过 SDA 和 SCL 线路的两路信号即可。 但它也发挥了放大器…的作用
     

    您说过、您认为 ADS1110对常规调用的解释不正确。 您能确定这一点吗?

    我已订购 Microchip 的 MCP3425和 TI 的 ISO1540,它们是引脚对引脚等效的。

    获得 MCP3425、无改进。

    我现在正在等待 ISO1540 (顺便说一下,ISO1540和 ISO1640之间的区别是什么,只 消耗35mA 至50mA 的电流?)

    我会随时向您发布结果。

     

    我不允许共享原理图,但关于 EEPROM,没有太多可知:

    • EEPROM 是 AT24C04
    • 控制器是 LPC1768
    • I2C 总线由 GPIO (P0.28=SCL、P0.27=SDA)控制、并由 LPC17xx.CMSIS 库驱动、这是一种非常经典的软件。
    • SDA 和 SCL 线路通过1k 电阻上拉至5Vdc
    • 控制器和 EEPROM 之间的距离约为3cm (同一电路板)
    • 控制器和 ADS1110之间的距离约为80cm

     

    请注意,它们不是 I2C 总线上的其它设备(PCF8574、TCA9535、压力传感器),它们都运行良好(我认为这些设备的 I2C 协议只有2字节,地址+数据),我所面临的问题从第3字节开始。

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

    是的、我确信 ADC 不会将第二个字节解释为常规调用。 一般调用需要是一个地址、根据定义、地址需要位于起始条件之后。

     ISO1540和 ISO1640 完全兼容、 ISO1640是一款更新的器件、具有更好的隔离额定值和更低的电源电压额定值。

    仔细观察示波器快照、似乎有一些边缘计时性能。 SDA 上的通信似乎是边沿触发的。 SDA 数据不应与任何 SCL 边沿对齐。 SDA 位应该包含一个完整的高 时钟脉冲并且在 SCL 为低电平时改变状态。 您是否正在通过主机器件创建图形以 模拟 I2C 通信? 这种做法通常称为位拆裂、不是一种好做法。  

    您能否深入了解您的主机器件以确保您使用了正确的 I2C 时序协议?  根据您共享的内容、您不使用 I2C 协议总线、我假设27个引脚、28个是  LPC1768的引脚编号、而仅是 GPIO 引脚

    您应该在主机器件上使用支持 I2C 的指定引脚、例如引脚25和24。

    此致

    Cynthia