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:通过查找表进行实际增益 DAC 和零 DAC 计算

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1231961/pga309-actual-gain-dac-and-zero-dac-calculation-from-lookup-table

器件型号:PGA309

在用户指南的第3.2.1页69中、使用了增益 DAC 查找表计算算法、但它使用了增益 DAC 斜率、 在 EEPROM 中 、其为正数、我想知道 PGA 如何根据 EEPROM 的存储器值计算增益 DAC 斜率?  例如 、查找表中的值64999最初是64999、或者它是-537、计算出该值的2补码、结果是64999?

一般而言、PGA309是如何从查找表中计算 GMI 和 ZMi 中的增益 DAC 斜率和零 DAC 斜率的实际符号的? 它如何知道 它们是正面的还是负面的、并且被用来赞扬或不赞扬负面的价值?   

我也对温度值有同样的问题。 它如何知道温度值是负值还是正值?  

此致、

合田市

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

    Hoda、

    根据您的示例、64999是存储在 EEPROM 中的数字。  EEPROM 无法保存有符号数字。  它仅保存一系列8位长字。  PGA309从 EEPROM 中读取这些字并在算法中使用它们。  EEPROM 中存储的任何负数都以二进制补码的形式存储。   第1步显示了如何将一个负数转换为它的16位 等效二进制补码数。  根据本例、EEPROM 中存储的-20C 数字为 FEC0h (该数字实际上是十进制的-320)。  您可以使用此处的实用程序执行此转换:  https://www.binaryconvert.com/result_signed_short.html?decimal=045051050048 

    同样的方法也适用于温度、增益斜率和偏移斜率。  我希望这对您有所帮助。   

    此致、艺术

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

    尊敬的艺术、我的问题是 PGA309在想从 EEPROM 值中获取斜率时进行的反向计算。 想象一下我们将 EEPROM 值设置为0x851F、那么 PGA309如何首先计算出什么是斜率? 是34079还是-31457?  

    考虑用户指南第67页上的表3-3。 如果我们有增益 DAC 斜率(十六进制)、它们是存储在 EEPROM 中的值、如何得到上一列(增益 DAC 斜率(计数))? https://www.ti.com/lit/pdf/sbou024

    此致、  

    合田市

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

    Hoda、

    1. PGA309假定存储在 EEPROM 表中的数字是16位带符号的二进制数。  编号0x851F 会被 PGA309解释为-31457。
    2. 在校准过程中、您将需要 确定校正温度范围内的误差所需的增益和偏移。   下面 PDF 中给出的校准算法说明了如何根据最小和最大施加压力的测量值计算增益和偏移。  通常此过程在2或3个温度下完成、并使用多项式插值来确定其他温度下的增益和偏移。   
    3. 获得包含所有温度、增益和偏移值的表格后、您将计算零 DAC 和增益 DAC 的斜率值。  PGA309用户指南提供了计算斜率的等式。 我附加了一个 Excel 电子表格、该表格可以计算来自用户指南的相同示例。   
    4. 一旦获得增益和偏移斜率表、这些值被写入 PGA309 EEPROM 中。  EEPROM 在每个地址包含8位字、因此您需要将16位字一分为二(MSB 和 LSB)。  写入 EEPROM PGA309命令将允许将 MSB 和 LSB 写入 EEPROM 中的两个不同位置。  请注意、写入 EEPROM 的16位字是有符号二进制字。  因此、写入0x851F 将被写入两个位置:0x85和0x1F、但 PGA309将回读0x851F 并将其作为-31457进行互操作。
    5. 一旦 EEPROM 表被完全写入、PGA309将在加电时读取该表。  PGA309将 把表中的所有数字解释为带符号的二进制数。  PGA309将使用该表来调整温度范围内的增益和偏移、以校正传感器漂移。

    希望这对您有所帮助。  您可以考虑让 EVM 来查看算法如何用于针对您的传感器进行实际校准。  您还可以下载 LabVIEW 源代码并使用此代码了解校准算法。  下面是校准算法和 EEPROM 表示例。

    此致、艺术

    e2e.ti.com/.../sbou024b_2D00_pga309_2D00_calibration_2D00_algorithm.pdf

    e2e.ti.com/.../PGA309-TABLE.xlsx

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

    尊敬的艺术:

    感谢您发送的表单。 我已经使用增益 DAC 斜率十六进制、并试图推导第一个十进制计数。 但是、您可以在下表中看到反向计算(HEX2DEC)不会返回第一个值。 那么、我的问题仍然是 PGA309如何正确地执行相同的计算以恢复斜率计数的值? 我用红色为不同的值着色。 如果我是对的、他们认为是一样的、这是因为 PGA309执行同样的计算。

    此外、我计算了十六进制斜率的二进制值、您可以看到、反向计算中不需要使用符号位(通常是第16位)。  

    此致、

    合田市

    增益 DAC 斜率计数 增益 DAC 斜率十六进制 EEPROM MSB EEPROM LSB 增益 DAC 斜率计数(基于十六进制值)
    65535 FFFF FF FF 65535
    -15726 C292 C2 92 49810
    -31458 851E 85 1E 34078
    -47186 47AE 47 AE 18350
    -10486 D70A D7 0a 55050
    41942 A3D6 A3 D6 41942
    -19566 B392 B3 92 45970
    28107 6DCB 6d CB 28107
    增益 DAC 斜率十六进制 增益 DAC 斜率二进制
    FFFF 1111 1111 1111 1111
    C292 1100 0010 1001 0010
    851E 1000 0101 0001 1110
    47AE 0100 0111 1010 1110
    D70A 1101 0111 0000 1010
    A3D6 1010 0011 1101 0110
    B392 1011 0011 1001 0010
    6DCB 0110 1101 1100 1011
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hoda、

    1. 数字系统使用带符号数字的一种常见方式是"二进制补码法"。  PGA309就是这样处理有符号数字的。
      1. 字的长度是固定的长度。  在这种情况下、字的长度为16位。
      2. 字中的最高有效位是符号位。  如果符号位= 1、如果符号位= 0、则该字为负。  那么这个词是正的。
      3. 对于16位带符号字、值的范围为: -32768至32767。  这以十六进制表示为0x8000至0x7FFF。
    2. 在 二进制补码系统中内部使用数字的方式将在本  讲座中介绍:有符号数字的讲座。  这对于理解、使用 PGA309并不是必需的、但是你想知道 PGA309如何对带符号的数字进行互操作、并且从一个非常基本的意义上讲、这就是内部发生的情况。  
    3. 维基百科上对二  进制补码的另一个解释:维基百科上有符号数。  
    4. 简而言之、编号0xC292将作为-15726由 PGA309进行交互操作、因为 PGA309知道该编号是一个二补码16位数。  请注意、 0xC292等于 11000010 10010010、最高有效位是"1"。  因此、数值为负。
    5. 此工具可帮助您将十进制转换为十六进制和二进制、以补码16位数字:  转换工具 
    6. 绝大多数数字系统都是这样处理有符号数字的。  有关使用有符号数字的器件的另一示例、请参阅:  ADS1220是另一个使用有符号数字的器件。   此器件使用24位有符号数。  因此、对于此器件、数字0xFFFFFF 等于  十进制的-1。  您可以查看此图以查看有符号数的其他示例。  关键点是、二进制补码有符号数字的使用在数字系统中很常见。

    我希望这对您有所帮助。  我想您的主要问题与试图理解二进制补码的工作方式有关。  您可能需要通读上面链接中的一些文献。

    此致、

    艺术

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

    尊敬的艺术:

    让我使用您的声明"请注意、 0xC292等于 11000010 10010010、并且 最高有效位为"1" 。  因此、数值为负数 "这就是问题产生的地方。 如果我们将第16位视为符号、则表中 数字-47186和41942中存在两个例外。 对于-47186、十六进制值为0x47AE、二进制值为"0100 0111 1010 1110"。 您可以看到第16位不是"1"、那么我们如何知道它是负数?

    同样、对于第二个数字(41942)、十六进制值是0xA3D6、二进制值是"1010 0011 1101 0110"。 在此二进制数中、第16位为1、因此正如您所说、应将其解释为负数、而这一数字不正确!  

    增益 DAC 斜率计数 增益 DAC 斜率十六进制 增益 DAC 斜率二进制
    65535 FFFF 1111 1111 1111 1111
    -15726 C292 1100 0010 1001 0010
    -31458 851E 1000 0101 0001 1110
    -47186 47AE 0100 0111 1010 1110
    -10486 D70A 1101 0111 0000 1010
    41942 A3D6 1010 0011 1101 0110
    -19566 B392 1011 0011 1001 0010
    28107 6DCB 0110 1101 1100 1011
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hoda、

    1. 对于16位带符号2的补码数、您可以表示的值范围是-32768至32767。
    2. 在您的示例中、数字 -47186超出了范围。  注意、您将范围标识为 -47186和41942。  您会意外地将数字68转置为86。
    3. 请使用此工具:  https://www.binaryconvert.com/convert_signed_short.html?hexadecimal=8000 进行转换。   另外、请查看我建议的参考文献。

    此致、艺术

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

    尊敬的艺术:  

    根据您的说法、16位有符号2补码中不应有低于-32768和高于32767的数字。 但是、根据用户手册、有可能出现超出此范围的数字。 因此、反向计算不会获取第一个值。

    为了表明反向计算未获取十进制数(根据用户手册中的表3-3从十六进制到计数)、我计算 https://www.binaryconvert.com/convert_signed_short.html?hexadecimal=8000中的十进制数、 结果如下:  

    所以、请 告诉我如果这次重新计算并未返回同样的值、PGA309是如何计算第一个十进制值的? (我试图说此计算有问题)

    P.S.我已经阅读了你发送的参考,我知道应该有一个标志号码,这是不考虑在用户手册。

    此致、

    合田市

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

    Hoda、

    1. 关于编号41943和编号-47104: 您在文档中发现了一个错误。  这两个数字都超出了 -32768 至 +32767的允许范围。  如果器件斜率超过允许的范围、PGA309将不能对这个漂移水平进行补偿。
    2. 第一行的相关信息。  此行不是斜率。  该值是增益值。  表中的所有其他值均为斜率。  因此、G0是-40C 时的初始增益值、但所有其他值都是斜率。  实际增益 DAC 值不是有符号整数。   增益 DAC 值始终为正。    0x0000增益= 0.33333333、 0xFFFF 增益= 1.000000。
    3. PGA309EVM 软件是用 LabVIEW 编写的。  在 LabVIEW 和其他软件语言中、可将变量类型定义为有符号的16位整数。  当您在软件中将变量定义为16位有符号整数时、它将自动将值限制  在-32768到+32767之间 。  如果您自行开发软件来构建表、则应使用16位有符号整数。  如果您熟悉 LabView、则可以下载 EVM 的源代码并使用构建表的部分:  https://www.ti.com/lit/zip/sboc394 
    4. 此处是指向修改后的电子表格的链接。  Excel 文件有两个选项卡。  一个与现有 PGA309用户指南表3-3匹配、一个修改后的表格使用不违反最大允许斜率的增益更改。  我添加了一个错误测试列、以便您可以查看现有表的问题以及新表是否正常。   e2e.ti.com/.../PGA309-TABLE_2D00_good_2D00_vs_2D00_bad.xlsx
    5. 对于这个错误、非常抱歉。  我可以肯定地看到这是多么令人困惑、我 将研究如何对文档进行更改。

    此致、

    艺术