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.

[参考译文] INA238:器件似乎已损坏、还是虚假器件?

Guru**** 2535150 points
Other Parts Discussed in Thread: INA238, INA228, TI-SCB, SYSCONFIG

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1101013/ina238-the-device-seems-to-be-corrupted-or-is-it-a-fake-device

器件型号:INA238
主题中讨论的其他器件: INA228TI-SCBSysConfig

您好!

INA238到处都是缺货、但我确实需要它、并发现有人在 AliveXpress 上销售它。 我购买了它并测试了2个器件、结果相同。

我从头开始编写一个驱动程序、因此可能我犯了一个错误。 我使用逻辑分析仪记录了 I2C 事务、请找到以下日志文件:

写入0x45 ACK 数据:0x00 0x80 0x00
写入0x45 ACK 数据:0x3E
读取0x45 ACK 数据:0x54 0x49
写入0x45 ACK 数据:0x3F
读取0x45 ACK 数据:0x22 0x81
写入0x45 ACK 数据:0x00 0x00 0x10
写入0x45 ACK 数据:0x00
读取0x45 ACK 数据:0x00 0x00
写入0x45 ACK 数据:0x02 0x27 0xC0
写入0x45 ACK 数据:0x02
读取0x45 ACK 数据:0x27 0xC0
写入0x45 ACK 数据:0x01 0xF4 0x92
写入0x45 ACK 数据:0x01
读取0x45 ACK 数据:0xf4 0x92
写入0x45 ACK 数据:0x06
读取0x45 ACK 数据:0x00 0x00
写入0x45 ACK 数据:0x05
读取0x45 ACK 数据:0x00 0x00
写入0x45 ACK 数据:0x0B
读取0x45 ACK 数据:0x00 0x00

如您所见、我首先通过在配置寄存器中写入0x8000来重新启动器件。 然后我可以成功读取公司 ID 寄存器中的"TI"、但第一个奇怪的回答是下一个、我应该读取0x2381或0x2380、但我正在读取0x2281 (不过这是另一个 TI 参考)。

然后、我将0x10写入配置寄存器、以将刻度范围设置为40mV。 然后、我将读取同一个寄存器、得到0x00。

然后、我将0x27c0写入 分流校准 寄存器、并读回0x27c0、因此这里的一切都正常。

然后、我将0xF492写入 ADC 配置 寄存器、并读回0xF492、同样、在这里可以。

但随后、我将读取总线电压寄存器(我在其上插入了3V 电源)和温度寄存器、但两者都得到0x0000。

最后、我将读取 DIAG_ALRT 寄存器、当我应该读取0x1时获得0x0。 0x0表示"在器件调整存储器空间中检测到校验和错误。"

我确认、我在2个不同的定制板上焊接了2个不同的装置、结果完全相同。 如果是假的、我不应该读取任何寄存器? 您对此问题有什么想法吗?

感谢您的帮助、

Arthur

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

    尊敬的 Arthur:

    我知道这不能立即解决您的问题、而是只能从 TI 的授权经销商处购买。

    Kai

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

    您好、Arthur、

    奇怪的是、它读作 INA228而不是 INA238、我想知道它们是否为您提供了 INA228? 无论哪种方式、我看到的最大问题是 MEMSTAT 位实际上应该读为1。 由于您的值为0、因此绝对错误。 因此、该器件应返回 TI 进行故障分析。 此过程将通过您从中获取器件的来源来完成、但以下几条建议应有助于:

    故障分析页面: https://www.ti.com/support-quality/additional-information/failure-analysis.html

    客户退货页面: https://www.ti.com/support-quality/additional-information/customer-returns.html

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

    您好 Mitch、

    器件标识为 INA238、因此看到 INA228很奇怪。

    好的、我将检查我是否可以退回这些器件。

    同时、我同意 Kai 的观点、但遗憾的是、我在任何地方都找不到该器件(或 INA228)。 我是否错过了一些东西? 您知道有库存的经销商吗?

    感谢您的帮助、

    Arthur

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

    您好、Arthur、

    目前我不知道有谁库存。 我建议 转到器件产品页面、并在订购部分中单击"可用时通知我"。   

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

    您好 Mitch、

    感谢您的提示、这就是我所做的。

    TI store 中没有焊接器件库存、但仍有一些 INA228评估板(INA228EVM)。 我订购了其中2个、目前正在测试它们。

    首先、器件 ID 现在看起来是正确的并且与器件标识(INA228)相匹配。 但我在寄存器中读取的内容与现实不符。

    让我解释一下我的设置:

    我在负载的高侧插入了一个100欧姆的分流电容器、这是一个2千欧的电阻器。 我将施加3V 的电源电压(我们称之为 PS1)、用于测量发送到系统的电流(此处为14.5µA μ A)。

    IN+和 IN-插入分流电阻器、VBUS 插入电源电压(与 IN+相同)。 VS 引脚被插入到来自 I µController ² C 板的3V 电源上(让我们称之为 PS2)。 一个 GND 引脚插入 PS1的 GND、另一个 GND 引脚插入 PS2的 GND。 SDA 和 SCL 被插入到我的 μ µController I2C 总线。

    然后、当我引导我的示例代码时、我将执行以下序列:

    将 0x8000写入配置寄存器0x00 =>复位 INA228

    将0x10写入配置寄存器0x00 =>设置40.96mV 范围、无 ADC 延迟和分流温度补偿

    将0x1000写入分流校准寄存器0x02 => 13107200000* Current_lsb*rshunt*4,其中 Current_lsb =(0.04096/rshunt)/524288

    将0xF000写入 ADC 配置寄存器0x01 =>最短转换时间、不求平均值、连续测量温度、总线、分流电压

    从温度寄存器0x06读取会得到0xccc =>当 LSB 为7.8125mDeg 时、结果为25.5°C =>这是正常的

    从总线电压寄存器0x05读取的值会得到0x3c6 =>我将该值右移4位、然后乘以195.3125µV μ V 的 LSB、而我有11718µV μ V、这是错误的、因为我应该有3000000。

    从当前寄存器0x04读取会得到0x3d7 =>我将该值右移4位、然后乘以7.8125e-10的 LSB、我得到的47E-9也是错误的。 我预计为14e-6

    我尝试了这两种 EVM、结果相同。

    您是否发现任何问题?

    谢谢、

    Arthur

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

    您好、Arthur、  

    在我看来、您的代码可能有问题。  总线和电流寄存器的最后4位都是保留的、并且应该一直读取为0。  在本例中、您得到的是非0值。  您可能没有为这些寄存器读取足够的字节? 我有两个建议来帮助测试这一点。

    您可以获取 TI-SCB (https://www.ti.com/tool/TI-SCB)并使用我们的代码/GUI 测试 EVM、以确保其在您的系统中正常工作。

    2.您可以使用 SysConfig 帮助更新代码(或创建测试代码项目)、以查看是否可以获得正确的值。 SysConfig 可在以下位置找到: https://dev.ti.com/sysconfig/index.html?product=ascstudio 、也可以使用此链接在已添加 INA228的情况下启动项目: https://dev.ti.com/sysconfig/index.html?product=ascstudio&module=/ti/sensors/currentsensor/INA228

    您也可以在选项1之前尝试选项2、以防您在不订购更多硬件的情况下使其正常工作。

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

    您好 Mitch、

    感谢您提供有关字节数的提示、我只读取了16位数据。 现在、它按预期工作。

    最后一个问题、我进行了测试设置以检查测量结果、这是一个简单的3V 电源(显示消耗的电流)、它插入了一个240kOhm 负载电阻器。 INA228使用一个100欧姆的分流电阻器。

    当电源电流消耗为15µA μ A 时、INA228测量的是12.5µA μ A。 如果我拔下 Vbus 引脚、则电源显示12.5µA μ A。 因此、Vbus 引脚似乎从线路上汲取2.5µA μ A 的电流。 我查看了数据表、找不到任何有关此泄漏的信息、它们仅在关断时讨论泄漏。

    您能否确认 Vbus 引脚在测量期间消耗电流?

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

    尊敬的 Arthur:

    是的、VBUS 引脚在测量期间确实会消耗电流。 数据表未定义电流、因为电流会根据总线电压而变化。 相反、数据表定义了输入阻抗(Zvbus)、然后您可以计算预期的电流损耗。  从数据表中我们可以看到:

    因此、当典型值为1MΩ Ω 时、3V 时的预期电流为 I=V/R = 3/1M = 3µA Ω。  由于您看到的是2.5µA Ω、因此输入阻抗为 R = V/I = 2.5µ Ω= 1.2MΩ Ω、这是 Zvbus 的最大指定值。

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

    感谢您的详细回答、很明显。

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

    您好 Mitch、

    我现在回到这个话题、因为我遇到了一个关联的问题。

    当我尝试测量非常低的电流时、该 Vbus 电流是一个问题。 为了降低其影响、我计划仅启用连续分流电压测量、有时使用单次触发测量来测量 VBUS 电压。 然后、我意识 到该 Vbus 引脚输入阻抗在有源模式下、这意味着只要我进行任何测量(仅限分流器或温度)、就会消耗电流。

    测量分流电压时、您是否确认集成多路复用器无法完全断开 VBUS?

    如果是、为了解决我的问题、我计划添加一个与 Vbus 引脚串联的 MOSFET 晶体管(或1至2多路复用器)、以便手动连接或断开它。 您是否考虑其他更简单的方法来解决此问题?

    最棒的

    Arthur

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

    尊敬的 Arthur:

    我相信您正确的是、在进行其他测量时不能断开连接、但我已联系设计团队进行确认、并将告知您他们是否会说些不同的事情。  

    如果您想手动断开、那么只要该电路使用的电流不超过您尝试节省的电流、MOSFET 的想法就显得不错。

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

    您好 Mitch、

    我尝试了多种解决方案。 MOSFET 不是一个好主意、因为我在 VGS 上没有正确控制它所需的电压。 P-FET 和 N-FET 都无法工作。 因此、我决定使用多路复用器。 在控制侧、一切都好。 但是、INA228似乎不喜欢一直连接和断开其 VBUS 引脚的想法。

    当我在单次触发模式下进行 VBUS 电压测量时、我通常会得到一个与实际值相比非常低的电压。 例如、对于3V 电压、我得到2V。 有时、它会正确返回3V。 我尝试在多路复用器连接和测量之间设置延迟(最多2秒)、但它只是降低了误差频率、而不会将其完全删除。

    此外、我有时会在警报寄存器中提高"总线电压超限"。 我没有更改限制寄存器、这意味着当我重新连接时、它会检测到一个巨大的电压。

    您对这里发生的情况有什么了解吗?

    谢谢你

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

    您好 Mitch、

    我有更好的理解。 它不是总线电压超限、因为 diag_alrt 等于0b10000。 MEMSTAT 位等于0。 当我复位器件时、该位会改回1、一切正常。 为了重现此问题、我只需在环路中读取电流、功率和能量寄存器、2-3秒后、MEMSTAT 位变为0、所有寄存器值都挂起到最后一个值。

    我尝试过100kHz 和400kHz 的 I2C 时钟频率、结果仍然相同。

    会导致"器件修整中出现校验和错误
    存储器空间"?

    最棒的

    Arthur

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

    我刚刚尝试用一个运算放大器替换多路复用器、它充当 VBUS 和 VBUS 引脚之间的缓冲器(同相配置)。 这将解析我到 VBUS 引脚的泄漏电流。 它比多路复用器更简单、因为我不必控制连接/断开。

    不过、我仍然遇到 MEMSTAT 问题。 我还尝试了一个官方 INA228EVM 板、我可以通过读取环路中的寄存器来重现此问题。  

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

    您好、Arthur、

    我很高兴您能够让您的设置与运算放大器配合使用。

    我想重复一下您在我的末尾遇到的 MEMSTAT 问题、现在还没有解决。  在使用默认设置且无负载的情况下尝试读取测试时、您是否仍然收到错误? 还是 仅使用特定于用例的设置和负载?

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

    您好 Mitch、

    感谢您尝试重现问题。 我使用了逻辑分析仪、并注意到 INA228正在发送正确的数据、diag_alrt 寄存器也正常。 我开始研究我的代码、我的 I2C_Read 实现使用从未释放的 malloc。。

    很抱歉、错误在我这边。 现在一切都运行良好。 再次感谢您的帮助

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

    好的、谢谢您的告知、很高兴您找到了!