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.

[参考译文] INA237:寄存器读取值与数据表不匹配

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1056080/ina237-register-read-value-doesnot-match-the-datasheet

器件型号:INA237
主题中讨论的其他器件: INA226INA238

您好,我  试过 两种类型的 INA237。它们是   INA237AIDGSR 和  INA237AQDGSRQ1,并且 我用   STM32连接了它、   下面是原理图   

我  发现     寄存器值  与  下面的数据表,不匹配 是   我  读取的寄存器值。真的很奇怪

但是、我 还尝试  使用 INA226来替换 INA237(引脚-引脚),、并 使代码和原理图保持不变,然后我可以读取正确的值。

我不知道。。。。的原因

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

    您好!

    您的电路似乎配置正确。 我假设您在设置任何内容并获取这些值之前只是从寄存器中读取数据?  

    我有几个问题要问、以便更好地帮助您。

    A0和 A1连接到什么? 是否为 A0和 A1配置使用了正确的 INA 地址?

    您以多快的速度运行 I2C?

    是否可以查看 I2C 通信范围截图?

    此致、

    Castrense

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

    1.yes,我在读取寄存器,之前没有设置任何值、之后 我还尝试向 某些 RW 寄存器写入新值、例如 config、shunt_CAL、ADC_CONFIG,、但该值甚至无法更改。

    2.A0、A1均下拉至 GND、此处为。Ω

    3.I2C 速度为100k,标准模式。

    4.yes,但可能需要一些其他时间,我稍后将上传范围截屏。

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

    您好!

    我看不到电路有问题。 以上讨论中我唯一的问题是您没有与 INA 通信。 由于您将 A0和 A1作为 GND、因此 INA237地址应为1000000。  

    让我们还确保您正在正确启动读取。 首先、必须设置一个寄存器指针来指向要读取的寄存器、然后才能读取寄存器。

    下面是数据表的一些屏幕截图、其中说明了如何执行这些操作。  

    图1.

    图2.

    如您所见、要设置寄存器指针、您必须首先通过在 SCL 为高电平时将 SDA 拉为低电平来发送起始值、然后发送 INA237的地址(1000000)、再进行写操作、以便主器件通信的第一个字节应为10000000、 那么 INA 应该会进行 ACK。 第二个字节必须是要读取的寄存器地址、如果是配置寄存器、则为0x00或00000000。 然后通过让 SDA 和 SCL 进入来发送一个停止条件。  

    下一部分是我们从该寄存器获取数据的部分。 首先发送起始地址、然后发送读取地址(10000001)。 然后 INA 将进行 ACK 并读回数据的第一个字节(MSB)、主器件应进行 ACK。 然后、INA 将发送第二个字节(LSB)、并且主器件可以发送 ACK、也可以不发送 ACK。 这将是读取一个寄存器的通信结束。  

    您还需要注意 INA237数据表的第6.6和6.7节、以确保满足所有 I2C 通信时序要求。  

    我将等待示波器快照。  

    此致、

    Castrense

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

    大家好、  INA237的示波器截图就是这样的

     ,黄线是 SDA,红色是 SCL,测试点在 ADUM1250。的引脚2和引脚3上

    我们已经尝试了3 种不同的芯片:INA226,INA237,INA238,、示波器快照几乎与上面的。相同

    下面是 测试结果 和我们自己的分析:

    首先、我们发现当 MCU 尝试发送低电平时、 在)。()ADUM1250,后,低电平不是很低,但是0.8V 至1V 级(如图所示,当从器件,INA237。ACK 时,低电平可被下拉至接近0 μ A,与 INA237和 INA226的两个数据表相比,    ,,两个芯片的 VIL 是不同的,226),数据表中的 VIL 是0.3*vs(page.6在我们的设计中是0.3*5=1.5V;但对于237,,VIL 是0.4V。所以,在当时 。我们猜是低电平太高导致 INA237工作异常

    ,、 ,我们将 R60和 R71从10kΩ Ω 替换为20k Ω,测试 。波形更改了小,Ω、寄存器读取值与预期的 Ω 错误

     

    ,、 ,,。使用具有相似电气特性的 INA238(替换了 INA237),保持20kΩ Ω 上拉电阻器我们发现电阻器读取值完全正确 Ω、如下所示

     ,   , 。几乎相同,0.8V 至1V 低电平级仍然存在并且也超过了 INA238 μ A 的 VIL 阈值

    然后,我们再次用4.7kΩ,Ω TEST 替换了上拉电阻器,波形保持不变、但寄存器读取值错误

     ,然后,,再次使用10kΩ,Ω 测试替换了上拉电阻器。寄存器读取值错误。再次将上拉电阻器重新替换为20kΩ,Ω 测试,寄存器读取值正确

    ,这是我们的测试结果表:

    芯片 4.7kΩ Ω 上拉电阻 10kΩ  Ω 上拉电阻 20kΩ  Ω 上拉电阻
    INA226 寄存器读取值正确 寄存器读取值 正确 寄存器读取值 正确
    INA237 寄存器读取值错误 寄存器读取值 错误 寄存器读取值 错误
    INA238 寄存器读取值 错误 寄存器读取值 错误 寄存器读取值 正确

    这是一个非常有趣的现象:我从  ADUM1250,的引脚2和引脚3制作了两根跳线   ,因此我们的探头夹可以很方便地测试信号。当我们测试 INA238,时,如果我们不将探头连接到跳线,读取值是正确的但如果我触摸 用我的手,寄存器读取值错误。

    ,我完全不明白:

    1:不同上拉电阻器为什么会导致不同的读取结果?

    2、INA237和 INA238    ,。VIL,相同的电气特性为什么238可与20kΩ Ω 上拉电阻器配合使用 Ω、但237不能与 Ω 电阻器配合使用

    3.如何解释 当我触摸跳线,读取值改变。  

    此致!

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

    您好!

    该问题似乎是由 ADUM 可以执行的低逻辑电平电压引起的(如您所述)。 INA 237必须具有最大值为0.4V 的低逻辑电平电压、因此 ADUM 的1侧的低电平为900mV 过高。  

    对于不同的上拉电阻器导致不同行为的原因、ADUM 上的负载将导致不同的拉电流特性。  

    2、这可能是由于器件变化所致。

    3、轻触所加载 I2C 线路的导线。

    如果您有任何其他问题、请回复

    此致、

    Castrense