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.

[参考译文] PGA309:通过 I2C (两线制)协议实现 PGA309通信问题

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1322162/pga309-pga309-communication-problem-via-i2c-two-wire-protocol

器件型号:PGA309

您好!

我有一个通过 I2C (两线制)协议与 PGA309的内部寄存器进行对接的问题。 我想完全控制 PGA309、因为我想根据需要改变增益/偏移值、而不是使用 EEPROM 来改变。 因此、我阅读了用户指南和数据表、并且了解到我必须将 PGA309的测试引脚驱动至高电平、以便通过 I2C 进行全面控制和通信。 但是、我不能与 PGA309通信。 我正确发送了器件地址、但 IC 没有响应(NACK、它没有下拉第9条中的 SDA 线。 时钟)。 我通过示波器分析了 SCL 和 SDA 线、没有问题、图看起来不错。 此外、我更改了 I2C 时钟频率、例如400,200和100 KHz、但仍有同样的问题。 顺便说一下、我在输入上没有信号的情况下检查了 PGA309、它正在工作。 我测量 PGA309的输出、并在用户指南中使用默认寄存器值(零 DAC 偏移为1.25V、输出放大器增益为2、增益 DAC 为0.5、所以输出必须为1.25V)、它的显示电压为1.25V、所以看起来不错。

之后、在同样的设置下、我尝试与 EEPROOM 连接(PGA309和 EEPROM 时序图相同)、并且我可以读取 EEPRROM (像第一个地址数据是5449、TI 为 ASCII)。 当我尝试写入 EEPROM 时、我无法写入、但我想这是因为有一些其他东西)。

"我不知道你在胡说什么,我不知道你在胡说什么。"


注意:我正在将 PGA309评估模块(PGA309EVM-USB)的 PGA309测试板与我的控制器单元一起使用。

注2:当我尝试使用网站上的软件来测试完整的 PGA309评估模块时、我可以通过一根线来设置寄存器值、但同样、我不能通过 I2C 与 thw PGA309进行交互。 在数字接口部分选中"One-Wire sele"的情况下、按下"Read All Reg"按钮时、我可以读取/写入所有寄存器。 不过、如果我选择了"I2C 选择"、则无法读取、当我按下"Read"按钮时、所有寄存器值都会显示 FFFF。 我不知道为什么我不能通过 I2C 进行连接。 (我在测试引脚打开和关闭时尝试了这两种方法)。

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

    Mehmet,

    能否发送 I2C 通信的示波器波形?  您在使用什么地址。

    此致、 艺术

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

    我正在为 PGA309使用"100_000"(h"40")地址。I2C 时序图如下面所示。  

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

    Mehmet,

    感谢波形。  我同意 PGA309看起来没有响应。  我有几个问题,希望能够揭示问题的根源。

    1. 您是否使用内置控制器 I2C 接口或位拆裂?
    2. 由于您可以读取 EEPROM、我认为您可能有一个可正常工作的 i2c 接口。  但是、在我观察 SDA 信号的上升沿时、它们看起来非常尖锐。  我只是想确认一下: 您是否在 SDA 上使用开漏驱动器?  您正在使用什么上拉电阻器?
    3. 在当前时间标度上、我看不到 SDA 信号相对于 SCK 上升沿和下降沿的设置和保持时间。  您能否确认您满足 I2C 设置和保持要求?
    4. 我注意到您没有第9个确认时钟脉冲。  从技术上讲、SDA 线应该在第8个时钟脉冲之后和第9个时钟之前下降到低电平、但我习惯看到第9个时钟。
    5. 我确实看到 SCL 和 SDA 之间有一些严重的串扰。  这在 I2C 通信中不太常见、但可能会导致数据完整性问题。  控制器和 PGA309EVM 之间是否有电缆?  如果可以、您可能需要在 SCL 和 SDA 之间放置屏蔽。
    6. 我注意到您的逻辑低电平看起来有点高。  我通过图形方式尝试检查您是否超出了逻辑低阈值、我不认为您超出了该阈值。  不过、我认为这个电压相当高是不常见的。  您的上拉电阻器可能过低、这会将逻辑低电平值拉高并使 SDA 的上升沿变快。  我不认为这是一个问题、但它看起来很不寻常。
    7. 请注意: PGA309上的 I2C 接口通常不用于通信。  通常情况下、器件通过单线制接口进行编程、编程后、数字接口将不再使用。  某些微控制器应用程序可能在您尝试使用 I2C 时使用它、因此您应该能够尝试执行任何操作。  我的问题是: 为什么要使用 i2c?  您的总体目标是什么?

    此致、艺术  

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

    我想我弄清楚了是什么问题、这是关于我的 I2C 驱动器的问题。 我没有使用内置控制器、我尝试了一些具有内置 I2C 控制器的其他器件、并且可以与 PGA309进行交互。 我在控制器中尝试了一些更改、最终它现在可以正常工作:)但我仍然 无法写入 EEPROM、但这对我来说不是必要的、而且我以前不知道问题出在哪里。 非常感谢您的帮助和建议。 如果遇到问题、我将在此论坛中再次写入。

    1.我不使用内置控制器。

    2.在事务处理过程中我将 I2C 引脚驱动为高电平和低电平,当没有事务或读取部分时我释放总线(高 z)。 我使用4.7k 上拉电阻器。

    3.我检查了设置和保持时间,但看起来不错。

    4.实际上我在第9位检查 SDA 线。 时钟的上升沿、如果我读取高电平、那么我停止通信。

    是的、我在控制器和 PGA309EVM 之间有一根跳线电缆。 此外、我还使用了控制器、PGA309EVM 模块和跳线之间的移位电平。 我将考虑屏蔽。

    6.我不知道为什么 低频信号有点高,但我会记住这个问题。

    7.注:我阅读并找到了 PGA309的2个接口协议、并对 I2C 进行了调整、因为它的知名度要高一些、而且我对单线接口不太了解。 这就是为什么我使用 I2C、但 对带有 PGA309的 I2C 没有任何限制或别的东西、对吧?

    此致、Mehmet